1397535668 发表于 2019-1-15 11:00:00

Nagios学习笔记之(五)后期维护

  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 or $0 \nFor example: $0 host.template host.list(Field : )\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


http://blog.运维网.com/attachment/201208/174303681.jpg

再者呢就是看看Alerts,有的时候可能你没收到报警邮件,也许是没达到失败检测次数,但看看还是很有必要的


http://blog.运维网.com/attachment/201208/174424874.jpg

还有可能就是看看pnp绘图了,可以分析出那个时间段,目标主机存在问题


http://blog.运维网.com/attachment/201208/174517110.jpg



行了,先说到这吧,想到什么再加。



Nagios全系列笔记:
Nagios学习笔记之(一)最初搭建
Nagios学习笔记之(二)监控部署
Nagios学习笔记之(三)配置详解
Nagios学习笔记之(四)外部扩展
Nagios学习笔记之(五)后期维护





页: [1]
查看完整版本: Nagios学习笔记之(五)后期维护