En esta entrada veremos como instalar e integrar grafana con nagios, para ello emplearemos influxdb, nagflux, histou y grafana.
Instalación de influxdb
Agregamos los repositorios de la distribución correspondiente:
cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOFInstalamos y lo configuramos para que arranque al inicio
sudo yum install influxdb
sudo systemctl enable influxdb
sudo systemctl start influxdb Instalación de Nagflux
Instalamos las dependencias necesarios
yum -y install go gitDescargamos e instalamos Nagflux
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
Configuramos nagflux, para ello debemos agregar en /opt/nagflux/config.gcfg el siguiente contenido:
[main]
NagiosSpoolfileFolder = "/usr/local/nagios/var/spool/nagfluxperfdata"
NagiosSpoolfileWorker = 1
InfluxWorker = 2
MaxInfluxWorker = 5
DumpFile = "nagflux.dump"
NagfluxSpoolfileFolder = "/usr/local/nagios/var/nagflux"
FieldSeparator = "&"
BufferSize = 10000
FileBufferSize = 65536
DefaultTarget = "all"
[Log]
LogFile = ""
MinSeverity = "INFO"
[InfluxDBGlobal]
CreateDatabaseIfNotExists = true
NastyString = ""
NastyStringToReplace = ""
HostcheckAlias = "hostcheck"
[InfluxDB "nagflux"]
Enabled = true
Version = 1.0
Address = "http://127.0.0.1:8086"
Arguments = "precision=ms&u=root&p=root&db=nagflux"
StopPullingDataIfDown = true
[InfluxDB "fast"]
Enabled = false
Version = 1.0
Address = "http://127.0.0.1:8086"
Arguments = "precision=ms&u=root&p=root&db=fast"
StopPullingDataIfDown = false
levantamos el servicio y lo configuramos para que arranque al inicio
cp $GOPATH/src/github.com/griesbacher/nagflux/nagflux.service /usr/lib/systemd/system/
chmod +x /usr/lib/systemd/system/nagflux.service
systemctl daemon-reload
systemctl enable nagflux.service
systemctl start nagflux.serviceInstalación de Grafana
Agregamos el repositorio correspondiente
cat <<EOF | sudo tee /etc/yum.repos.d/grafana.repo
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
EOF
Instalamos grafana
yum -y install grafanalevantamos el servicio y lo configuramos para que arranque al inicio
systemctl enable grafana-server.service
systemctl start grafana-server.serviceHabilitamos el puerto de grafana en el firewall
firewall-cmd --zone=public --add-port=3000/tcp
firewall-cmd --zone=public --add-port=3000/tcp --permanentInstalar Histou
Descargamos y descomprimimos los archivos de configuración de Histou
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/
Configuramos Histou, para ello debemos modificar el localhost por el FQDN del servidor
sed -i 's/localhost/NOMBRE-SERVIDOR/g' /usr/share/grafana/public/dashboards/histou.js
Configuración NAGIOS
Debemos agregar la siguiente configuración en /usr/local/nagios/etc/nagios.cfg
host_perfdata_file=/usr/local/nagios/var/host-perfdata
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$
host_perfdata_file_mode=a
host_perfdata_file_processing_interval=15
host_perfdata_file_processing_command=process-host-perfdata-file-nagflux
service_perfdata_file=/usr/local/nagios/var/service-perfdata
service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=15
service_perfdata_file_processing_command=process-service-perfdata-file-nagfluxTambién debemos agregar los siguientes comandos en /usr/local/nagios/etc/objects/commands.cfg
define command {
command_name process-host-perfdata-file-nagflux
command_line /bin/mv /usr/local/nagios/var/host-perfdata /usr/local/nagios/var/spool/nagfluxperfdata/$TIMET$.perfdata.host
}
define command {
command_name process-service-perfdata-file-nagflux
command_line /bin/mv /usr/local/nagios/var/service-perfdata /usr/local/nagios/var/spool/nagfluxperfdata/$TIMET$.perfdata.service
}
Una vez realizada la configuración reiniciamos el servicio de nagios
systemctl restart nagios.serviceComprobamos el perfecto funcionamiento de nagflux
curl -G "http://localhost:8086/query?db=nagflux&pretty=true" --data-urlencode "q=show series"Configuración Grafana
Accedemos a nuestro servidor grafana por el puerto 3000 (http://IP_ADDRESS:3000/login ) y las credenciales admin:admin, la primera vez que nos conectamos nos pedirá que cambiemos la contraseña.
Una vez conectados presionamos sobre Add data source

Seleccionamos la opción de InfluxDB

Configuramos el acceso a la base de datos de la siguiente forma:

Una vez realizado toda la configuración solo nos queda definir los chequeos dentro de nuestro nagios
Chequeo para hosts
define host {
use redorbita-host
host_name redorbitaweb01
alias redorbitaweb01
address 192.168.1.111
action_url http://192.168.1.112:3000/dashboard/script/histou.js?host=$HOSTNAME$
}Chequeo para servicios
define service {
use redorbita-serv
host_name redorbitaweb01
service_description Port 22/tcp
check_command check_tcp!22
action_url http://192.168.1.112:3000/dashboard/script/histou.js?host=$HOSTNAME$&service=$SERVICEDESC$
}Una vez configurado todo nos deberían aparecer el LINK con las gráficas y se presionamos sobre el servicio debería aparecer en la parte inferior completamente integrada la gráfica de dicho servicio.


Comentarios