Gráficos de desempenho usando Nagios na Raspberry Pi Deixe um comentário

No post Monitore a rede local com Nagios e Raspberry Pi vimos como monitorar dispositivos conectados a rede e enviar notificações via e-mail em caso de falha dos mesmos. Nesse post vamos subir um nível e configurar o Nagios para gerar gráficos na Raspberry Pi. Para deixar as coisas mais interessantes, vamos monitorar a temperatura da CPU e GPU das Raspberry Pi’s e gerar belos e úteis gráficos de desempenho. Além do Nagios, utilizaremos os softwares InfluxDB, Nagflux, Grafana e Histou.

Material necessário

Para realizar este projeto, vamos precisar de:

Nos cartões SD é necessário estar gravado o sistema operacional Raspbian, de preferência o Lite. Qualquer dúvida de como isso deve ser feito, você pode consultar este post.

Para começar, precisamos de algum tipo de acesso ao terminal, seja remoto via ssh ou local via teclado. Tudo certo? Então vamos lá!

Monitorar as temperaturas da Raspberry Pi

Para monitorar recursos “locais” (por exemplo, a temperatura da CPU e GPU) de dispositivos remotos (rasp1 e rasp2) o Nagios precisa do NRPE (Nagios Remote Plugin Executor).

Imagem 1 - Monitoramento

O NRPE consiste em duas partes:
• O plugin check_nrpe, no dispositivo de monitoramento (rasp5)
• O daemon NRPE, nos dispositivos remotos (rasp1 e rasp2)

Quando o Nagios precisa monitorar um dispositivo:
• Executa o plugin check_nrpe no dispositivo de monitoramento
• O plugin check_nrpe se comunica com o daemon NRPE no dispositivo remoto
• O daemon NRPE executa o plugin apropriado (por exemplo, check_rpi_temp) para verificar o recurso
• Os resultados da verificação são enviados pelo daemon NRPE de volta para o plugin check_nrpe, que retorna os resultados para o Nagios.

Dispositivos remotos

Vamos começar instalando o daemon NRPE nos dispositivos remotos. A sequência de comandos é a mesma em ambos dispositivos (rasp1 e rasp2).

Pré-requisitos:

apt-get update && apt-get install autoconf gcc libc6 libmcrypt-dev make libssl-dev wget bc gawk dc build-essential snmp libnet-snmp-perl gettext dnsutils -y

Baixar NRPE:

cd /tmp && wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz && tar xvzf nrpe-3.2.1.tar.gz

Compilar:

cd nrpe-3.2.1 && ./configure && make all

Criar usuário e grupo Nagios:

make install-groups-users

Instalar plugin check_nrpe (para teste) e exemplos dos arquivos de configuração:

make install && make install-config

Modificar arquivo /etc/services:

echo '' >> /etc/services
echo '# NRPE service' >> /etc/services
echo 'nrpe    5666/tcp' >> /etc/services

Instalar serviço e configurar para inicializar no boot do sistema:

make install-init && systemctl enable nrpe.service

Modificar arquivo /usr/local/nagios/etc/nrpe.cfg:

ATENÇÃO! Substitua 192.168.0.5 pelo endereço de IP do seu dispositivo de monitoramento (rasp5).

cp -p /usr/local/nagios/etc/nrpe.cfg /usr/local/nagios/etc/nrpe.cfg.default && sed -i 's/^allowed_hosts=127.0.0.1,::1/allowed_hosts=127.0.0.1,192.168.0.5/g' /usr/local/nagios/etc/nrpe.cfg

Iniciar o daemon NRPE:

systemctl start nrpe.service

Verificar se daemon NRPE está sendo executado:

netstat -putan | grep nrpe

O resultado de ser parecido com esse:

tcp        0      0 0.0.0.0:5666            0.0.0.0:*               OUÇA       8083/nrpe           
tcp6      0      0 :::5666                    :::*                        OUÇA       8083/nrpe

Verificar se daemon NRPE está funcionando corretamente:

/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1

O resultado de ver parecido com esse:

NRPE v3.2.1

Como o daemon NRPE requer o Nagios Plugins é preciso instalá-lo.

Baixar Nagios Plugins:

