架設自己的監控服務 – Uptime Kuma

前言

作為一個雲端愛好者,擁有相當多的 VPS 也非常正常。但是如果你的伺服器沒有乖乖的加持,他可能有很高的機率會斷線。雖然上述算是個玩笑話,但是我們總得知道伺服器目前是否有在乖乖的運作。所以當伺服器一多,就需要有監控系統來監視這些伺服器還在不在線上。

監控服務通常透過 ICMP 封包或者是 HTTP 要求來判斷伺服器有沒有正常工作,如果你不喜望自己架設這樣的系統,通常我會向人推薦 UptimeRobot,但也代表這篇文章你看到這就好了。XD

本文介紹的這套名叫 Uptime Kuma,是一個可以自架的開源監控服務。

安裝主程式

我們必須先在 Linux 上安裝必須的功能,如:nodejsnpmgit 這些。

sudo apt-get -y update && sudo apt-get install -y nodejs npm git

安裝 pm2

sudo npm install pm2 -g && sudo pm2 install pm2-logrotate

建立一個存放 Uptime Kuma 的資料夾,這裡我就將它建立於 /var 底下,資料夾名稱為 uptime

sudo mkdir -p /var/uptime && cd /var/uptime

使用 git 將 Uptime Kuma clone 進來。

sudo git clone https://github.com/louislam/uptime-kuma.git .

使用以下命令進行初始設定。

sudo npm run setup

啟動 Uptime Kuma 服務,並在背景執行。

sudo pm2 start server/server.js --name uptime-kuma

如果你希望開機時就啟動 Uptime Kuma,則使用以下命令。

sudo pm2 save && sudo pm2 startup

反向代理伺服器

如果我們想要瀏覽 Uptime Kuma 的網頁,最好將他放在反向代理伺服器後方,這也可以讓我們有更多的設定空間。這裡將使用 Nginx 作為反向代理伺服器。

sudo apt-get install -y nginx nginx-extras

前往 /etc/nginx/sites-enabled/ 並新增一個檔案 uptime

cd /etc/nginx/sites-enabled/ && sudo vim uptime

請參考以下內容,更換你的網域,並貼上在該檔案上。

server  {
    listen 80;
    listen [::]:80;
    server_name    www.example.com;
    server_tokens off;
    more_set_headers Server;
    location / {
        proxy_pass         http://localhost:3001;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection "upgrade";
        proxy_set_header   Host $host;
    }
}

接著使用 sudo nginx -t 來確定配置是否有問題。再使用 sudo systemctl restart nginx 重啟 Nginx 即可。

開始使用

打開瀏覽器,前往剛剛設定的網域,你會直接看到 Uptime Kuma 要求你設定管理員帳號。

001.jpg

在設定 → 通知底下,我們可以設定通知。當伺服器下線時,他就會透過如 Discord、Telegram 發送訊息給你。

002.jpg

在新增監視器的右方,可以勾選要通知的地方,例如我剛剛設定了一個 Discord 通知。

003.jpg

在服務發生異常時,他就會發送通知給你。

004.jpg

結語

這就是架設 Uptime Kuma 的過程啦!在我的環境中,其實 UptimeRobot 及 Uptime Kuma 都有使用到。UptimeRobot 我主要用在公網能訪問到的服務;而 Uptime Kuma 我通常在內網使用。你也可以不用跟我一樣,他們都可以使用在任何地方,就看你的需求而已!