nagios监控windows主机 linux主机
一、NSclient++与nrpe
nagios对windows的监控主要有两种方法,一种是NSclient++,另一种是通过nrpe的方式来达到监控目的
NSclient++与nrpe最大的区别就是:
1、被监控机上安装有nrpe,并且还有插件,最终的监控是由这些插件来进行的.当监控主机将监控请求发给nrpe后,nrpe调用插件来完成监控.
2、NSclient++则不同,被监控机上只安装NSclient++,没有任何的插件.当监控主机将监控请求发给NSclient++后,NSclient++直接完成监控,所有的监控是由NSclient++完成的。
这也说明了NSclient++的一个很大的问题,不灵活,没有可扩展性.它只能完成自己本身包含的监控操作,不能由一些插件来扩展.好在NSclient++已经做的不错了,基本上可以完全满足我们的监控需要。
NSclient++的原理图
二、部署过程
1、在windows上安装NSclient++
(1)一直下一步
(2)设置nagios服务器IP地址
(3)检查NSclient++的端口是否成功开启
如果服务没有开启,就:win+r --> services.msc --> nsclient++ 开启服务即可
(4)防火墙打开tcp 12489端口
2、设置nagios服务器
(1)检测nagios命令是否可以正常监测windows主机
[root@cacti libexec]# ./check_nt -H 192.168.200.15 -p 12489 -s dianyi123 -v UPTIME System Uptime - 3 day(s) 12 hour(s) 32 minute(s) [root@cacti libexec]# [root@cacti libexec]# ./check_nt -H 192.168.200.15 -p 12489 -s dianyi123 -v CPULOAD -w 80 -c 90 -l 5,80,90 CPU Load 0% (5 min average) | '5 min avg Load'=0%;80;90;0;100 #-w 警告比例 -c 紧急比例 -l(小写L) 表示过去5分钟的平均值,80%为警告,90%为紧急 [root@cacti libexec]# [root@cacti libexec]# ./check_nt -H 192.168.200.15 -p 12489 -s dianyi123 -v USEDDISKSPACE -w 80 -c 90 -l C C:\ - total: 100.83 Gb - used: 13.71 Gb (14%) - free 87.12 Gb (86%) | 'C:\ Used Space'=13.71Gb;80.66;90.74;0.00;100.83
(2)定义命令、主机、服务
①、定义命令
[root@cacti ~]# vim /usr/local/nagios/etc/objects/commands.cfg define command{command_name check_wincommand_line $USER1$/check_nt -H "$HOSTADDRESS$" -p 12489 -s dianyi123 -v $ARG1$ $ARG2$ }
②、定义主机和服务
为了方便,主机和监控服务都定义在一个配置文件里面
首先创在/usr/local/nagios/etc建一个文件夹servers专门保存各服务器的配置文件,然后以服务器IP命名各服务器配置文件
这样的话,nagios.cfg里面就需要开启对servers目录的支持
[root@cacti etc]# pwd /usr/local/nagios/etc [root@cacti etc]# [root@cacti etc]# ls cgi.cfg htpasswd.users nagios.cfg objects resource.cfg servers [root@cacti etc]# [root@cacti etc]# vim nagios.cfg cfg_dir=/usr/local/nagios/etc/servers [root@cacti etc]# [root@cacti etc]# vim servers/192.168.200.15.cfg define host{use windows-server ; Name of host template to usehost_name 192.168.200.15alias my computeraddress 192.168.200.15}#define hostgroup{ # hostgroup_name windows-servers ; The name of the hostgroup # alias Windows Servers ; Long name of the group # }define service{use generic-servicehost_name 192.168.200.15service_description NSClient++ Versioncheck_command check_win!CLIENTVERSION}define service{use generic-servicehost_name 192.168.200.15service_description Uptimecheck_command check_win!UPTIME}define service{use generic-servicehost_name 192.168.200.15service_description CPU Loadcheck_command check_win!CPULOAD!-l 5,80,90 }define service{use generic-servicehost_name 192.168.200.15service_description Memory Usagecheck_command check_win!MEMUSE!-w 80 -c 90}define service{use generic-servicehost_name 192.168.200.15service_description C:\ Drive Spacecheck_command check_win!USEDDISKSPACE!-l c -w 80 -c 90}define service{use generic-servicehost_name 192.168.200.15service_description D:\ Drive Spacecheck_command check_win!USEDDISKSPACE!-l d -w 80 -c 90}define service{use generic-servicehost_name 192.168.200.15service_description E:\ Drive Spacecheck_command check_win!USEDDISKSPACE!-l e -w 80 -c 90}#define service{ # use generic-service # host_name 192.168.200.15 # service_description W3SVC # check_command check_win!SERVICESTATE!-d SHOWALL -l W3SVC # }define service{use generic-servicehost_name 192.168.200.15service_description Explorercheck_command check_win!PROCSTATE!-d SHOWALL -l Explorer.exe}
(3)检查配置文件有无错误
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
如果没有消息,那就是最好的消息,下一步,就可以重启nagios服务了
(4)重启nagios服务
[root@cacti ~]# service nagios restart Stopping nagios: [ OK ] Starting nagios: [ OK ]
三、nagios监控页面查看主机与服务
1、主机状态
2、服务状态
四、排错阶段
本次部署nagios监控windows主机主要碰到两个问题
1、主机状态(status)是down,而不是正常的up
原因:这种情况下,一般都是服务器禁ping了,监控服务器是通过ping服务来检查被监控服务器是否在线,当把windows服务器ping的回显请求开启后,监控成功
解决:win2008:服务器管理器——设置——高级安全windows防火墙——入站规则——找到“文件和打印机共享(回显请求-ICMPv4-in)”右击……选择“启用规则”
2、could not fetch information from server
当把第1个问题解决掉后,Status是UP起来了,可是所有的服务全部都是could not fetch information from server
原因:出现这种状况的原因是因为nagios服务器没有从被监控端服务器上获得相关数据,直接原因就是NSclient++的配置文件中Allowed hosts的IP没有设置正确
解决:NSclient++的配置文件中 Allowed hosts = nagios服务器IP
当时在安装NSclient++时,我的 Allowed hosts = 192.168.200.105 ,我的设置是正确的,但是为什么会变成15我也不知道为什么
五、nagios监控linux主机
1、服务端定义主机
define host{use linux-serverhost_name 192.168.200.111alias linuxaddress 192.168.200.111}define service{use generic-servicehost_name 192.168.200.111service_description root_/check_command check_nrpe!check_xvda!5%!10%}define service{use generic-servicehost_name 192.168.200.111service_description /dev/xvdb2check_command check_nrpe!check_xvdb2!5%!10%}define service{use generic-servicehost_name 192.168.200.111service_description Check Swapcheck_command check_nrpe!check_swap}define service{use generic-servicehost_name 192.168.200.111service_description totalcheck_command check_nrpe!check_total_procs}define service{use generic-servicehost_name 192.168.200.111service_description check_loadcheck_command check_nrpe!check_load}define service{use generic-servicehost_name 192.168.200.111service_description check_tcp_3306check_command check_tcp!3306}define service{use generic-servicehost_name 192.168.200.111service_description check_userscheck_command check_nrpe!check_users}define service{use generic-servicehost_name 192.168.200.111service_description check_memcheck_command check_nrpe!check_mem}define service{use generic-servicehost_name 192.168.200.111service_description check_mysqlcheck_command check_nrpe!check_mysql} define service{use generic-servicehost_name 192.168.200.111service_description check_mysql_slavecheck_command check_nrpe!check_mysql_slave}define service{use generic-servicehost_name 192.168.200.111service_description check_http 192.168.200.111/test.htmlcheck_command check_http!'-u /test.html' #nagios监控网页状态(如 200),在commands.cfg中有自带check_http命令,也可监控域名!}
2、客户端修改:vim /usr/local/nagios/etc/nrpe.cfg
command[check_users]=/usr/local/nagios/libexec/check_users -w 3 -c 5 command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20 command[check_xvda]=/usr/local/nagios/libexec/check_disk -w 10% -c 5% -p /dev/xvda command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200 command[check_xvdb2]=/usr/local/nagios/libexec/check_disk -w 10% -c 5% -p /dev/xvdb2 #阿里云 command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10% #/dev/xvdb1 分区做了swap command[check_mem]=/usr/bin/sudo /usr/local/nagios/libexec/check_mem -w 20 -c 10 command[check_mysql]=/usr/local/nagios/libexec/check_mysql -H 192.168.200.111 -unagios -dnagios_monitor -p dianyi123 command[check_mysql_slave]=/usr/local/nagios/libexec/check_mysql_slave
3、在nrpe.cfg配置文件中允许nagios服务器IP
[root@localhost ~]# vim /usr/local/nagios/etc/nrpe.cfg allowed_hosts=127.0.0.1,192.168.200.105
4、客户端以独立进程方式启动 nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
5、修改nagios的命令模板
[root@monitor ~]# vim /usr/local/nagios/etc/objects/commands.cfg #添加以下一行 define command {command_name check_nrpecommand_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
否则重启nagios会报错:
Error: Service check command 'check_nrpe!check_total_procs' specified in service 'total' for host '192.168.200.105' not defined anywhere!
6、服务端检测 :
/usr/local/nagios/libexec/check_nrpe -H 192.168.200.111 -c check_sda
六、补充
1、nagios监控windows端口
基本上socket(收发通信协议)写的程序都会对应一个tcp端口出来,我们只要监控此端口就相当于监控了此程序;如FTP 21,pop 110,smtp 25 这些是常见的tcp端口,常见的端口一般nagios内都有定义的check_nt!,如果不是常见的端口,就需自定义程序的tcp端口。
在监控之前,要确认端口是打开的,可以在CMD中telnet一下端口
C:\Users\Administrator>telnet 192.168.200.15 3389
(1)定义命令
[root@cacti objects]# vim /usr/local/nagios/etc/objects/commands.cfg define command{command_name tcp3389command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p 3389 -v CLIENTVERSION }
(2)定义服务
主机已定义,主机和服务在一个配置文件里
[root@cacti servers]# vim /usr/local/nagios/etc/servers/192.168.200.15.cfg define service{use generic-servicehost_name 192.168.200.15service_description port3389check_command tcp3389 }
(3)重启nagios服务
(4)查看验证
2、nagios监控linux端口
[root@cacti servers]# pwd /usr/local/nagios/etc/servers [root@cacti servers]# [root@cacti servers]# vim 192.168.200.18.cfg define service{use generic-servicehost_name 192.168.200.18service_description check_tcp_3306check_command check_tcp!3306}define service{use generic-servicehost_name 192.168.200.18service_description check_tcp_873check_command check_tcp!873} # [root@cacti ~]# service nagios restart
############# 如果监听的端口是这样的,而不是 *:5666 这样 ############### tcp LISTEN 0 50 61.138.78.59:7003 *:* tcp LISTEN 0 5 *:5666 *:* 则需要修改commands中的 $HOSTADDRESS$ 为61.138.78.59,然后修改command_name,再定义服务即可
3、nagios监控mysql主从同步
判断mysql的主从同步主要还是看那两个线程:Slave_IO线程和Slave_SQL线程,两个都是YES的话,就证明是没有问题的
MariaDB [(none)]> show slave status\G *************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.200.17Master_User: doteyplayMaster_Port: 3306Connect_Retry: 60Master_Log_File: master-bin.000008Read_Master_Log_Pos: 1277Relay_Log_File: relay-bin.000025Relay_Log_Pos: 1486Relay_Master_Log_File: master-bin.000008Slave_IO_Running: YesSlave_SQL_Running: Yes
第一部分:客户端配置
(1)在被监控的从服务器增加一个用户
MariaDB [(none)]> grant Replication client on *.* to nagios@localhost identified by 'nagios'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec)
(2)验证命名执行状态
[root@DBSlave ~]# mysql -unagios -pnagios -e "show slave status\G;" *************************** 1. row ***************************Slave_IO_State: Waiting for master to send eventMaster_Host: 192.168.200.17Master_User: doteyplayMaster_Port: 3306Connect_Retry: 60Master_Log_File: master-bin.000008Read_Master_Log_Pos: 1277Relay_Log_File: relay-bin.000025Relay_Log_Pos: 1486Relay_Master_Log_File: master-bin.000008Slave_IO_Running: YesSlave_SQL_Running: Yes
(3)编写脚本/usr/local/nagios/libexec/check_mysql_slave(这是监控其作用的核心)
#!/bin/sh declare -a slave_is slave_is=($(/usr/local/mysql/bin/mysql -unagios -pnagios -e "show slave status\G"|grep Running |awk '{print $2}')) if [ "${slave_is[0]}" = "Yes" -a "${slave_is[1]}" = "Yes" ] then echo "OK C2-slave is running" exit 0 else echo "Critical C2-slave is error" exit 2 fi # [root@DBSlave libexec]# chmod +x check_mysql_slave #赋予执行权限 [root@DBSlave libexec]# chown nagios.nagios check_mysql_slave
(4)在从服务器安装 nrpe,然后在配置文件nrpe.cfg加入一行
[root@DBSlave ~]# vim /usr/local/nagios/etc/nrpe.cfg command[check_mysql_slave]=/usr/local/nagios/libexec/check_mysql_slave
(5)手动执行脚本,观察输出状态
[root@DBSlave libexec]# sh check_mysql_slave OK C2-slave is running
(6)检查被监控端的5666端口
[root@DBSlave libexec]# ss -antulp | grep 5666 tcp LISTEN 0 5 :::5666 :::* users:(("nrpe",26512,5)) tcp LISTEN 0 5 *:5666 *:* users:(("nrpe",26512,4)) [root@DBSlave libexec]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
第二部分:服务端配置
(1)在监控机上检查是否可成功监控被监控机
[root@cacti ~]# /usr/local/nagios/libexec/check_nrpe -H 192.168.200.18 -c check_mysql_slave NRPE: Command 'check_mysql_slave' not defined #遇到问题
排错:NRPE: Command
'check_mysql_slave'
not defined
[root@cacti ~]# /usr/local/nagios/libexec/check_nrpe -H 192.168.200.18 NRPE v2.15
证明在被监测主机上配置的NRPE已经正常工作,并且监测主机能够通过SSL与被监测主机上的NRPE正常通信。
[root@DBSlave libexec]# ps -ef | grep nrpe root 10287 9703 0 12:01 pts/1 00:00:00 vim /usr/local/nagios/etc/nrpe.cfg root 10522 9639 0 12:30 pts/0 00:00:00 grep nrpe nagios 26512 1 0 Aug15 ? 00:01:09 /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d #这里的nrpe是以独立进程运行的,而非守护进程。先kill一下nrpe再说 [root@DBSlave libexec]# [root@DBSlave libexec]# kill -9 26512 #kill nrpe进程 [root@DBSlave libexec]# [root@DBSlave libexec]# ps -ef | grep nrpe root 10287 9703 0 12:01 pts/1 00:00:00 vim /usr/local/nagios/etc/nrpe.cfg root 10524 9639 0 12:31 pts/0 00:00:00 grep nrpe #kill 成功 [root@DBSlave libexec]# [root@DBSlave libexec]# [root@DBSlave libexec]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d #重启nrpe [root@DBSlave libexec]# [root@DBSlave libexec]# ps -ef | grep nrpe root 10287 9703 0 12:01 pts/1 00:00:00 vim /usr/local/nagios/etc/nrpe.cfg nagios 10526 1 0 12:31 ? 00:00:00 /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d root 10528 9639 0 12:31 pts/0 00:00:00 grep nrpe
再次在监控端测试
[root@cacti ~]# /usr/local/nagios/libexec/check_nrpe -H 192.168.200.18 -c check_mysql_slave OK C2-slave is running #终于顺利通过了,就是nrpe进程的事儿
(2)定义主机、服务
[root@cacti servers]# pwd /usr/local/nagios/etc/servers [root@cacti servers]# vim 192.168.200.18.cfg define host{use linux-serverhost_name 192.168.200.18alias linuxaddress 192.168.200.18}define service{use generic-servicehost_name 192.168.200.18service_description check_mysql_slavecheck_command check_nrpe!check_mysql_slave}
(3)重启nagios服务
(4)查看监控状态
4、nagios通过web界面修改某个服务时报错
例如对某个服务进行临时安排其执行时间,或者不让它发警告,web页面上都有这样的设置.但是常常会有错误信息如下:
Could not open command file '/usr/local/nagios/var/rw/nagiosNaNd' for update!The permissions on the external command file and/or directory may be incorrect. Read the FAQs on how to setup proper permissions.An error occurred while attempting to commit your command for processing. |
(1)修改属组
[root@monitor ~]# chown -R nagios.nagios /usr/local/nagios/var/rw/
(2)把apache用户加入到nagios组
[root@monitor ~]# usermod -G nagios apache
(3)重启服务
[root@monitor ~]# service nagios restart [root@monitor ~]# service httpd restart
转载于:https://blog.51cto.com/nmshuishui/1541083
nagios监控windows主机 linux主机相关推荐
- cacti监控下添加对磁盘io的监控方法(Linux主机和Windows主机)
添加对磁盘io的监控方法 下述所用的安装包请到我的下载中去下载 一.Linux下 1.下载snmpdiskio-0.9.6 将snmpdiskio 放到 /usr/local/bin/snmpdisk ...
- cacti监控linux和windows磁盘io,cacti监控下添加对磁盘io的监控方法(Linux主机和Windows主机)...
添加对磁盘io的监控方法 下述所用的安装包请到我的下载中去下载 一.Linux下 1.下载snmpdiskio-0.9.6 将snmpdiskio 放到 /usr/local/bin/snmpdisk ...
- windows和linux主机名,windows和linux下如何远程获取操作系统版本和主机名
远程获取windows和linux操作系统版本和主机名需要具备以下条件: 假设 主机A(windows 7),ip:192.168.12.2 主机B(centos 6.3),ip:192.168.12 ...
- linux 上传网页,Windows和Linux主机FTP上传网页注意事项
一.Windows主机上传网页文件时应注意以下几点: 1.建议不要使用汉字命名目录及文件. 2.如果您是使用了ACCESS数据库,目前虚拟主机不再支持通过OBDC方式调用数据库,建议您通过Access ...
- CentOS8配置NTP服务器同步Windows和Linux主机
1:安装Chrony. yum install chrony -y 2:启动Chrony. systemctl start chronyd 3:查看Chrony的状态. systemctl statu ...
- 使用Samba实现Windows与Linux主机之间文件共享
samba是一种可以在Linux/Unix主机上模拟windows主机的NetBIOS和CIFS/SMB实现与windows主机之间文件共享的软件.只要linux主机安装了samba,windows端 ...
- Nagios监控Windows server 2003 系统
一.Nagios监控主机配置 [root@nagios ~]# cp /usr/local/nagios/etc/nagios.cfg /usr/local/nagios/etc/nagios.cfg ...
- zabbix的安装监控windows,linux操作流程
CentOS默认源里没有nginx软件 :wget http://www.atomicorp.com/installers/atomic sh ./atomic #安装YUM源 yum check-u ...
- php服务器监控windows,用Linux上的cacti去监控windows服务器(图)
用linux上的cacti去监控windows服务器 以前一直用cacti或者mrtg来监控交换机流量,很少用来监控服务器,最近突然有个任务需要监控windows服务器,一般刚装好的cacti,里面的 ...
最新文章
- synchronized关键字实现原理
- 다양한 저장매체의 속도를 측정
- 经典C语言程序100例之十七
- CSDN博文编辑技巧-如何去除上传的图片水印
- sklearn预处理转化流水线
- 常用数据库连接和diriver以及默认端口
- (十六)深入浅出TCPIP之Hello CDN
- ftp 553 Could not create file
- 在visual studio 2010+中调用ffmpeg编译时 报错error LNK xxxx: 模块对于 SAFESEH 映像是不安全的。...
- 想作为程序员工作 需要什么_您不想作为程序员玩的游戏
- django 1.8 官方文档翻译: 2-4-4 编写迁移
- 全国计算机民办二本学校排行,艺术类二本院校排名,2018最新民办和公办院校全国排名...
- C# 将PDF转为SVG的3种情况
- 比较器matlab,用于比较 MATLAB 对象的公共属性的比较器 - MATLAB
- MathWorks 中国
- UVA465 Overflow【大数】
- 【POJ 3666】Making the Grade【线性DP】
- java 如何查询数据库_java怎么查询数据库
- origin柱状图同时有两组数和两组数差值_教程 | Origin用矩阵绘制多层曲面映射图...
- Chrome浏览器搜索引擎问题
- 桂 林 理 工 大 学实 验 报 告实验五 数组
热门文章
- 用python实现语音的传输功能_用Python+WechatPCAPI实现微信消息防撤回
- 如何根据原理图画封装_如何在短时间内,吃透三极管工作原理,开关导通和封装外形知识点?...
- 小程序文本框为空自动填写_微信免费转码机器人!小程序自动转码!
- pcb成型板aoi检测_通过自动光学检测(AOI)实现PCB高速检测
- 安卓休眠唤醒ajax休线程,休眠无法获得远程服务器上当前线程的事务同步会话...
- php爆数据库,php+MySql注入非暴力爆数据库表段
- java 资源锁_concurrent包 线程池、资源封锁和队列、ReentrantReadWriteLock介绍
- jQuery+CSS动态改变class
- 统计学基础学习笔记:正态分布
- SSM框架笔记10:Spring AOP基础