Nagios、InfluxDB、Grafana 配合使用,打造新一代展示

  • A+

开源展示Grafana 有着炫酷的界面,很受年轻人的喜爱,本文就来说说,怎么把Nagios的数据使用Grafana 展示出来,如下图片来之官网,本文实在Centos7上进行操作

010318 0232 NagiosInflu1 - Nagios、InfluxDB、Grafana 配合使用,打造新一代展示

 
 

010318 0232 NagiosInflu2 - Nagios、InfluxDB、Grafana 配合使用,打造新一代展示

 
 

 
 

1、准备工作

Ⅰ、安装Nagios这个不多说不会的话,参考博客专门的安装步骤

https://www.opskb.com/ITHelp/663.html

Ⅱ、下载相关的软件,这里需要3

Grafana 、这个不多说,我们的展示工具,可以在不同的系统上进行安装,根据需求进行下载 https://grafana.com/grafana/download?platform

InfluxDB 、这个是数据库,已时间序列来保存数据,是最适合这种监控的数据保存,https://portal.influxdata.com/downloads

Nagflux
这个是把监控数据写入到InfluxDB 数据库的插件

https://github.com/Griesbacher/nagflux

 
 

 
 

2、安装软件

由于我这里就一台服务器,所有的软件都部署在Nagios服务器上

Ⅰ、Grafana 安装

根据官方提示,使用RPM包进行安装,安装包有40M大小

[root@mail opt]#wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.3-1.x86_64.rpm

[root@mail opt]#yum localinstall grafana-4.6.3-1.x86_64.rpm

 
 

010318 0232 NagiosInflu3 - Nagios、InfluxDB、Grafana 配合使用,打造新一代展示

 
 

Ⅱ、InfluxDB 安装,也很简单根据官方说明进行,20M左右,不依赖其他组件

[root@mail opt]#wget https://dl.influxdata.com/influxdb/releases/influxdb-1.4.2.x86_64.rpm
[root@mail opt]#yum localinstall influxdb-1.4.2.x86_64.rpm

 
 

010318 0232 NagiosInflu4 - Nagios、InfluxDB、Grafana 配合使用,打造新一代展示

 
 

 
 

Ⅲ、Nagflux 安装,这个就没有RPM进行安装,直接下载允许程序,放到我们指定的文件夹下

[root@mail opt]# mkdir /usr/local/nagflux

[root@mail opt]# cd /usr/local/nagflux/

[root@mail nagflux]# wget https://github.com/Griesbacher/nagflux/releases/download/v0.4.1/nagflux

[root@mail nagflux]# chmod +x nagflux //添加可执行权限

 
 

3、配置软件

Ⅰ,配置Nagios把性能文件写入到指定的位置(这一步操作比较复杂,修该的内容比较多)

[root@mail nagflux]# pwd

/usr/local/nagflux

[root@mail nagflux]# mkdir nagfluxperfdata //创建目录用于保存Nagios性能数据

[root@mail nagflux]# chown nagios:nagios nagfluxperfdata/ //让Nagios有操作权限

//创建一个脚本来拷贝Nagios主机性能数据,这里这么做是为了以后好扩展,如果我们还需要使用pnp4nagios,就可以在这个脚本中把数据复制一份。

[root@mail nagflux]# vim /usr/local/nagios/libexec/process-host-perfdata-file-bulk

#!/bin/bash

/bin/mv /usr/local/nagios/var/host-perfdata /usr/local/nagflux/nagfluxperfdata/${1}.perfdata.host

 
 

//在创建一个copy服务性能数据的脚本

[root@mail nagflux]# vim /usr/local/nagios/libexec/process-service-perfdata-file-bulk

 
 

#!/bin/bash

/bin/mv /usr/local/nagios/var/service-perfdata /usr/local/nagflux/nagfluxperfdata/${1}.perfdata.service

 
 

修该脚本的权限

[root@mail nagflux]# chown nagios:nagios /usr/local/nagios/libexec/process-host-perfdata-file-bulk

[root@mail nagflux]# chmod +x /usr/local/nagios/libexec/process-host-perfdata-file-bulk

[root@mail nagflux]# chown nagios:nagios /usr/local/nagios/libexec/process-service-perfdata-file-bulk

[root@mail nagflux]# chmod +x /usr/local/nagios/libexec/process-service-perfdata-file-bulk

 
 

修该Nagios配置文件,把性能数据保存在文件中

