摘要:最近一直在搞服务器管理,苦于找不到好的分组方式来管理大量的服务器,现在分享一下想法吧。
nagios是对服务器进行有效监控的良好工具,同时还可以对服务器进行数据统计,便于管理员全面掌握需要监控的服务器的情况。同时管理员还可以通过nagios
采集的数据对服务器进行分析,得到cpu的负载和链接数,或是磁盘分区中使用空间的增加或是减少情况。
首先,简单介绍一下nagios安装完成后的配置文件的含义
nagios安装完成后会在安装目录下出现以下的文件,这些文件的结构和含义如下:
nagios->|
|-------->bin 二进制文件nagios可以用来监测nagios.cfg配置文件
|-------->etc------>|
|-------->include |--------->cgi.cfg 采用授权模式,并且控制访问权限
|-------->libexec |--------->htpasswd 访问者的passwd的记录文件
|-------->sbin |--------->nagios.cfg
|-------->share |--------->objects--------------------->|
|-------->var |--------->pnp |--->commands.cfg 定义的一些命令会在定义主机和服务时使用
|--------->resource.cfg |--->contacts.cfg 添加出现问题时需要联系的管理者
|--------->servers 监控服务器文件 |--->localhost.cfg 定义本地主机的监控
|--->templates.cfg 提供参考模板
|--->timeperiods.cfg 对服务器监控的时间模板
上面有些文件在其后表明了该文件的用处,其中libexec是nagios放插件的地方,正式利用这里的插件,在commands.cfg中定义一些命令,这些命令将在定义host和
定义service的时候使用。同时nagios的报警策略是,将具有该服务的机器的报警通知给服务中的联系组,即只有服务才能报警。
nagios上的配置文件的写法,比较多见网上到处都是,但是怎样将这些配置文件有效的组织起来并且方便管理人员的查看是一个问题,特别是在有大量的服务器时,现在主要讨论方面的问题。
1.服务器较少,并且服务器上需要监控的服务也较少时
这个时候的监控文件的写法,可以采用单台服务器监控的策略,一台一台的添加:
define host{
use linux-server,host-pnp
host_name test-A
alias test-A
address 192.168.168.168
}
define service{
use local-service,srv-pnp
host_name test-A
service_description RSYNC_PORT_873
check_command check_tcp!873
contact_groups admins
}
define service{
use local-service,srv-pnp
host_name test-A
service_description NFS_SERVICE
check_command check_nrpe!check_process_status
contact_groups admins
}
这个有个好处是,随时随地添加服务器的监控,比较容易上手。当然是在nagios的command和contact等文件全部配置好后再来定义主机,这样就比较清楚和容易。
2.服务器较多,并且服务器上的服务也较多的时候。
服务器较多,每个服务器上监控的服务也很多,这是再采用单台的策略就不合适了,需要将nagios的服务器归组,让管理员或是负责这些服务的人员能够一目了然的看见他管理的机器,此时需要采用nagios的组策略来管理机器了。在对服务进行定义时也可采用对某一个组进行监控,前提是这个组中的服务器都具有相同的服务。
当然定义的组在nagios的监控界面上会显示出来,所以在选择组的策略问题上需要认真考虑。
define host{
use linux-sesrver,host-pnp
host_name test-a(在nagios的监控界面上显示的名称)
alias test-a(报警时发给管理员的名称)
address 192.168.55.33
}
define host{
use linux-sesrver,host-pnp
host_name test-b
alias test-b
address 192.168.55.34
}
define host{
use linux-sesrver,host-pnp
host_name test-c
alias test-c
address 192.168.55.35
}
define hostgroup{
hostgroup_name test-group
alias test-group
members test-a, test-b,test-c
}
define service{
use local-service,srv-pnp
host_name test-a #以主机来完成监控
service_description SSH_PORT_22
check_command check_ssh!22
contact_groups admins
}
define service{
use local-service,srv-pnp
host_name test-b,test-c #以主机来完成监控
service_description SSH_PORT_33
check_command check_ssh!33
contact_groups admins
}
define service{
use local-service,srv-pnp
hostgroup_name test-group #以组来完成监控
service_description ROOT_PARTITION
check_command check_nrpe!check_disk_root
contact_groups admins
这样在nagios的监控界面上就能能够看见一个为test-group的组,这个组便于对该组的管理人员集中观看这些服务器的状态。同时
这样的组策略也便于用脚本对大量的服务器进行配置管理。
3.nagios配置文件自动化生成一个简单模板
nagios的host的基本模式,可以用来作为自动生成host文件的模板。
hostip 192.168.52.168
product-52168 #hostname
product-resin-http-mysql-52168 #alias 报警时显示给报警信息接收者
product #所属的组
resin80 #监控服务
resin8081 #监控服务
http8080 #监控服务
mysql3306
ssh16322
home
var
root
readonly
# #结束符
4. nagios监控主机host的命名规则
命名规则涉及到怎样能够很好的对nagios的主机进行管理的问题,下面的规则供参考。
host命名的规则是:所属的组+ip后两位。 如:product-52168,而host中的alias是报警提示信息,所以需要增加传递的信息,
alias为:组名+服务+ip后两位,如: product-webservice-52168