如何借助Nagios监测常用服务

 我来答
mzymzymy
高粉答主

2015-07-12 · 关注我不会让你失望
知道大有可为答主
回答量:2万
采纳率:93%
帮助的人:1.2亿
展开全部
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/。

下面介绍实现方法。

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

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中加以定义。

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@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{
use generic-service
host_name test-server-1
;hostgroup can be used instead as well
service_description Check MYSQL via TCP port
check_command check_tcp!3306
}
define service{
use generic-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{
use generic-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.google.com,但可以根据需要来更改这个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.google.com -s '$HOSTADDRESS$'
}
然后,编辑下面这个文件。

root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
## Nagios要求server-3为google.com解析IP ##
define service{
use generic-service
host_name test-server-3
service_description Check DNS
check_command check_dns
}
## Nagios要求server-3挖掘google.com ##
define service{
use generic-service
host_name test-server-3
service_description Check DNS via dig
check_command check_dig!www.google.com
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式