[root@mail nagflux]# vim /usr/local/nagios/etc/nagios.cfg

#启用性能数据

process_performance_data=1

#性能数据保存位置

host_perfdata_file=/usr/local/nagios/var/host-perfdata

service_perfdata_file=/usr/local/nagios/var/service-perfdata

#数据日志保存格式,这里不是默认的注意

host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$

 
 

service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$

 
 

#文件写入模式这里追加写入

host_perfdata_file_mode=a

service_perfdata_file_mode=a

 
 

#设定文件多长时间处理一次,如服务器压力大,时间就延长,单位秒

host_perfdata_file_processing_interval=15

service_perfdata_file_processing_interval=15

 
 

#文件处理命令,注意了这个名字不是我们创建的脚本名,虽然名字上看起来一样,这个需要在nagios的Command文件中定义

host_perfdata_file_processing_command=process-host-perfdata-file-bulk

service_perfdata_file_processing_command=process-service-perfdata-file-bulk

 
 

Nagios主配置文件就配置完成了,我们可以保存,下面来增加上面最后使用的两条命令

[root@mail nagflux]# vim /usr/local/nagios/etc/objects/commands.cfg

 
 

#添加两个命令,在文件最后面添加吧,以便添加错误了

# 'process-host-perfdata-file-bulk' command definition

define command{

command_name process-host-perfdata-file-bulk

command_line $USER1$/process-host-perfdata-file-bulk $TIMET$

}

 
 

# 'process-service-perfdata-file-bulk' command definition

define command{

command_name process-service-perfdata-file-bulk

command_line $USER1$/process-service-perfdata-file-bulk $TIMET$

}

010318 0232 NagiosInflu5 - Nagios、InfluxDB、Grafana 配合使用,打造新一代展示

 
 

重启Nagios进程

[root@mail nagflux]# systemctl restart nagios

 
 

稍等一分钟确认我们的目录下面是否有数据,有就OK,继续下一步,没有回头验证那一步错误了,说明我这里看到有空文件,是因为我没有添加监控,就一个默认监控,空文件不会影响使用,可以加大文件处理的频率。

[root@mail nagflux]# ll /usr/local/nagflux/nagfluxperfdata/

010318 0232 NagiosInflu6 - Nagios、InfluxDB、Grafana 配合使用,打造新一代展示

 
 

 
 

Ⅱ、InfluxDB配置和启动

默认我们不需要去配置他,就可以运行,如果你在生产上使用,可能你的数据需要放在可靠的数据盘上,这里你可以修该数据存储路径,认证信息

配置文件 [root@mail influxdb]# vim /etc/influxdb/influxdb.conf

 
 

[meta]

#存放数据库元数据

dir = "/var/lib/influxdb/meta"

[data]

#存放最终存储的数据,文件以.tsm结尾

dir = "/var/lib/influxdb/data"

#存放预写日志文件

wal-dir = "/var/lib/influxdb/wal"

启用influxdb

[root@mail influxdb]# systemctl start influxd

 
 

使用客户端进行验证

使用自带的客户端工具连接到数据库

[root@mail influxdb]# influx

查看现有数据库

> show DATABASES;

#创建一个管理账户

> CREATE USER "admin" WITH PASSWORD '********' WITH ALL PRIVILEGES

010318 0232 NagiosInflu7 - Nagios、InfluxDB、Grafana 配合使用,打造新一代展示

 
 

再次修该配置文件,启用登陆认证,记住得先创建管理员账号。在修该这一步

[http]

enabled = true

bind-address = ":8086"

auth-enabled = true

 
 

重启数据库服务,进行登陆验证,数据库就搞定!

 
 

[root@mail log]# influx -username 'admin' -password '*******'

 
 

Ⅲ、配置nagflux,把导出来的Nagios性能数据写入到influxdb中

#进入到我们的安装目录中

[root@mail influxdb]# cd /usr/local/nagflux

#创建目录存储nagflux临时缓存文件

[root@mail nagflux]# mkdir Spool

#创建存储日志的目录

[root@mail nagflux]# mkdir log

#创建配置文件,按照我的方法安装的默认是没有这个文件。

[root@mail nagflux]# vim config.gcfg

 
 

#主文件处理配置

[main]

#Nagios性能数据的位置,这里是我们脚本拷贝过来的目录

NagiosSpoolfileFolder = "/usr/local/nagflux/nagfluxperfdata"

NagiosSpoolfileWorker = 1

InfluxWorker = 2

MaxInfluxWorker = 5