cd /tmp && wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz && tar xvzf nagios-plugins-2.2.1.tar.gz

Compilar e instalar:

cd nagios-plugins-2.2.1 && ./configure && make && make install

O Nagios Plugins instala uma quantidade limitada de plugins no diretório /usr/local/nagios/libexec. Sendo possível ainda criar seus próprios plugins ou baixar do repositório do Nagios, o que faremos com o plugin para monitorar a temperatura da CPU e GPU da Raspberry Pi (check_rpi_temp).

Baixar plugin check_rpi_temp e ajustar permissões:

wget -P /usr/local/nagios/libexec/ https://raw.githubusercontent.com/acch/nagios-plugins/master/check_rpi_temp.sh && chmod 0755 /usr/local/nagios/libexec/check_rpi_temp.sh && usermod -G video nagios

Definir comando a ser executado pelo daemon NRPE.

echo '' >> /usr/local/nagios/etc/nrpe.cfg 
echo 'command[check_rpi_temp]=/usr/local/nagios/libexec/check_rpi_temp.sh' >> /usr/local/nagios/etc/nrpe.cfg

Reiniciar NRPE:

systemctl restart nrpe.service

Testar:

/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_rpi_temp

O resultado de ver parecido com esse:

TEMP OK - CPU temperature: 47.774°C - GPU temperature: 47.8°C | cputemp=47.774;60;70;0; gputemp=47.8;60;70;0;

Concluímos aqui a instalação do daemon NRPE nos dispositivos remotos (rasp1 e rasp2).

Dispositivo de monitoramento

Agora vamos instalar o plugin check_nrpe no dispositivo de monitoramento (rasp5).

Baixar NRPE:

cd /tmp && wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz && tar xvzf nrpe-3.2.1.tar.gz

Compilar:

cd nrpe-3.2.1 && ./configure && make check_nrpe

Instalar plugin check_nrpe:

make install-plugin

Como o dispositivo de monitoramento (rasp5) também terá a temperatura da CPU e GPU monitorada, precisamos baixar o plugin check_rpi_temp.

Baixar plugin check_rpi_temp e ajustar permissões:

wget -P /usr/local/nagios/libexec/ https://raw.githubusercontent.com/acch/nagios-plugins/master/check_rpi_temp.sh && chmod 0755 /usr/local/nagios/libexec/check_rpi_temp.sh && usermod -G video nagios

Definir comandos para usar plugins check_nrpe e check_rpi_temp.

cp -p /usr/local/nagios/etc/objects/commands.cfg /usr/local/nagios/etc/objects/commands.cfg.default &&
echo '' >> /usr/local/nagios/etc/objects/commands.cfg
echo 'define command {' >> /usr/local/nagios/etc/objects/commands.cfg
echo '' >> /usr/local/nagios/etc/objects/commands.cfg
echo '    command_name    check_nrpe' >> /usr/local/nagios/etc/objects/commands.cfg
echo '    command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$' >> /usr/local/nagios/etc/objects/commands.cfg
echo '}' >> /usr/local/nagios/etc/objects/commands.cfg
echo '' >> /usr/local/nagios/etc/objects/commands.cfg
echo 'define command {' >> /usr/local/nagios/etc/objects/commands.cfg
echo '' >> /usr/local/nagios/etc/objects/commands.cfg
echo '    command_name    check_rpi_temp' >> /usr/local/nagios/etc/objects/commands.cfg
echo '    command_line    $USER1$/check_rpi_temp.sh' >> /usr/local/nagios/etc/objects/commands.cfg
echo '}' >> /usr/local/nagios/etc/objects/commands.cfg

Definir serviço para monitorar a temperatura da Raspberry Pi no dispositivo de monitoramento (rasp5).

cp -p /usr/local/nagios/etc/objects/localhost.cfg /usr/local/nagios/etc/objects/localhost.cfg.default &&
echo '' >> /usr/local/nagios/etc/objects/localhost.cfg
echo 'define service {' >> /usr/local/nagios/etc/objects/localhost.cfg
echo '' >> /usr/local/nagios/etc/objects/localhost.cfg
echo '    use                     local-service' >> /usr/local/nagios/etc/objects/localhost.cfg
echo '    host_name               localhost' >> /usr/local/nagios/etc/objects/localhost.cfg
echo '    service_description     Temperatura Raspberry Pi' >> /usr/local/nagios/etc/objects/localhost.cfg
echo '    check_command           check_rpi_temp' >> /usr/local/nagios/etc/objects/localhost.cfg
echo '}' >> /usr/local/nagios/etc/objects/localhost.cfg

