monicazhang 发表于 2015-12-19 14:00:03

Nagios是如何做到监测常用服务?

本帖最后由 monicazhang 于 2016-1-7 15:37 编辑

来自:网络Nagios随带一大批的内置脚本用于监测服务。本教程将探讨使用其中一些脚本来检查常用服务的过程,比如MySQL、Apache Web服务器和DNS等服务。为了让本文着重介绍服务监测这方面,我们不会配置主机组(hostgroup)或模板,因为它们在前一篇教程中已有介绍(详见2013/12/install-configure-nagios-linux.html)。不过,它们可以加以调整,以符合要求。在CLI中运行Nagios检查我们通常建议,先在命令行接口(CLI)中运行Nagios服务检查脚本,然后再将这些脚本添加到Nagios。这么做可以了解执行会不会成功,脚本输出结果会是什么样子。      nagios培训所有脚本都位于/etc/nagios-plugins/config/,可执行文件则存放在/usr/lib/nagios/plugins/。下面介绍实现方法。



[*]root@nagios:~# cd /etc/nagios-plugins/config/
所提供的脚本含有语法方面的帮助。示例包含部分输出。         nagios实施



root@nagios:~# cat /etc/nagios-plugins/config/tcp_udp.cfg # 'check_tcp'命令定义 define command{ command_name    check_tcp [*]command_line    /usr/lib/nagios/plugins/check_tcp -H '$HOSTADDRESS$' -p '$ARG1$'
鉴于语法可用,可按如下方式检查TCP端口。



root@nagios:~# /usr/lib/nagios/plugins/check_tcp -H 10.10.10.1 -p 80 TCP OK - 0.000 second response time on port 80|time [*]=0.000222s;;;0.000000;10.000000
示例拓扑结构在本教程中,用到了下列三台服务器。每台服务器运行一个或多个常用服务。Nagios服务器在Ubuntu上运行。          监控软件



[*]服务器1(10.10.10.1):MySQL和Apache2
[*]服务器2(10.10.10.2):Postfix和Apache2
[*]服务器3(10.10.10.3):DNS
首先,这些服务器在Nagios中加以定义。             nagios配置



root@nagios:~# vim /etc/nagios3/conf.d/example.cfg define host{ use                     generic-host host_name               test-server-1 alias                   test-server-1 address               10.10.10.1 } define host{ use                     generic-host host_name               test-server-2 alias                   test-server-2 address               10.10.10.2 } define host{ use                     generic-host host_name               test-server-3 alias                   test-server-3 address               10.10.10.3 [*]}
监测MySQL服务MySQL监测方面的要求1.通过检查端口3306,监测MySQL是否在运行。2.监测某个数据据'testDB'的可用性。MySQL服务器的设置说到检查MySQL,应当牢记一点:默认情况下,MySQL只侦听回送接口127.0.0.1。这增加了数据库的安全性。需要手动调整,才能让MySQL还可以侦听其他接口。下面介绍具体实现方法。这个设置在所有MySQL服务器上完成。            开源监控软件



[*]root@nagios:~# vim /etc/mysql/my.cnf
下面这一行被注释掉,以便让MySQL侦听所有接口。



[*]#bind-address         = 127.0.0.1
此外,MySQL不会允许随便任何一个主机连接到它。同时为本地主机和'any'主机创建了用户'nagios'。随后,该用户被赋予访问所有数据库的全部权限,该用户将被用于监测。完成所有MySQL服务器的下列设置。



root@nagios:~# mysql -u root -p [*]## MySQL root password here ##
在MySQL服务器中创建用户'nagios@localhost'。



mysql> CREATE USER 'nagios'@'localhost' IDENTIFIED BY 'nagios-pass'; [*]mysql> GRANT ALL PRIVILEGES ON *.* TO 'nagios'@'localhost';                  nagios安装
用户'nagios@any-host'创建完毕。



mysql> CREATE USER 'nagios'@'%' IDENTIFIED BY 'nagios-pass'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'nagios'@'%'; [*]mysql> FLUSH PRIVILEGES;
这应该让MySQL能够侦听所有接口,此外还能接收来自用户'nagios'在任何主机的入站连接。注意:这个改变可能会在安全方面带来影响,所以值得再提几句:



[*]该设置会将MySQL 在所有的可用接口面前,包括广域网接口。确保只有合法网络才能访问该数据库,这点极其重要。应该使用防火墙和TCP封装器等过滤器。
[*]MySQL'nagios'用户密码应该是安全性很高的强密码。如果只有个别几台Nagios服务器,那么应该创建MySQL用户'nagios@servername',而不是'nagios@%'即任何主机。
针对MySQL的Nagios配置下列调整应该可以达到目的。



root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg define service{ usegeneric-service host_name    test-server-1 ;hostgroup can be used instead as well service_descriptionCheck MYSQL via TCP port check_command    check_tcp!3306 } define service{ usegeneric-service host_name    test-server-1 ;hostgroup can be used instead as well service_description Check availability of database 'testDB' check_command   check_mysql_database!nagios!nagios-pass!testDB ;check_mysql!userName!userPassword!databaseName [*]}
这样一来,Nagios就有助于同时监测MySQL服务器的可访问性和存储在服务器里面的数据库的可访问性。监测Apache Web服务器Nagios还可以用来监测Apache web服务器。Apache监测方面的要求



[*]监测Apache服务器是不是可用。
这项任务其实容易得很,因为Nagios有一个内置命令,可以完成这项任务。



root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg define service{ usegeneric-service host_name    test-server-1, test-server-2 service_description Check Apache Web Server check_command    check_http [*]}
看来这确实很简单。监测DNS服务Nagios可以监测DNS服务,其方式有两种,一种是要求DNS服务器解决一个特定的完全合格域名(FQDN),另一种是要求服务器使用dig工具。用于测试的默认FQDN是www. ,但可以根据需要来更改这个FQDN。可以改动下面这个文件来完成任务。



root@nagios:~# vim /etc/nagios-plugins/config/dns.cfg ## -H部分可以改动,替换Google ## define command{ command_name    check_dns command_line    /usr/lib/nagios/plugins/check_dns -H www.-s '$HOSTADDRESS$' [*]}
然后,编辑下面这个文件。



root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg ## Nagios要求server-3为 解析IP ## define service{ use                           generic-service host_name                     test-server-3 service_description   Check DNS check_command         check_dns } ## Nagios要求server-3挖掘## define service{ use                           generic-service host_name                     test-server-3 service_description   Check DNS via dig check_command         check_dig!www.[*]}
监测邮件服务器Nagios可以监测不同的邮件服务器组件,比如SMTP、POP、IMAP和mailq。正如前面提到的那样,server-2上面已搭建了postfix邮件服务器。可以对Nagios进行配置,以便监测服务器的SMTP和邮件队列。



root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg define service{ use                     generic-service host_name               test-server-2 service_description   Check SMTP check_command         check_smtp } define service{ use                     generic-service host_name               test-server-2 service_description   Check Mail Queue check_command         check_mailq_postfix!50!100 ;warning at 50, critical at 100 [*]}
下面这个屏幕截图显示了到目前为止已完成配置的所有服务检查的完整概况。针对自定义应用程序的基于端口的监测不妨假设下面这个自定义应用程序也在网络中运行,侦听某个特定的端口。



[*]测试服务器1:自定义应用程序(TCP端口12345)
稍加一番调整,Nagios还能有助于监测这个应用程序端口。



root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg define service{ use                     generic-service host_name               test-server-1 service_description   Check server 1 custom application check_command         check_tcp!12345 [*]}
最后提一下,Nagios可以监测网络的其他许多部分。存储在/etc/nagios-plugins/config/里面的脚本从一个侧面体现了Nagios的出色功能。随Nagios提供的一些脚本仅限于本地服务器,比如包括服务器负载、并发进程的数量和已登录用户的数量。这些检查可以提供实用的宝贵信息,从而便于了解Nagios服务器里面出现的状况。想做Nagios, Zabbix,Cacti,iTop各种交流的,可以进入开源监控工具Nagios交流QQ群号 :476809427
页: [1]
查看完整版本: Nagios是如何做到监测常用服务?