Observium RPi3
Ter os nossos próprios serviços é giro e tal mas eles também precisam de manutenção e monitorização.
![Observium RPi3](/content/images/size/w2000/2022/05/screenshot-from-2022-01-22-02-01-37.webp)
Ter os nossos próprios serviços é giro e tal mas eles também precisam de manutenção e monitorização.
Tenho estado a investigar como é que posso fazer alguma monitorização da minha rede sem ter muito trabalho a fazer setup de alertas e configurações etc etc…
Posto isto, encontrei o Observium que utiliza o protocolo SNMP e meti a correr no meu RPi3.
Deixo aqui o link para a demo page to Observium: https://demo.observium.org/
O que é o SNMP?
O protocolo SNMP é já bastante antigo (1988 de acordo com o site influxdata), e foi criado com o intuito de fornecer um padrão para transferência de dados de gestão de dispositivos. Este protocolo é normalmente utilizado por routers, computadores, servidores, estações de trabalho, impressoras, racks modernos, switches, etc…
Tweaks
O Observium requer uma base de dados MySQL/MariaDB e usa por default o apache2, como tenho o Pi-hole e o PIVPN a correrem no mesmo RPi tive de fazer alguns tweaks.
HDD externo
Em primeiro lugar, o Observium funciona como um agregador de dados dos vários dispositivos da rede, assim sendo, te-lo a correr num cartão de memória pode desgastar o cartão muito rapidamente.
A minha solução foi ligar um HDD externo e passar a base de dados utilizada pelo Observium para lá.
Em primeiro lugar, paramos o MySQL e copiamos a base de dados para o HDD externo:
sudo /etc/init.d/mysql stop
sudo mv /var/lib/mysql/[DATABASENAME] /full/path/to/new/db/.
Seguidamente, criamos um soft link para o local original da base de dados e iniciamos o mysql novamente:
sudo ln -s /full/path/to/new/db/[DATABASENAME] /var/lib/mysql/[DATABASENAME]
sudo /etc/init.d/mysql start
Utilização do CPU
Outro problema foi a utilização do CPU, como o Observium funciona à base de crons, e faz vários requests aos nossos dispositivos por vezes ele fica muito pesado durante o tratamento de dados, e pode abrandar bastante o Pi-hole que tenho instalado no mesmo RPi.
E com alguns ajustes na configuração consegui resolver o meu problema. Existem 3 campos principais que podem ajudar a reduzir o workload criado pelo Observium.
![](https://blog.jejay.me/content/images/2022/05/screenshot-from-2022-01-22-01-34-29.webp)
Threads count
O meu RPi3 é um QuadCore e por default o Observium define um total de 8 threads (CPU core x 2) para tratar os dados, eu reduzi este valor para 6 threads e reparei que tive um grande aumento de performance.
Maximum allowed wrapper processes
Aqui foi um bocado de trial and error, para mim um valor de 2 pareceu-me funcionar bem.
Maximum allowed Load Average
Este parâmetro faz com que se existir algo a correr no RPi que utilize muito CPU, o Observium vai esperar mais um pouco para fazer o seu pedido e tratamento de dados. Isto vai ajudar a dar prioridade ao meu Pi-hole.