Definir serviço para monitorar a temperatura da Raspberry Pi no dispositivo remoto (rasp1).

ATENÇÃO! Substitua rasp1 pelo nome de host do seu dispositivo.

cp -p /usr/local/nagios/etc/servers/rasp1.cfg /usr/local/nagios/etc/servers/rasp1.cfg.default &&
echo '' >> /usr/local/nagios/etc/servers/rasp1.cfg
echo 'define service {' >> /usr/local/nagios/etc/servers/rasp1.cfg
echo '' >> /usr/local/nagios/etc/servers/rasp1.cfg
echo '    use                     local-service' >> /usr/local/nagios/etc/servers/rasp1.cfg
echo '    host_name               rasp1' >> /usr/local/nagios/etc/servers/rasp1.cfg
echo '    service_description     Temperatura Raspberry Pi' >> /usr/local/nagios/etc/servers/rasp1.cfg
echo '    check_command           check_nrpe!check_rpi_temp' >> /usr/local/nagios/etc/servers/rasp1.cfg
echo '}' >> /usr/local/nagios/etc/servers/rasp1.cfg

Definir serviço para monitorar a temperatura da Raspberry Pi no dispositivo remoto (rasp2).

ATENÇÃO! Substituia rasp2 pelo nome de host do seu dispositivo.

cp -p /usr/local/nagios/etc/servers/rasp2.cfg /usr/local/nagios/etc/servers/rasp2.cfg.default &&
echo '' >> /usr/local/nagios/etc/servers/rasp2.cfg
echo 'define service {' >> /usr/local/nagios/etc/servers/rasp2.cfg
echo '' >> /usr/local/nagios/etc/servers/rasp2.cfg
echo '    use                     local-service' >> /usr/local/nagios/etc/servers/rasp2.cfg
echo '    host_name               rasp2' >> /usr/local/nagios/etc/servers/rasp2.cfg
echo '    service_description     Temperatura Raspberry Pi' >> /usr/local/nagios/etc/servers/rasp2.cfg
echo '    check_command           check_nrpe!check_rpi_temp' >> /usr/local/nagios/etc/servers/rasp2.cfg
echo '}' >> /usr/local/nagios/etc/servers/rasp2.cfg

Verificar:

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

E reiniciar o Nagios.

systemctl restart nagios

Agora, basta abrir a interface web do Nagios, clicar em Services e você verá o serviço Temperatura Raspberry Pi sendo monitorado em todos os hosts.

Imagem 2 - Nagios na Raspberry Pi

Até aqui estamos monitorando a temperatura da CPU e GPU das Raspberry Pi’s, as notificações via email serão enviadas como warning para temperaturas acima de 60°C e como critical para temperaturas acima de 70°C.

Gerar gráficos na Raspberry Pi

O Nagios foi projetado para que os plugins (por exemplor, check_rpi_temp) retornem dados de status e opcionalmente dados de desempenho. Embora o Nagios Core (versão usada nesse post) não possua os mecanismos para processar os dados de desempenho, ele permite enviar esses dados para softwares com essa funcionalidade:

InfluxDB, banco de dados usado para armazenar os dados de desempenho

Nagflux, armazena os dados de desempenho do Nagios no InfluxDB

Grafana, permite visualizar os dados de desempenho armazenados no InfluxDB

Histou, complemento do Grafana que cria gráficos na Raspberry Pi especificamente para os dados de desempenho do Nagios.

ATENÇÃO! As configurações a seguir serão executadas exclusivamente no dispositivo de monitoramento (rasp5).

Pré-requisitos:

apt-get update && apt-get install curl apt-transport-https -y

Instalar InfluxDB

Adicionar repositório:

Instalar e configurar para inicializar no boot do sistema:

apt-get update && sudo apt-get install influxdb -y && systemctl unmask influxdb.service && systemctl start influxdb

Instalar Nagflux

Pré-requisitos:

apt-get update && sudo apt-get install influxdb -y && systemctl unmask influxdb.service && systemctl start influxdb

Baixar e compilar:

export GOPATH=$HOME/gorepo && mkdir $GOPATH && go get -v -u github.com/griesbacher/nagflux && go build github.com/griesbacher/nagflux && mkdir -p /opt/nagflux && cp $GOPATH/bin/nagflux /opt/nagflux/ && mkdir -p /usr/local/nagios/var/spool/nagfluxperfdata && chown nagios:nagios /usr/local/nagios/var/spool/nagfluxperfdata

Criar serviço e configurar para inicializar no boot do sistema:

apt-get update && sudo apt-get install influxdb -y && systemctl unmask influxdb.service && systemctl start influxdb

Instalar Grafana

Baixar e instalar:

cd /tmp && wget https://dl.grafana.com/oss/release/grafana_6.4.4_armhf.deb && dpkg -i grafana_6.4.4_armhf.deb

Iniciar serviço e configurar para inicializar no boot do sistema:

systemctl daemon-reload && systemctl enable grafana-server && systemctl start grafana-server

Instalar Histou

Baixar e compilar:

cd /tmp && wget -O histou.tar.gz https://github.com/Griesbacher/histou/archive/v0.4.3.tar.gz && mkdir -p /var/www/html/histou && cd /var/www/html/histou && tar xzf /tmp/histou.tar.gz --strip-components 1 && cp histou.ini.example histou.ini && cp histou.js /usr/share/grafana/public/dashboards/

Configurar Nagflux

Criar arquivo de configuração:

cd /opt/nagflux
printf '[main]\n' > config.gcfg
printf '\tNagiosSpoolfileFolder = "/usr/local/nagios/var/spool/nagfluxperfdata"\n' >> config.gcfg
printf '\tNagiosSpoolfileWorker = 1\n' >> config.gcfg
printf '\tInfluxWorker = 2\n' >> config.gcfg
printf '\tMaxInfluxWorker = 5\n' >> config.gcfg
printf '\tDumpFile = "nagflux.dump"\n' >> config.gcfg
printf '\tNagfluxSpoolfileFolder = "/usr/local/nagios/var/nagflux"\n' >> config.gcfg
printf '\tFieldSeparator = "&"\n' >> config.gcfg
printf '\tBufferSize = 10000\n' >> config.gcfg
printf '\tFileBufferSize = 65536\n' >> config.gcfg
printf '\tDefaultTarget = "all"\n' >> config.gcfg
printf '\n' >> config.gcfg
printf '[Log]\n' >> config.gcfg
printf '\tLogFile = ""\n' >> config.gcfg
printf '\tMinSeverity = "INFO"\n' >> config.gcfg
printf '\n' >> config.gcfg
printf '[InfluxDBGlobal]\n' >> config.gcfg
printf '\tCreateDatabaseIfNotExists = true\n' >> config.gcfg
printf '\tNastyString = ""\n' >> config.gcfg
printf '\tNastyStringToReplace = ""\n' >> config.gcfg
printf '\tHostcheckAlias = "hostcheck"\n' >> config.gcfg
printf '\n' >> config.gcfg
printf '[InfluxDB "nagflux"]\n' >> config.gcfg
printf '\tEnabled = true\n' >> config.gcfg
printf '\tVersion = 1.0\n' >> config.gcfg
printf '\tAddress = "http://127.0.0.1:8086"\n' >> config.gcfg
printf '\tArguments = "precision=ms&u=root&p=root&db=nagflux"\n' >> config.gcfg
printf '\tStopPullingDataIfDown = true\n' >> config.gcfg
printf '\n' >> config.gcfg
printf '[InfluxDB "fast"]\n' >> config.gcfg
printf '\tEnabled = false\n' >> config.gcfg
printf '\tVersion = 1.0\n' >> config.gcfg
printf '\tAddress = "http://127.0.0.1:8086"\n' >> config.gcfg
printf '\tArguments = "precision=ms&u=root&p=root&db=fast"\n' >> config.gcfg
printf '\tStopPullingDataIfDown = false\n' >> config.gcfg

