Monitorizar com o Uptime Kuma

Numa minha publicação anterior eu falei sobre o Observium, um excelente sistema de monitorização para ter na nossa rede, no entanto, poderá não ser o mais indicado para ter um overview rápido e um sistema de alertas do estado dos nossos serviços.

Monitorizar com o Uptime Kuma

Numa minha publicação anterior eu falei sobre o Observium, um excelente sistema de monitorização para ter na nossa rede, no entanto, poderá não ser o mais indicado para ter um overview rápido e um sistema de alertas do estado dos nossos serviços.

Tenho estado a pesquisar sobre como posso ter um sistema de alertas para quando um dos meus serviços está em baixo e fui dar com o Uptime Kuma, um sistema baseado no Uptime Robot mas self hosted.

Instalação do Uptime Kuma

Mais uma vez, instalei o sistema de monitorização no meu Raspberry PI juntamente com o PI-Hole já anteriormente instalado.

Muito resumidamente, é necessário seguir os passos descritos na documentação.

Um ponto importante aqui, é que é utilizado o pm2 para iniciar o servidor de NodeJS, algo que vai dar bastante jeito para configurar o servidor para iniciar automaticamente durante um restart do Raspberry PI.

Setup do Apache

Como já utilizo o apache 2, foi só uma questão de correr o servidor de NodeJS do Uptime Kuma (como indicado no documentação) e adicionar a configuração necessária no apache 2.

Para isso, segui a documentação encontrada no GitHub Wiki do Uptime Kuma, e criei o ficheiro /etc/apache2/sites-available/002-kuma.conf com a seguinte configuração:

<VirtualHost *:80>
  ServerName kuma.lan
  ServerAlias kuma.lan
  ProxyPass / http://localhost:3001/
  RewriteEngine on
  RewriteCond %{HTTP:Upgrade} websocket [NC]
  RewriteCond %{HTTP:Connection} upgrade [NC]
  RewriteRule ^/?(.*) "ws://localhost:3001/$1" [P,L]
</VirtualHost>

De seguida foi so fazer activar o módulos que me faltavam no apache, fazer restart e activar a nova configuração:

// activar os mods necessários do apache 2
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
sudo a2enmod proxy_wstunnel

// reload and restart just in case
sudo systemctl reload apache2
sudo systemctl restart apache2

// activar a nova configuração para o proxy
sudo a2ensite 002-kuma.conf

DNS local com o PI-Hole

No fim inseri um novo domínio no meu DNS local do Pi-Hole:

Boot inicial

Para aceder bastou abrir o browser e aceder a kuma.lan.

Durante o primeiro acesso é necessário criar um novo utilizador de administração, para isso basta seguir os passos que são apresentados no ecrã.

Agora que já tinha o meu Uptime Kuma a correr, só faltava adicionar os meus serviços. Para isso clica-se no canto superior esquerdo onde diz + Add New Monitor e preencher os campos necessários.

Configuração de exemplo para o meu PI-Hole:

E no final temos um dashboard todo bonito com os nosso serviços:

Executar em caso de restart/shutdown

No caso do Raspberry precisar de um restart ou ser desligado é bom ter o Uptime Kuma a ser automaticamente executado durante o boot.

Como estou a usar o pm2, o processo é muito simples.

É preciso criar um script de startup para o pm2, e para isso corre-se o seguinte comando sem sudo:

pm2 startup

Este comando irá devolver algo idêntico a:

sudo env PATH=$PATH:/home/unitech/.nvm/versions/node/v14.3/bin pm2 startup <distribution> -u <user> --hp <home-path>

Basta copiar e colar a linha no terminal que o script é criado automaticamente.

Agora para guardar a lista de serviços que está actualmente a correr no pm2 como algo necessário a executar durante o boot basta fazer:

pm2 save

E é só, da próxima vez que reiniciarem o Raspberry por qualquer razão que seja, o serviço vai correr automaticamente durante o boot e vai ser possível começar logo a ver qual o estado dos outros serviços.