设为首页 收藏本站
查看: 1453|回复: 0

基于nagios的监控环境(五):用Ndoutils将监控信息存库

[复制链接]

尚未签到

发表于 2017-4-20 10:03:23 | 显示全部楼层 |阅读模式
一、安装步骤

1、Ndoutils安装

Monitoring


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61


#【NDOUtils安装】

cd /home/taolei/copy/pkg/

tar zxvf ndoutils-2.0.0.tar.gz

cd ndoutils-2.0.0

 

#

# 做好MySQL库文件lib和include文件的连接(这点很重要)。

#这里要说明以下mysql的库文件路径,由于不同的安装方式,mysql的安装路径也不相同,

且需要安装mysql-devel,c才会有库文件

yum install mysql-devel

#这里要注意mysql的include文件夹路径,根据不同的方式安装可能不同

ln -sf /var/lib/mysql/include/* /usr/include/

mkdir /usr/include/mysql


ln -sf /var/lib/mysql/include/* /usr/include/mysql/

ln -sf /var/lib/mysql/lib/* /usr/lib/

mkdir /usr/lib/mysql


ln -sf /var/lib/mysql/lib/* /usr/lib/mysql

 

./configure LDFLAGS=-L/opt/mysql/lib

# 执行完成后,注意向上看看打印出的信息,看看是否找到了MySQL的库文件和include文件。

make

cd src/

 

#

# 我的Nagios是4.0.8,所以拷贝的是ndomod-4x.o、ndo2db-4x,

如果你的是2.X.x请拷贝ndomod-2x.o、ndo2db-2x

cp ndomod-4x.o ndo2db-4x log2ndo file2sock /usr/local/nagios/bin


cd ../db

# 创建数据库nagios,使用root用户,密码是root

mysqladmin -u root -proot create nagios

./installdb -u root -p root -d nagios  -h localhost

# 拷贝配置文件

cd ../config

cp ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg


cp ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg


 

#复制后的文件可能并没有执行权限(如果以root用户安装的话,文件是属于root的,

而nagios没有执行权限),为了让ndoutil能够通过该文件将监控信息存库,需要修改文件属主和权限

chown nagios:nagcmd /usr/local/nagios/etc/ndo2db.cfg


chown nagios:nagcmd /usr/local/nagios/etc/ndomod.cfg


chmod 744 /usr/local/nagios/etc/ndo2db.cfg


chmod 744 /usr/local/nagios/etc/ndomod.cfg


# 修改/usr/local/nagios/etc/ndo2db.cfg文件的数据库信息。

#db_user=root   db_pass=root  分别改为数据库的用户名和密码

#db_name=nagios 默认为nagios,如果在上面创建数据库时数据库名不为nagios,

此处也需做出相应的修改

nano /usr/local/nagios/etc/ndo2db.cfg


nano /usr/local/nagios/etc/nagios.cfg


# 复制下面内容粘贴到/usr/local/nagios/etc/nagios.cfg配置文件的#broker_module=...下面。

# Uncomment the line below if you're running Nagios 4.x

broker_module=/usr/local/nagios/bin/ndomod-4x.o config_file=/usr/local/nagios/etc/ndomod.cfg


# 修改/usr/local/nagios/etc/nagios.cfg配置文件下面参数的值为-1(一般默认如此)。

#event_broker_options=-1

 

#至此,ndoutils安装完成,需要对ndoutils进行一些配置,使其将监控信息存入指定数据库,

配置方法见下方【ndoutils配置】

# 启动ndo2db(这里)

/usr/local/nagios/bin/ndo2db-4x -c /usr/local/nagios/etc/ndo2db.cfg


 

# 查看系统日志是否有错误信息:

tail -5 /var/log/messages


Nov  7 00:57:46 localhost nagios: wproc: Core Worker 18303: job 34 (pid=25076): Dormant child reaped

Nov  7 17:01:39 localhost kernel: hpet1: lost 1 rtc interrupts

Nov  7 17:01:39 localhost nagios: Warning: A system time change of 57588 seconds (0d 15h 59m 48s forwards in time) has been detected.  Compensating...


Nov  7 17:01:58 localhost nagios: wproc: Core Worker 18302: job 41 (pid=25177) timed out. Killing it

Nov  7 17:01:58 localhost nagios: wproc: Core Worker 18302: job 38322480 with pid 25177 reaped at timeout. timeouts=2; started=42












2、ndoutils配置

2.1 mysql在本地机的配置

注:由于本地机也可以看作ip为127.0.0.1的远程机器,所以,配置方式也可以参考下方远程机的配置
编辑ndo2db.cfg配置文件
nano /usr/local/nagios/etc/ndo2db.cfg



lock_file=/usr/local/nagios/var/ndo2db.lock


ndo2db_user=nagios #nagios安装时的用户


ndo2db_group=nagcmd  #nagios安装时的用户组,官方文档里的安装步骤是nagcmd,


要核对清楚否则后面会导致一些权限问题

socket_type=unix  #使用本地机数据库用unix就好


socket_name=/usr/local/nagios/var/ndo.sock  #这个可以不改,socket_type=unix时才生效


tcp_port=5668 #这个可以不改,socket_type=tcp时才生效


use_ssl=0  #这边默认就行


db_servertype=mysql #数据库类型,暂时只支持mysql,虽然还可以配置为 pgsql = PostgreSQL


但是这个部分功能暂时还不全面,不建议配置

db_host=localhost #mysql所在机器名/IP,由于是本地机数据库,所以写为localhost


db_port=3306 #mysql数据库服务端口


db_name=nagios  #mysql中的数据库名


db_prefix=nagios_  #mysql库中表明的前缀,一般是nagios 如果扩展了cacti,那前缀可能是npc_


db_user=nagios  #mysql用户名


db_pass=root #mysql密码


max_timedevents_age=1440

max_systemcommands_age=10080

max_servicechecks_age=10080

max_hostchecks_age=10080

max_eventhandlers_age=44640

max_externalcommands_age=44640

debug_level=0

debug_verbosity=1

debug_file=/usr/local/nagios/var/ndo2db.debug


max_debug_file_size=1000000












 
编辑ndomod.cfg配置文件
nano /usr/local/nagios/etc/ndomod.cfg



instance_name=default  #这里可以自定义名称


output_type=unixsocket  #这里需要和ndo2db中的socket_type对应


output=127.0.0.1    #这里及后面的参数,入没有特殊必要,不建议修改,默认就行


tcp_port=5668  

use_ssl=0

output_buffer_items=5000

buffer_file=/usr/local/nagios/var/ndomod.tmp


file_rotation_interval=14400

file_rotation_timeout=60

reconnect_interval=15

reconnect_warning_interval=15

data_processing_options=-1

config_output_options=2












2.2 mysql在远程机的配置

编辑ndo2db.cfg配置文件
nano /usr/local/nagios/etc/ndo2db.cfg



lock_file=/usr/local/nagios/var/ndo2db.lock


ndo2db_user=nagios #nagios安装时的用户


ndo2db_group=nagcmd  ##nagios安装时的用户组,官方文档里的安装步骤是nagcmd,


要核对清楚否则后面会导致一些权限问题


socket_type=tcp   #使用远程机上的数据库这里需要改成tcp


socket_name=/usr/local/nagios/var/ndo.sock  #这个可以不改,socket_type=unix时才生效


tcp_port=5668 #这个可以不改,socket_type=tcp时才生效,一般默认5668,酌情修改


use_ssl=0  #这边默认就行


db_servertype=mysql #数据库类型,暂时只支持mysql,虽然还可以配置为 pgsql = PostgreSQL


但是这个部分功能暂时还不全面,不建议配置

db_host=localhost #mysql所在机器名/IP,我只试过远程机ip,远程机名称没试过。


db_port=3306 #mysql数据库服务端口


db_name=nagios  #mysql中的数据库名


db_prefix=nagios_  #mysql库中表明的前缀,一般是nagios 如果扩展了cacti,那前缀可能是npc_


db_user=nagios  #mysql用户名


db_pass=root #mysql密码


max_timedevents_age=1440

max_systemcommands_age=10080

max_servicechecks_age=10080

max_hostchecks_age=10080

max_eventhandlers_age=44640

max_externalcommands_age=44640

debug_level=0

debug_verbosity=1

debug_file=/usr/local/nagios/var/ndo2db.debug


max_debug_file_size=1000000












 
编辑ndomod.cfg配置文件
nano /usr/local/nagios/etc/ndomod.cfg



instance_name=default  #这里可以自定义名称


output_type=tcpsocket  #这里需要和ndo2db中的socket_type对应


output=127.0.0.1    #虽然是将监控信息存入远程数据库,但是这里的output含义不是将信息直接存入


远程数据库,所以不要改成mysql远程机的IP

tcp_port=5668   #这里及后面的参数默认即可


use_ssl=0

output_buffer_items=5000

buffer_file=/usr/local/nagios/var/ndomod.tmp


file_rotation_interval=14400

file_rotation_timeout=60

reconnect_interval=15

reconnect_warning_interval=15

data_processing_options=-1

config_output_options=2












 
 

二、常见问题

1、不能启动服务

错误信息:Could not bind socket: Address already in use
解决方法:
1)删除 /usr/local/nagios/var/ 中的 ndo.sock
rm -rf /usr/local/nagios/var/ndo.sock
2)重启ndo服务
/usr/local/nagios/bin/ndo2db-4x -c /usr/local/nagios/etc/ndo2db.cfg
(一般删除了就没问题了,如果不行,查看端口5668,如下)

查看5668端口监听的进程信息,kill进程,步骤如下

 



[iyunv@localhost  etc]# netstat -apn |grep 5668


tcp        0      0 0.0.0.0:5668                0.0.0.0:*                   LISTEN      1533/ndo2db        


[iyunv@localhost etc]# kill -3 1533  #这里的1533是删除进程对应的id


[iyunv@localhost etc]# /usr/local/nagios/bin/ndo2db-4x -c /usr/local/nagios/etc/ndo2db.cfg #再次启动ndo进程













 



 

2、不能将数据存入数据库

按上述步骤启动运行,没有错误.在存储监控信息时,数据库里没有存进数据.

错误日志1:

错误信息:Could not open data sink!..
查看系统日志,内有"Could not open data sink!..."错误提示.
系统日志如下:



tail -20 /usr/local/nagios/var/nagios.log


#.....

Nov 21 04:52:02 localhost nagios: ndomod: NDOMOD 2.0.0 (02-28-2014) Copyright (c) 2009 Nagios Core Development Team and Community Contributors

Nov 21 04:52:02 localhost nagios: ndomod: Could not open data sink! I'll keep trying, but some output may get lost...


Nov 21 04:52:02 localhost nagios: ndomod registered for contact data'


Nov 21 04:52:02 localhost nagios: ndomod registered for contact notification data'


Nov 21 04:52:02 localhost nagios: Event broker module '/usr/local/nagios/bin/ndomod-4x.o' initialized successfully.


Nov 21 04:52:02 localhost nagios: Successfully launched command file worker with pid 18576

#.....












原因是ndo2db.cfg 、ndomod.cfg 的属主和属组不正确,导致ndo2db没有读写权限
解决方法:
修改属组、属主(或直接修改文件权限)后即可解决.修改步骤如下:



cd /usr/local/nagios/etc/


ls -l

-rw-------. 1 root root 4825 Nov 21 04:51 ndo2db.cfg

-rw-------. 1 root root 5104 Nov 21 04:38 ndomod.cfg












 
#修改属组、属主(或直接修改文件权限)后即可解决



chown nagios ndomod.cfg


chown nagios ndo2db.cfg


chmod 744 ndo2db.cfg


chmod 744 ndomod.cfg













错误日志2:

系统运行一段时间后就无法继续将监控信息存入数据库,
错误信息:Still unable to connect to data sink,queue send error, retrying...
查看nagios及系统日志信息,报如下错误:
[iyunv@localhost etc]# tail -50 /usr/local/nagios/var/nagios.log
[1416980768] ndomod: Still unable to connect to data sink. 28787 items lost, 5000 queued items to flush.
[iyunv@localhost etc]# tail /var/log/messages
Nov 25 22:00:02 localhost ndo2db-4x: Message sent to queue.
Nov 25 22:00:02 localhost ndo2db-4x: Warning: queue send error, retrying...

解决方法:
修改内核参数文件:nano /etc/sysctl.conf将下列参数改大点,如:
kernel.msgmax = 131072000 (每个消息的最大size)
kernel.msgmnb = 131072000 (整个系统的最大数量的消息队列)
kernel.msgmni = 65536000 ((每个消息队列的最大字节限制,一个队列有多个消息)

 

错误日志3:

Error writing to data sink!  Some output may get lost.

三、数据库自动清理设置

为了防止数据库数据量过于庞大,ndo会定期对数据库进行清理(这个在配置文件中设置参数的地方有详细说明),如果在自己项目中希望长期保留数据库中的监控信息,可以对ndo配置文件中相应的参数进行修改,这里我暂且使用默认设置
编辑配置文件ndo2db.cfg:



nano /usr/local/nagios/etc/ndo2db.cfg













在TABLE TRIMMING OPTIONS下方有一些参数:



# Keep timed events for 24 hours

max_timedevents_age=1440

# Keep system commands for 1 week

max_systemcommands_age=10080

# Keep service checks for 1 week

max_servicechecks_age=10080

# Keep host checks for 1 week

max_hostchecks_age=10080

# Keep event handlers for 31 days

max_eventhandlers_age=44640

# Keep external commands for 31 days

max_externalcommands_age=44640

# Keep notifications for 31 days

max_notifications_age=44640

# Keep contactnotifications for 31 days

max_contactnotifications=44640

# Keep contactnotificationmethods for 31 days

max_contactnotificationmethods=44640

# Keep logentries for 90 days

max_logentries_age=129600

# Keep acknowledgements for 31 days

max_acknowledgements_age=44640












参数单位:秒

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-366710-1-1.html 上篇帖子: Permission denied: exec of '/usr/local/nagios/sbin/status.cgi' failed 下篇帖子: nagios使用经常碰到的几种问题及处理办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表