Iniciar serviço:

systemctl start nagflux

Quando o Nagflux inicia pela primeira vez, ele cria o banco de dados nagflux no InfluxDB.

Para verificar:

curl -G "http://localhost:8086/query?pretty=true" --data-urlencode "q=show databases"

O resultado deve ser parecido com esse:

{
"results": [
{
"statement_id": 0,
"series": [
{
"name": "databases",
"columns": [
"name"
],
"values": [
[
"_internal"
],
[
"nagflux"
]
]
}
]
}
]
}

Configurar Nagios

Configurar o Nagios para enviar os dados de desempenho para o InfluxDB usando o Nagflux.

Modificar arquivo /usr/local/nagios/etc/nagios.cfg:

sed -i 's/^process_performance_data=0/process_performance_data=1/g' /usr/local/nagios/etc/nagios.cfg
sed -i 's/^#host_perfdata_file=/host_perfdata_file=/g' /usr/local/nagios/etc/nagios.cfg
sed -i 's/^#host_perfdata_file_template=.*/host_perfdata_file_template=DATATYPE::HOSTPERFDATA\\tTIMET::$TIMET$\\tHOSTNAME::$HOSTNAME$\\tHOSTPERFDATA::$HOSTPERFDATA$\\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$/g' /usr/local/nagios/etc/nagios.cfg
sed -i 's/^#host_perfdata_file_mode=/host_perfdata_file_mode=/g' /usr/local/nagios/etc/nagios.cfg
sed -i 's/^#host_perfdata_file_processing_interval=.*/host_perfdata_file_processing_interval=15/g' /usr/local/nagios/etc/nagios.cfg
sed -i 's/^#host_perfdata_file_processing_command=.*/host_perfdata_file_processing_command=process-host-perfdata-file-nagflux/g' /usr/local/nagios/etc/nagios.cfg
sed -i 's/^#service_perfdata_file=/service_perfdata_file=/g' /usr/local/nagios/etc/nagios.cfg
sed -i 's/^#service_perfdata_file_template=.*/service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\\tTIMET::$TIMET$\\tHOSTNAME::$HOSTNAME$\\tSERVICEDESC::$SERVICEDESC$\\tSERVICEPERFDATA::$SERVICEPERFDATA$\\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$/g' /usr/local/nagios/etc/nagios.cfg
sed -i 's/^#service_perfdata_file_mode=/service_perfdata_file_mode=/g' /usr/local/nagios/etc/nagios.cfg
sed -i 's/^#service_perfdata_file_processing_interval=.*/service_perfdata_file_processing_interval=15/g' /usr/local/nagios/etc/nagios.cfg
sed -i 's/^#service_perfdata_file_processing_command=.*/service_perfdata_file_processing_command=process-service-perfdata-file-nagflux/g' /usr/local/nagios/etc/nagios.cfg

Definir comandos em /usr/local/nagios/etc/objects/commands.cfg:

echo '' >> /usr/local/nagios/etc/objects/commands.cfg
echo 'define command {' >> /usr/local/nagios/etc/objects/commands.cfg
echo '    command_name    process-host-perfdata-file-nagflux' >> /usr/local/nagios/etc/objects/commands.cfg
echo '    command_line    /bin/mv /usr/local/nagios/var/host-perfdata /usr/local/nagios/var/spool/nagfluxperfdata/$TIMET$.perfdata.host' >> /usr/local/nagios/etc/objects/commands.cfg
echo '    }' >> /usr/local/nagios/etc/objects/commands.cfg
echo '' >> /usr/local/nagios/etc/objects/commands.cfg
echo 'define command {' >> /usr/local/nagios/etc/objects/commands.cfg
echo '    command_name    process-service-perfdata-file-nagflux' >> /usr/local/nagios/etc/objects/commands.cfg
echo '    command_line    /bin/mv /usr/local/nagios/var/service-perfdata /usr/local/nagios/var/spool/nagfluxperfdata/$TIMET$.perfdata.service' >> /usr/local/nagios/etc/objects/commands.cfg
echo '    }' >> /usr/local/nagios/etc/objects/commands.cfg
echo '' >> /usr/local/nagios/etc/objects/commands.cfg

Verificar:

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

