如何借助Nagios监测常用服务?

译文
系统
本文着重介绍Nagios服务监测这方面,我们不会配置主机组(hostgroup)或模板,因为它们在前一篇教程中已有介绍不过,它们可以加以调整以符合要求,希望对大家有所帮助。

Nagios随带一大批的内置脚本用于监测服务。本教程将探讨使用其中一些脚本来检查常用服务的过程,比如MySQL、Apache Web服务器和DNS等服务。

为了让本文着重介绍服务监测这方面,我们不会配置主机组(hostgroup)或模板,因为它们在前一篇教程中已有介绍(详见http://xmodulo.com/2013/12/install-configure-nagios-linux.html)。不过,它们可以加以调整,以符合要求。

在CLI中运行Nagios检查

我们通常建议,先在命令行接口(CLI)中运行Nagios服务检查脚本,然后再将这些脚本添加到Nagios。这么做可以了解执行会不会成功,脚本输出结果会是什么样子。

所有脚本都位于/etc/nagios-plugins/config/,可执行文件则存放在/usr/lib/nagios/plugins/。

下面介绍实现方法。

  1. root@nagios:~# cd /etc/nagios-plugins/config/ 

所提供的脚本含有语法方面的帮助。示例包含部分输出。

  1. root@nagios:~# cat /etc/nagios-plugins/config/tcp_udp.cfg 
  2. # 'check_tcp'命令定义 
  3. define command{ 
  4. command_name    check_tcp 
  5. command_line    /usr/lib/nagios/plugins/check_tcp -H '$HOSTADDRESS$' -p '$ARG1$' 

鉴于语法可用,可按如下方式检查TCP端口。

  1. root@nagios:~# /usr/lib/nagios/plugins/check_tcp -H 10.10.10.1 -p 80 
  2. TCP OK - 0.000 second response time on port 80|time 
  3. =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中加以定义。

  1. root@nagios:~# vim /etc/nagios3/conf.d/example.cfg 
  2. define host{ 
  3. use                     generic-host 
  4. host_name               test-server-1 
  5. alias                   test-server-1 
  6. address                 10.10.10.1 
  7. define host{ 
  8. use                     generic-host 
  9. host_name               test-server-2 
  10. alias                   test-server-2 
  11. address                 10.10.10.2 
  12. define host{ 
  13. use                     generic-host 
  14. host_name               test-server-3 
  15. alias                   test-server-3 
  16. address                 10.10.10.3 

监测MySQL服务

MySQL监测方面的要求

1.通过检查端口3306,监测MySQL是否在运行。

2.监测某个数据据'testDB'的可用性。

MySQL服务器的设置

说到检查MySQL,应当牢记一点:默认情况下,MySQL只侦听回送接口127.0.0.1。这增加了数据库的安全性。需要手动调整,才能让MySQL还可以侦听其他接口。下面介绍具体实现方法。

这个设置在所有MySQL服务器上完成。

  1. root@nagios:~# vim /etc/mysql/my.cnf 

下面这一行被注释掉,以便让MySQL侦听所有接口。

  1. #bind-address           = 127.0.0.1 

此外,MySQL不会允许随便任何一个主机连接到它。同时为本地主机和'any'主机创建了用户'nagios'。随后,该用户被赋予访问所有数据库的全部权限,该用户将被用于监测。

完成所有MySQL服务器的下列设置。

  1. root@nagios:~# mysql -u root -p 
  2. ## MySQL root password here ## 

在MySQL服务器中创建用户'nagios@localhost'。

  1. mysql> CREATE USER 'nagios'@'localhost' IDENTIFIED BY 'nagios-pass'; 
  2. mysql> GRANT ALL PRIVILEGES ON *.* TO 'nagios'@'localhost'; 

用户'nagios@any-host'创建完毕。

  1. mysql> CREATE USER 'nagios'@'%' IDENTIFIED BY 'nagios-pass'; 
  2. mysql> GRANT ALL PRIVILEGES ON *.* TO 'nagios'@'%'; 
  3. mysql> FLUSH PRIVILEGES; 

这应该让MySQL能够侦听所有接口,此外还能接收来自用户'nagios'在任何主机的入站连接。

注意:这个改变可能会在安全方面带来影响,所以值得再提几句:

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

针对MySQL的Nagios配置

下列调整应该可以达到目的。

  1. root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg 
  2. define service{ 
  3. use  generic-service 
  4. host_name    test-server-1 
  5. ;hostgroup can be used instead as well 
  6. service_description  Check MYSQL via TCP port 
  7. check_command    check_tcp!3306 
  8. define service{ 
  9. use  generic-service 
  10. host_name    test-server-1 
  11. ;hostgroup can be used instead as well 
  12. service_description Check availability of database 'testDB' 
  13. check_command   check_mysql_database!nagios!nagios-pass!testDB 
  14. ;check_mysql!userName!userPassword!databaseName 

这样一来,Nagios就有助于同时监测MySQL服务器的可访问性和存储在服务器里面的数据库的可访问性。

监测Apache Web服务器

Nagios还可以用来监测Apache web服务器。

Apache监测方面的要求

  • 监测Apache服务器是不是可用。

这项任务其实容易得很,因为Nagios有一个内置命令,可以完成这项任务。

  1. root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg 
  2. define service{ 
  3. use  generic-service 
  4. host_name    test-server-1, test-server-2 
  5. service_description Check Apache Web Server 
  6. check_command    check_http 

看来这确实很简单。

监测DNS服务

Nagios可以监测DNS服务,其方式有两种,一种是要求DNS服务器解决一个特定的完全合格域名(FQDN),另一种是要求服务器使用dig工具。用于测试的默认FQDN是www.google.com,但可以根据需要来更改这个FQDN。可以改动下面这个文件来完成任务。

  1. root@nagios:~# vim /etc/nagios-plugins/config/dns.cfg 
  2. ## -H部分可以改动,替换Google ## 
  3. define command{ 
  4. command_name    check_dns 
  5. command_line    /usr/lib/nagios/plugins/check_dns -H www.google.com -s '$HOSTADDRESS$' 

然后,编辑下面这个文件。

  1. root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg 
  2. ## Nagios要求server-3为google.com解析IP ## 
  3. define service{ 
  4. use                             generic-service 
  5. host_name                       test-server-3 
  6. service_description     Check DNS 
  7. check_command           check_dns 
  8. ## Nagios要求server-3挖掘google.com ## 
  9. define service{ 
  10. use                             generic-service 
  11. host_name                       test-server-3 
  12. service_description     Check DNS via dig 
  13. check_command           check_dig!www.google.com 

监测邮件服务器

Nagios可以监测不同的邮件服务器组件,比如SMTP、POP、IMAP和mailq。正如前面提到的那样,server-2上面已搭建了postfix邮件服务器。可以对Nagios进行配置,以便监测服务器的SMTP和邮件队列。

  1. root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg 
  2. define service{ 
  3. use                     generic-service 
  4. host_name               test-server-2 
  5. service_description     Check SMTP 
  6. check_command           check_smtp 
  7. define service{ 
  8. use                     generic-service 
  9. host_name               test-server-2 
  10. service_description     Check Mail Queue 
  11. check_command           check_mailq_postfix!50!100 
  12. ;warning at 50, critical at 100 

下面这个屏幕截图显示了到目前为止已完成配置的所有服务检查的完整概况。

针对自定义应用程序的基于端口的监测

不妨假设下面这个自定义应用程序也在网络中运行,侦听某个特定的端口。

  • 测试服务器1:自定义应用程序(TCP端口12345)

稍加一番调整,Nagios还能有助于监测这个应用程序端口。

  1. root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg 
  2. define service{ 
  3. use                     generic-service 
  4. host_name               test-server-1 
  5. service_description     Check server 1 custom application 
  6. check_command           check_tcp!12345 

***提一下,Nagios可以监测网络的其他许多部分。存储在/etc/nagios-plugins/config/里面的脚本从一个侧面体现了Nagios的出色功能。

随Nagios提供的一些脚本仅限于本地服务器,比如包括服务器负载、并发进程的数量和已登录用户的数量。这些检查可以提供实用的宝贵信息,从而便于了解Nagios服务器里面出现的状况。

但愿本文对大家有所帮助。

原文链接:http://xmodulo.com/2013/12/monitor-common-services-nagios.html

责任编辑:黄丹 来源: 51CTO.com
相关推荐

2014-02-17 10:48:57

NagiosBGP会话

2011-03-22 13:00:50

Nagios

2011-03-25 17:30:02

Nagios

2011-03-22 13:00:50

Nagios

2011-03-22 13:00:49

Nagios

2022-07-18 13:06:26

网站服务监测

2011-03-21 13:10:15

2009-01-23 21:33:00

2011-03-25 16:49:33

nagios服务

2011-03-28 11:30:32

启动nagios

2011-03-28 16:31:47

nagios服务

2011-03-22 09:16:00

启动Nagios

2015-04-07 09:04:23

Monit服务器监控系统

2011-03-23 15:13:08

Nagios监控oracle

2011-08-22 12:25:08

nagios

2019-08-19 08:00:00

服务器Ubuntu Live漏洞

2011-03-24 10:08:38

nagiosweb

2011-03-24 10:08:41

nagios启动

2014-05-31 22:54:37

Azure移动服务应用程序

2014-02-11 10:43:39

PageSpeedNginx
点赞
收藏

51CTO技术栈公众号