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:
- Raspberry Pi 3 Modelo B+
- Cartão SD
- Fonte 5 V
- Ter concluído o post Monitore a rede local com Nagios e Raspberry Pi.
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).
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.
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).
Em seguida é solicitado a alteração da senha.
No Home Dashboard clicar em Add data source.
Selecionar InfluxDB e clicar em Select.
Preencher as seguintes informações:
Name: nagflux
URL: http://localhost:8086
Database: nagflux
Clicar em Save & Test.
Se as configurações estiverem corretas, a mensagem Data source is working será apresentada.
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:
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.
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.
Serviço Temperatura Raspberry Pi no host rasp2.
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!