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](/content/images/size/w2000/2022/05/screenshot-from-2022-02-02-16-14-21-1.webp)
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:
![](https://blog.jejay.me/content/images/2022/05/Screenshot-from-2022-02-02-16-10-42.png)
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:
![](https://blog.jejay.me/content/images/2022/05/screenshot-from-2022-02-02-16-19-14.png)
E no final temos um dashboard todo bonito com os nosso serviços:
![](https://blog.jejay.me/content/images/2022/05/screenshot-from-2022-02-02-16-14-21.webp)
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.