#文件位置随便指定一个

DumpFile = "/usr/local/nagflux/nagflux.dump"

#这个是nagflux临时处理暂存目录

NagfluxSpoolfileFolder = "/usr/local/nagflux/Spool"

FieldSeparator = "&"

BufferSize = 1000

FileBufferSize = 65536

#保存目标我们使用Influxdb

DefaultTarget = "Influxdb"

#日志保存设置

[Log]

LogFile = "/usr/local/nagflux/log/nagflux.log"

MinSeverity = "INFO"

 
 

#ubfluxdb全局设置,主要是允许创建数据库

[InfluxDBGlobal]

CreateDatabaseIfNotExists = true

NastyString = ""

NastyStringToReplace = ""

HostcheckAlias = "hostcheck"

 
 

#指定数据库,NagiosPerfdata这里就是数据库名称,会自动创建的

[InfluxDB "NagiosPerfdata"]

Enabled = true

Version = 1.4.2

#influxdb的API接口地址,默认是8086端口

Address = "http://127.0.0.1:8086"

#这里指定用户名密码,必须有管理员权限

Arguments = "precision=ms&u=admin&p=**********&db=NagiosPerfdata"

StopPullingDataIfDown = true

#这里配置这个主要是排除日志中一直报的错误,如果没有livestatus,没有用途

[Livestatus]

Type = "tcp"

Version = "Icinga2"

 
 

#修该完成后手动启动测试,这个时候会一直停留在这里

[root@mail nagflux]# ./nagflux

 
 

我们另启动一个shell窗口登陆数据库进行数据查询。

[root@mail ~]# influx -username 'admin' -password '*******'

#查看数据库是否被创建

> show databases;

#切换到数据库

> use NagiosPerfdata

#查看是否有数据,如果数据比较多,使用limit进行现在

> select * from /.*/ limit 5

 
 

010318 0232 NagiosInflu8 - Nagios、InfluxDB、Grafana 配合使用,打造新一代展示

如果不是这个效果,等待一两分钟,还是没数据的话,往上翻翻,确认错误

返回刚才的窗口ctrl + c 结束运行

把nagflux做成系统服务进行管理,这里是centos\redhat 7上进行添加使用systemd

[root@mail ~]# cd /usr/lib/systemd/system/

[root@mail system]# vim nagflux.service

[Unit]

Description= Nagios per data insert Influx db

Documentation=https://github.com/Griesbacher/nagflux

After=network-online.target

 
 

[Service]

User=root

Group=root

ExecStart=/usr/local/nagflux/nagflux -configPath /usr/local/nagflux/config.gcfg

Restart=on-failure

 
 

[Install]

WantedBy=multi-user.target

Alias=nagflux.service

 
 

把服务注册到开机启动中

[root@mail system]# systemctl enable nagflux.service

[root@mail system]# systemctl start nagflux.service

[root@mail system]# systemctl status nagflux.service

 
 

010318 0232 NagiosInflu9 - Nagios、InfluxDB、Grafana 配合使用,打造新一代展示

 
 

好了,到这里nagflux配置完成

 
 

Ⅳ、Grafana 配置

我们不需要修改相关的配置,直接运行即可,配置文件在/etc/grafana/grafana.ini

我们启动相关服务

[root@mail system]# systemctl enable grafana-server.service

[root@mail system]# systemctl start grafana-server.service

访问WEB控制台,默认端口3000,默认的用户名和密码都是admin

http://www.alexdu.cf:3000

010318 0232 NagiosInflu10 - Nagios、InfluxDB、Grafana 配合使用,打造新一代展示

 
 

添加数据源,点击Add data source

010318 0232 NagiosInflu11 - Nagios、InfluxDB、Grafana 配合使用,打造新一代展示

 
 

填写相关信息

Name : Nagios

Type : InfluxDB

URL : http://localhost:8086

Access : proxy

Database : NagiosPerfdata

User : admin

Password : ********

010318 0232 NagiosInflu12 - Nagios、InfluxDB、Grafana 配合使用,打造新一代展示

 
 

再次回到主页,我们选择新建dashboard

010318 0232 NagiosInflu13 - Nagios、InfluxDB、Grafana 配合使用,打造新一代展示

 
 

可以看到可以正常出图

010318 0232 NagiosInflu14 - Nagios、InfluxDB、Grafana 配合使用,打造新一代展示

 
 

这里我就不做过多演示,因为我这里没有相关数据。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: