记一次Nagios大规模的过程(600网络节点),Nagios + Mrtg + NDO +展示 +NagiosQL

  • A+
所属分类:监控文档

公司有一个新的需求:

有一个600节点的网络设备需要监控,设备都是Cisco路由器设备,要求能看端口流量,基本硬件信息,设备状态

 
 

第一步:构建基础环境,这里就不多说了、网上很多的教程

Nagios 、Mrtg 、 NDO 、NagiosQL

 
 

第二步:收集设备的资料,保存一个csv文件,我的大致信息如下、如信息不一样下一步种的脚本需要手工调整。

A列:主机名,用于Nagios的主机名字段

B\C列:这里放设备的描述,我这B列是设备的地址、C列为设备的专线号

D列:
设备的IP地址

061917 0831 Nagios1 - 记一次Nagios大规模的过程(600网络节点),Nagios + Mrtg + NDO +展示 +NagiosQL

 
 

第三步:编写脚本批量生成Nagios配置文件,python脚本

遍历csv文件生成Nagios配置文件

 
 

#!/usr/bin/env python

#_*_ coding:utf-8 _*_

'''

Created on 2017512

 
 

@author: Alex

'''

 
 

f=open("DRL.csv")

#line = f.xreadlines()

#print line

nagios=file("host.conf","w+")

 
 

for i in f.xreadlines():

x=i.split(",")

host='''

define host {

host_name %s

alias %s

address %s

parents localhost

hostgroups cisco_Group

use generic-host

icon_image cisco.jpg

register 1

}

 
 

'''%(x[0],x[1]+":"+x[2],x[3][:-2]+"254")

nagios.write(host)

 
 

f.close()

nagios.close()

 
 

第四步:使用NagiosQL导入生成的配置文件,当然首先要把上面的文件上传到NagiosQL能读取到的位置,导入后记得在主机页面点击写入到配置文件

 
 

061917 0831 Nagios2 - 记一次Nagios大规模的过程(600网络节点),Nagios + Mrtg + NDO +展示 +NagiosQL

 
 

第五步 [可选步]:如果导入后发现还有选项需要修改,通过SQL修改部分属性,例如之际检查命令等

使用SQL语句连接到NagiosQL,例如下面修改部分属性语句,

这个更具自己的情况来修改,在页面找一台修改后查看值

update tbl_host set check_interval=1 where hostgroups=2;

 
 

 
 

第六步:添加相应的服务,这个不用我多说了,同样的设备,添加服务关联到主机组上即可

第七步:添加MRTG生成网络流量图

同样通过脚本批量生成,中间的路径自己进行更换,不同的方式自己决定

注意#需要根据自己的方式选择取消注释,主机文件目录的权限需要为
Nagios:Nagios

可以已Nagios用户执行或者手工修改

tbl_host.txt 文件格式,我是从Nagisql数据库

主机名;描述;ip地址

 
 

 

#!/usr/bin/env python

import os

 
 

f=open("tbl_host.txt","r")

m=open("Add_mrtg.sh","w")

m.write("#!/bin/sh \n")

for lin in f.readlines():

lin=lin.split(";")

mrtg="cfgmaker --global 'WorkDir: /usr/local/mrtg-2/rrd/%s' --global 'Options[_]: bits,growright' --global 'LogFormat: rrdtool' --output /usr/local/mrtg-2/cfg/%s.cfg public@%s"%(lin[0],lin[0],lin[2])

os.mkdir("/usr/local/mrtg-2/rrd/%s"%lin[0])

#os.system(mrtg)

#print mrtg

#os.popen(mrtg)

#m.write(mrtg)

m.close

#os.system("/bin/bash Add_mrtg.sh")

#os.system("/bin/rm -rf Add_mrtg.sh")

f.close

 
 

添加Nagios服务定期执行mrtg这样对性能优化比较好,crontable执行非常糟糕

编写脚本放到
Nagios的libexec目录下

[root@Nagios libexec]# cat Run_Mrtg

#!/bin/sh

 
 

env LANG=C /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/cfg/"$1".cfg

exit $?

[root@Nagios libexec]#

 
 

让Nagios调用Mrtg收集节点流量,一下是nagios的配置

061917 0831 Nagios3 - 记一次Nagios大规模的过程(600网络节点),Nagios + Mrtg + NDO +展示 +NagiosQL

配置文件如下

061917 0831 Nagios4 - 记一次Nagios大规模的过程(600网络节点),Nagios + Mrtg + NDO +展示 +NagiosQL

 
 

061917 0831 Nagios5 - 记一次Nagios大规模的过程(600网络节点),Nagios + Mrtg + NDO +展示 +NagiosQL

第九步:调整Nagios监控。最终效果,一团胡

 

061917 0831 Nagios6 - 记一次Nagios大规模的过程(600网络节点),Nagios + Mrtg + NDO +展示 +NagiosQL

 
 

 
 

061917 0831 Nagios7 - 记一次Nagios大规模的过程(600网络节点),Nagios + Mrtg + NDO +展示 +NagiosQL

 
 

性能状况,感觉是非常棒的(最开始用cacti在添加到200节点左右直接就蹦了)

061917 0831 Nagios8 - 记一次Nagios大规模的过程(600网络节点),Nagios + Mrtg + NDO +展示 +NagiosQL

 
 

主机性能

061917 0831 Nagios9 - 记一次Nagios大规模的过程(600网络节点),Nagios + Mrtg + NDO +展示 +NagiosQL

 
 

监控展示页面,这个是基于OP-Dash_v1.1 做相关的修改和变更,这里就需要NDO的支持了

,这个页面从NDO读取数据

等整理完成后,局势在共享源码,请关注博客,图片仅供参考

061917 0831 Nagios10 - 记一次Nagios大规模的过程(600网络节点),Nagios + Mrtg + NDO +展示 +NagiosQL

 
 

流量展示页面,完全自写的一个查询系统(PHP),根据MRTG生成的RRD文件进行绘图,

这个等整理完成后在分享,大家也可以使用routers2 进行查看,界面不是这个美观

061917 0831 Nagios11 - 记一次Nagios大规模的过程(600网络节点),Nagios + Mrtg + NDO +展示 +NagiosQL

 
 

061917 0831 Nagios12 - 记一次Nagios大规模的过程(600网络节点),Nagios + Mrtg + NDO +展示 +NagiosQL

 
 

routers2的页面

061917 0831 Nagios13 - 记一次Nagios大规模的过程(600网络节点),Nagios + Mrtg + NDO +展示 +NagiosQL

 
 

到此600节点完成部署完成。

 
 

目前需要完善点,需要在Nagios界面做流量tips

 
 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • 5n 1

      大神~