E reiniciar o Nagios.

systemctl restart nagios

Verificar Nagflux

Verificar se o InfluxDB está sendo preenchido com dados de desempenho do Nagios:

curl -G "http://localhost:8086/query?db=nagflux&pretty=true" --data-urlencode "q=show series"

O resultado deve ser parecido com esse:

{
"results": [
{
"statement_id": 0,
"series": [
{
"columns": [
"key"
],
"values": [
[
"metrics,command=check-host-alive,crit-fill=none,host=localhost,performanceLabel=pl,service=hostcheck,unit=%,warn-fill=none"
],
[
"metrics,command=check-host-alive,crit-fill=none,host=localhost,performanceLabel=rta,service=hostcheck,unit=ms,warn-fill=none"
],
[
"metrics,command=check-host-alive,crit-fill=none,host=rasp1,performanceLabel=pl,service=hostcheck,unit=%,warn-fill=none"
],
[
"metrics,command=check-host-alive,crit-fill=none,host=rasp1,performanceLabel=rta,service=hostcheck,unit=ms,warn-fill=none"
],
[
"metrics,command=check-host-alive,crit-fill=none,host=rasp2,performanceLabel=pl,service=hostcheck,unit=%,warn-fill=none"
],
[
"metrics,command=check-host-alive,crit-fill=none,host=rasp2,performanceLabel=rta,service=hostcheck,unit=ms,warn-fill=none"
],
[
"metrics,command=check_http,host=localhost,performanceLabel=size,service=HTTP,unit=B"
],
[
"metrics,command=check_http,host=localhost,performanceLabel=time,service=HTTP,unit=s"
],
[
"metrics,command=check_local_disk,crit-fill=none,host=localhost,performanceLabel=/,service=Root\\ Partition,unit=MB,warn-fill=none"
],
[
"metrics,command=check_local_load,crit-fill=none,host=localhost,performanceLabel=load1,service=Current\\ Load,warn-fill=none"
],
[
"metrics,command=check_local_load,crit-fill=none,host=localhost,performanceLabel=load15,service=Current\\ Load,warn-fill=none"
],
[
"metrics,command=check_local_load,crit-fill=none,host=localhost,performanceLabel=load5,service=Current\\ Load,warn-fill=none"
],
[
"metrics,command=check_local_procs,crit-fill=none,host=localhost,performanceLabel=procs,service=Total\\ Processes,warn-fill=none"
],
[
"metrics,command=check_local_swap,crit-fill=none,host=localhost,performanceLabel=swap,service=Swap\\ Usage,unit=MB,warn-fill=none"
],
[
"metrics,command=check_local_users,crit-fill=none,host=localhost,performanceLabel=users,service=Current\\ Users,warn-fill=none"
],
[
"metrics,command=check_nrpe,crit-fill=none,host=rasp1,performanceLabel=cputemp,service=Temperatura\\ Raspberry\\ Pi,warn-fill=none"
],
[
"metrics,command=check_nrpe,crit-fill=none,host=rasp1,performanceLabel=gputemp,service=Temperatura\\ Raspberry\\ Pi,warn-fill=none"
],
[
"metrics,command=check_nrpe,crit-fill=none,host=rasp2,performanceLabel=cputemp,service=Temperatura\\ Raspberry\\ Pi,warn-fill=none"
],
[
"metrics,command=check_nrpe,crit-fill=none,host=rasp2,performanceLabel=gputemp,service=Temperatura\\ Raspberry\\ Pi,warn-fill=none"
],
[
"metrics,command=check_ssh,host=localhost,performanceLabel=time,service=SSH,unit=s"
]
]
}
]
}
]
}

Configurar Grafana

Configurar o Grafana para usar o InfluxDB.

Abrir o navegador e digitar a URL abaixo, substituindo 192.168.0.5 pelo endereço IP ou nome – caso tenha um Servidor DNS autoritativo – do seu dispositivo de monitoramento (rasp5).

http://192.168.0.5:3000

Serão solicitados o nome de usuário (admin) e a senha (admin).

Imagem 3 - Grafana na Raspberry Pi

Em seguida é solicitado a alteração da senha.

Imagem 4 - Grafana na Raspberry Pi

