Inicio Linux & Systems Networks & Infrastructure Cybersecurity Cloud & DevOps SIEM & Monitoring DFIR & Threat Intel Development & Other Todas las categorias Herramientas

Instalación y integración de Grafana con NAGIOS

Instalación y integración de Grafana con NAGIOS

Tabla de contenidos

En esta entrada veremos como instalar e integrar grafana con nagios, para ello emplearemos influxdb, nagflux, histou y grafana.

Instalación de influxdb

CODE
Agregamos los repositorios de la distribución correspondiente: 


BASH
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

BASH
sudo yum install influxdb
sudo systemctl enable influxdb
sudo systemctl start influxdb 

Instalación de Nagflux

Instalamos las dependencias necesarios

BASH
yum -y install go git

Descargamos e instalamos Nagflux

BASH
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:

CODE
[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

BASH
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

BASH
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

BASH
yum -y install grafana

levantamos el servicio y lo configuramos para que arranque al inicio

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

Habilitamos el puerto de grafana en el firewall

JAVA
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

BASH
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

BASH
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

CODE
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 

CODE
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

CODE
systemctl restart nagios.service

Comprobamos el perfecto funcionamiento de nagflux

BASH
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

PHP
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

PHP
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.

Instalación y integración de Grafana con NAGIOS
Instalación y integración de Grafana con NAGIOS

Comentarios