Install Nemon with Influxdb storage
Page content
I prefer to use Naemon (a fork of nagos) with Influxdb as a storage for graphical data.
Install Naemon
yum install epel-release nano -y
yum install httpd php php-gd -y
rpm -Uvh "https://labs.consol.de/repo/stable/rhel7/x86_64/labs-consol-stable.rhel7.noarch.rpm"
yum install naemon* -y
yum install nagios-plugins nagios-plugins-all nagios-plugins-nrpe nrpe -y
nano /etc/php.ini
date.timezone = Europe/Budapest
systemctl enable httpd
systemctl enable naemon
systemctl start httpd
systemctl start naemon
htpasswd /etc/thruk/htpasswd thrukadmin
# http://SERVER-IP/naemon
Install Infludxb
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
yum install influxdb -y
nano /etc/influxdb/influxdb.conf
[http]
enabled = true
bind-address = "localhost:8086"
auth-enabled = false
systemctl start influxdb
systemctl enable influxdb
Configurate Naemon
sed -i "s@^process_performance_data=0@#process_performance_data=0@" /etc/naemon/naemon.cfg
# config nagios
nano /etc/naemon/module-conf.d/nagios_nagflux.cfg
process_performance_data=1
host_perfdata_file=/var/naemon/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=/var/naemon/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
chown naemon:naemon /etc/naemon/module-conf.d/nagios_nagflux.cfg
nano /etc/naemon/conf.d/histou.cfg
define command {
command_name process-host-perfdata-file-nagflux
command_line /bin/mv /var/naemon/host-perfdata /var/nagflux/perfdata/$TIMET$.perfdata.host
}
define command {
command_name process-service-perfdata-file-nagflux
command_line /bin/mv /var/naemon/service-perfdata /var/nagflux/perfdata/$TIMET$.perfdata.service
}
define host {
name host-grafana
action_url http://192.168.10.112/grafana/dashboard/script/histou.js?host=$HOSTNAME$&theme=light&annotations=true
notes_url http://192.168.10.112/dokuwiki/doku.php?id=inventory:$HOSTNAME$
register 0
}
define service {
name service-grafana
action_url http://192.168.10.112/grafana/dashboard/script/histou.js?host=$HOSTNAME$&service=$SERVICEDESC$&theme=light&annotations=true
register 0
}
mkdir /var/naemon/
chown -R naemon:naemon /var/naemon/
cd /etc/thruk/ssi/
cp extinfo-header.ssi.example extinfo-header.ssi
cp status-header.ssi.example status-header.ssi
systemctl restart naemon
ll /var/naemon/
ll /var/nagflux/perfdata/
Install nagflux
cd /usr/bin/
wget https://github.com/Griesbacher/nagflux/releases/download/v0.4.1/nagflux
chmod +x nagflux
mkdir -p /var/nagflux/perfdata
mkdir -p /var/nagflux/spool
chown -R naemon:apache /var/nagflux
mkdir /etc/nagflux
cat <<EOF | sudo tee /etc/nagflux/config.gcfg
[main]
NagiosSpoolfileFolder = "/var/nagflux/perfdata"
NagiosSpoolfileWorker = 1
InfluxWorker = 2
MaxInfluxWorker = 5
DumpFile = "/var/log/nagflux/nagflux.dump"
NagfluxSpoolfileFolder = "/var/nagflux/spool"
FieldSeparator = "&"
BufferSize = 1000
FileBufferSize = 65536
DefaultTarget = "Influxdb"
[Log]
LogFile = "/var/log/nagflux/nagflux.log"
MinSeverity = "INFO"
[InfluxDBGlobal]
CreateDatabaseIfNotExists = true
NastyString = ""
NastyStringToReplace = ""
HostcheckAlias = "hostcheck"
[InfluxDB "nagflux"]
Enabled = true
Version = 1.0
Address = "http://localhost:8086"
Arguments = "precision=ms&db=nagflux&u=admin&p=Password1"
StopPullingDataIfDown = true
[Livestatus]
#tcp or file
Type = "file"
#tcp: 127.0.0.1:6557 or file /var/run/live
Address = "/var/cache/naemon/live"
MinutesToWait = 3
Version = ""
EOF
mkdir /var/log/nagflux
mkdir /var/nagflux
cat <<EOF | sudo tee /etc/systemd/system/nagflux.service
[Unit]
Description=A connector which transforms performancedata from Nagios/Icinga(2)/Naemon to InfluxDB/Elasticsearch
Documentation=https://github.com/Griesbacher/nagflux
After=network-online.target
[Service]
User=root
Group=root
ExecStart=/usr/bin/nagflux -configPath /etc/nagflux/config.gcfg
Restart=on-failure
[Install]
WantedBy=multi-user.target
Alias=nagflux.service
EOF
systemctl daemon-reload
systemctl start nagflux
systemctl enable nagflux
tailf /var/log/nagflux/nagflux.log
Install grafana
curl -s https://packagecloud.io/install/repositories/grafana/stable/script.rpm.sh | sudo bash
yum install grafana -y
cp /etc/grafana/grafana.ini /etc/grafana/grafana.ini.bak
echo "" > /etc/grafana/grafana.ini
nano /etc/grafana/grafana.ini
[paths]
logs = /var/log/grafana
[log]
mode = file
[log.file]
level = Info
daily_rotate = true
[server]
http_port = 3000
http_addr = 0.0.0.0
domain = localhost
root_url = %(protocol)s://%(domain)s/grafana/
enable_gzip = false
[snapshots]
external_enabled = false
[security]
disable_gravatar = true
# same username and password for thruk
admin_user = thrukadmin
admin_password = Password1
[users]
allow_sign_up = false
default_theme = light
[auth.basic]
enabled = false
[auth.proxy]
enabled = true
auto_sign_up = true
[alerting]
enabled = true
execute_alerts = true
nano /etc/httpd/conf.d/grafana.conf
<IfModule !mod_proxy.c>
LoadModule proxy_module /usr/lib64/httpd/modules/mod_proxy.so
</IfModule>
<IfModule !mod_proxy_http.c>
LoadModule proxy_http_module /usr/lib64/httpd/modules/mod_proxy_http.so
</IfModule>
<Location /grafana>
ProxyPass http://127.0.0.1:3000 retry=0 disablereuse=On
ProxyPassReverse http://127.0.0.1:3000/grafana
RewriteEngine On
RewriteRule .* - [E=PROXY_USER:%{LA-U:REMOTE_USER},NS]
SetEnvIf Request_Protocol ^HTTPS.* IS_HTTPS=1
SetEnvIf Authorization "^.+$" IS_BASIC_AUTH=1
# without thruk cookie auth, use the proxy user from the rewrite rule above
RequestHeader set X-WEBAUTH-USER "%{PROXY_USER}s" env=IS_HTTPS
RequestHeader set X-WEBAUTH-USER "%{PROXY_USER}e" env=!IS_HTTPS
# when thruk cookie auth is used, fallback to remote user directly
RequestHeader set X-WEBAUTH-USER "%{REMOTE_USER}e" env=!IS_BASIC_AUTH
RequestHeader unset Authorization
</Location>
echo "
apiVersion: 1
deleteDatasources:
- name: nagflux
datasources:
- name: nagflux
type: influxdb
url: http://localhost:8086
access: proxy
database: nagflux
isDefault: true
version: 1
editable: true
" > /etc/grafana/provisioning/datasources/nagflux.yaml
systemctl start grafana-server
systemctl enable grafana-server
systemctl restart httpd
# http://SERVER-IP:3000
# admin/admin
# datasource:
nagflux
influxdb
http://localhost:8086
Install 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/
nano /usr/share/grafana/public/dashboards/histou.js
var url = 'http://192.168.10.112/histou/';
systemctl restart httpd
systemctl restart grafana-server
# http://192.168.10.112/histou/?host=localhost&service=PING
# http://192.168.10.112:3000/dashboard/script/histou.js?host=localhost&service=PING
# nagios config
sed -i '/name.*generic-host/a\ use host-grafana' /etc/naemon/conf.d/templates/hosts.cfg
sed -i '/name.*generic-service/a\ use service-grafana' /etc/naemon/conf.d/templates/services.cfg
systemctl restart naemon
Inpluxdb commands
influx
create database nagflux;
CREATE USER "admin" WITH PASSWORD 'Password1' WITH ALL PRIVILEGES;
show DATABASES;
USE nagflux;
select * from /.*/ limit 1;