Instalación y integración de Grafana con NAGIOS

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
EOF

Instalamos 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 git

Descargamos 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.service

Instalació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 grafana

levantamos el servicio y lo configuramos para que arranque al inicio

systemctl enable grafana-server.service
systemctl start grafana-server.service

Habilitamos el puerto de grafana en el firewall

firewall-cmd --zone=public --add-port=3000/tcp
firewall-cmd --zone=public --add-port=3000/tcp --permanent

Instalar 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-nagflux

Tambié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.service

Comprobamos 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 

image.png

Seleccionamos la opción de InfluxDB

image.png

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

image.png

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.

One thought on “Instalación y integración de Grafana con NAGIOS

  1. Buenas tardes, me quede en la ultima parte para configurar grafana:
    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
    image.png

    Seleccionamos la opción de InfluxDB
    image.png

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

    pero no veo el contenido de las imagenes.

    Muchas Gracias por tu post

    Saludos

Responder a roger Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*