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

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.

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.