|
Nagios学习笔记之(五)后期维护
前言:前面都已经把整个Nagios算是搭建起来了,现在就是来想想在以后的工作中都需要注意什么,以及怎么把工作做的简化、快速、安全。
后期维护就是后续的琐碎的工作,例如:增加监控主机、调整阀值、检查配置文件等等。
总结如下:
1.如何更快速的增加主机?
2.如何调整合适的阀值?
3.如何保证nagios稳定的运行?
4.定期查看日志、pnp图,了解监控情况。
一、首先说下如何更快速的增加主机?
a.我们都知道Nagios的配置文件都在/usr/local/nagios/etc/下,可以在其新建个servers目录来存在后续新增的主机配置文件,而不用放在默认的object里,也不更改其默认的配置文件,这样在以后排错就有针对性。
b.再一个就是如何快速的增加主机,也就是批量增加,利用脚本可以帮你实现。
以下内容为朋友(xiaojun.wang)提供:
批量脚本的思路是这样的:
需要东西:一个批量脚本、一个Linux模版、一个Windows模版、一个IP对应主机名的列表文件。
最终实现:每个主机以及对应的服务为单独的配置文件,文件名为主机名-ip.cfg的格式,方便快速的明白此配置文件对应的主机。这样也方便了出了问题然后排错,可以快速定位。
可以这么设计:
servers/Create.sh #批量脚本
servers/Linux.template #Linux主机模版
servers/Windows.template #Windows主机模版
servers/list.txt #IP对应主机名的列表文件
1.批量脚本:
vim servers/Create.sh
- #!/bin/bash
-
- #author: xiaojun.wang
-
- usage () {
- echo -en "USAGE: $0 [host list] or $0 [template] [host list]\nFor example: $0 host.template host.list(Field : [IP] [HOST NAME])\n" 1>&2
- exit 1
- }
-
- if [ $# -gt 2 ];then
- usage
- exit 1
- fi
-
- case "$#" in
- 2)
- template=$1
- host_list=$2
- ;;
- 1)
- template='host.template'
- host_list=$1
- ;;
- 0)
- # template='host.template'
- # host_list='host.list'
- usage
- ;;
- esac
-
- if [ ! -f "${template}" ];then
- echo "template : ${template} not exist!" 1>&2
- exit 1
- fi
-
- if [ ! -f "${host_list}" ];then
- echo "host list : ${host_list} not exist!" 1>&2
- exit 1
- fi
-
- cat ${host_list}|\
- while read ip hostname
- do
- echo "${ip}"|grep -oP '^\d{1,3}(\.\d{1,3}){3}$' >/dev/null 2>&1 || Field='not ip'
- if [ "${Field}" = 'not ip' ];then
- echo "${ip} not ip!" 1>&2
- exit 1
- fi
- host_cfg="${hostname}-${ip}.cfg"
- cp ${template} ${host_cfg}
- sed -i "s/HOST_NAME/${hostname}/g;s/ADDRESS/${ip}/g" ${host_cfg}
- done
2.Linux主机模版:(自己任意即可,写好要监控的项目)
- define host{ #主机配置
- use linux-server,hosts-pnp
- host_name HOST_NAME #这个就是到时脚本写入的主机名
- alias HOST_NAME; A longer name for the server
- address ADDRESS ; IP address of the server #脚本要写入的ip
- }
- define service{
- use generic-service,services-pnp
- host_name HOST_NAME #同上
- service_description CPU Load
- check_command check_nrpe!check_load
- }
- define service{
- use generic-service,services-pnp
- host_name HOST_NAME
- service_description Current Users
- check_command check_nrpe!check_users
- }
- define service{
- use generic-service,services-pnp
- host_name HOST_NAME
- service_description Disk Free Space /
- check_command check_nrpe!check_root
- }
- define service{
- use generic-service,services-pnp
- host_name HOST_NAME
- service_description Total Processes
- check_command check_nrpe!check_total_procs
- }
- define service{
- use generic-service,services-pnp
- host_name HOST_NAME
- service_description Zombie Processes
- check_command check_nrpe!check_zombie_procs
- }
- define service{
- use generic-service,services-pnp
- host_name HOST_NAME
- service_description SSH
- check_command check_ssh
- register 0
- }
3.Windows主机模块也是一样的,这里就略了。
4.列表文件,格式如下:
192.168.1.1 Http
192.168.1.2 Mail
使用格式:
./Create.sh linux.template list.txt #这样就增加了两个主机以及服务了。
这样以后批量就很方便了。
二、如何调整合适的阀值?
我们都知道,报警是根据设定的阀值来的。
例如:进程数,默认警告的阀值为150,严重的阀值为200,假如目标主机为Mail,进程数长时间保持在200以上,这时候就需要调整nrpe的阀值了。
那么我们如何来判定多少的阀值合适呢?
其实可以写个简单的命令来定时收集这些信息,例如:每5分钟收集一次进程数。
crontab -e
*/5 * *** ps -ef |wc -l >> /total_procs.txt
这样就可以来分析目标主机的进程数在一个什么范围比较合适了。
还有一个方便就是检测失败次数的调整,有的时候可能因为网络短时间的延迟,这样如果失败检测次数过少,就会有大量的报警邮件,这样以后报警邮件多了,人的警惕意识也会有所下降,所以给失败检测次数一个合理的值也是非常有必要的。
这里其实说的非常有限,只是告诉要有这个意识,nagios本身默认的东西很多是合适的,但更多的是需要调整的!
三、如何保证nagios稳定的运行?
其实这也是个老生常谈的问题,假如Nagios都宕机了,谁来报警?
所以必要的保证Naigos的安全也是很重要的。无非也就是关闭一些不必要的端口、不必要的服务,只提供Nagios必须的端口,这样很大程度的增强了安全性。还要经常检查其配置文件,以及log日志。
也可以写个简单的脚本来监控本机nagios进程:ps -ef |grep nagios |grep -v grep |wc -l 用个if语句来判断下是否为0,为0就发邮件通知即可。
这个其实也就是提醒要有这个意识!
四、定期查看日志、pnp图,了解监控情况
下面呢,就是来说说nagios web页面的事了。
首先就是可以没事看看当天的Event Log
再者呢就是看看Alerts,有的时候可能你没收到报警邮件,也许是没达到失败检测次数,但看看还是很有必要的
还有可能就是看看pnp绘图了,可以分析出那个时间段,目标主机存在问题
行了,先说到这吧,想到什么再加。
Nagios全系列笔记:
Nagios学习笔记之(一)最初搭建
Nagios学习笔记之(二)监控部署
Nagios学习笔记之(三)配置详解
Nagios学习笔记之(四)外部扩展
Nagios学习笔记之(五)后期维护
|
|
|