No Home Dashboard clicar em Add data source.

Imagem 5 - Dashboard

Selecionar InfluxDB e clicar em Select.

Imagem 6 - InfluxDB

Preencher as seguintes informações:

Name: nagflux

URL: http://localhost:8086

Database: nagflux

Imagem 7 - Nagflux

Clicar em Save & Test.

Imagem 7 - Save and test

Se as configurações estiverem corretas, a mensagem Data source is working será apresentada.

Imagem 8 - Data source is working

Configurar Histou

Modificar arquivo /usr/share/grafana/public/dashboards/histou.js:

ATENÇÃO! Substitua 192.168.0.5 pelo endereço IP ou nome – caso tenha um Servidor DNS autoritativo – do seu dispositivo de monitoramento (rasp5).

sed -i 's/localhost/192.168.0.5/g' /usr/share/grafana/public/dashboards/histou.js

Verificar Histou

O Histou envia os dados a serem visualizados no Grafana.

Para verificar, abrir o navegador e digitar a URL abaixo, substituindo 192.168.0.5 pelo endereço IP ou nome – caso tenha um Servidor DNS autoritativo – do seu dispositivo de monitoramento (rasp5).

http://192.168.0.5:3000/dashboard/script/histou.js?host=localhost&service=Temperatura Raspberry Pi

O resultado deve ser parecido com esse:

Imagem 9 - Gráficos na Raspberry Pi

Integrar Grafana/Histou ao Nagios

Modificar arquivo /usr/local/nagios/etc/objects/templates.cfg:

ATENÇÃO! Substitua 192.168.0.5 pelo endereço IP ou nome – caso tenha um Servidor DNS autoritativo – do seu dispositivo de monitoramento (rasp5).

echo '' >> /usr/local/nagios/etc/objects/templates.cfg
echo 'define host {' >> /usr/local/nagios/etc/objects/templates.cfg
echo '   name       host-grafana' >> /usr/local/nagios/etc/objects/templates.cfg
echo '   action_url http://192.168.0.5:3000/dashboard/script/histou.js?host=$HOSTNAME$' >> /usr/local/nagios/etc/objects/templates.cfg
echo '   register   0' >> /usr/local/nagios/etc/objects/templates.cfg
echo '}' >> /usr/local/nagios/etc/objects/templates.cfg
echo '' >> /usr/local/nagios/etc/objects/templates.cfg
echo 'define service {' >> /usr/local/nagios/etc/objects/templates.cfg
echo '   name       service-grafana' >> /usr/local/nagios/etc/objects/templates.cfg
echo '   action_url http://192.168.0.5:3000/dashboard/script/histou.js?host=$HOSTNAME$&service=$SERVICEDESC$' >> /usr/local/nagios/etc/objects/templates.cfg
echo '   register   0' >> /usr/local/nagios/etc/objects/templates.cfg
echo '}' >> /usr/local/nagios/etc/objects/templates.cfg
echo '' >> /usr/local/nagios/etc/objects/templates.cfg

Modificar arquivo /usr/local/nagios/etc/objects/templates.cfg:

sed -i '/name.*generic-host/a\        use                             host-grafana' /usr/local/nagios/etc/objects/templates.cfg
sed -i '/name.*generic-service/a\        use                             service-grafana' /usr/local/nagios/etc/objects/templates.cfg

Verificar:

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

E reiniciar o Nagios.

systemctl restart nagios

Por fim, abrir a interface web do Nagios, clicar em Services e você verá um ícone de gráfico para todos os hosts e serviços.

Imagem 10 - Nagios na Raspberry Pi

Clicar em um ícone de gráfico abrirá o gráfico na Raspberry Pi de host ou serviço na interface web do Grafana.

Por exemplo:

Serviço Temperatura Raspberry Pi no host rasp1.

Imagem 11 - Gráficos na Raspberry Pi

Serviço Temperatura Raspberry Pi no host rasp2.

Imagem 12 - Gráficos na Raspberry Pi

Gostou do post Gráficos de desempenho na Raspberry Pi com Nagios? Ajude-nos a melhorar o blog comentando abaixo sobre este tutorial.

Até a próxima!

Faça seu comentário

Acesse sua conta e participe