如何借助Nagios监测常用服务
1个回答
展开全部
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
}
为了让本文着重介绍服务监测这方面,我们不会配置主机组(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
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询