美洲杯波胆_美洲杯波胆赔率
做最好的网站
来自 计算机教程 2020-01-02 01:50 的文章
当前位置: 美洲杯波胆 > 计算机教程 > 正文

【男篮世界杯波胆】Nginx下构建nagios监控平台Na

python根据nagios配置文件将监控的服务联系人等信息导出到excel表格

前阵子,遇到需要把nagios监控的服务统计到表格的需求,想着如果每一次改动,都要去维护表格的话,难免会有疏漏或者问题,于是观察了nagios的host.cfg,services.cfg等配置文件写了一个脚本,包含对多个主机关联到同一个服务的处理等,脚本也有局限性,就是需要把每个主机,都归类到某个组,比如Linux主机归类到Linux组,实际环境,一般也是有这样做归类的,脚本运行过程中会有文件产生,但都很小,以下是相应模块安装和脚本文件,建议在测试机上面跑完再到实际环境跑。

一,安装xlsxwriter

一个excel操作模块,可以操作多个工作表的文字、数字、公式、图表等。

pip安装方法:

#pipinstallXlsxWriter

源码安装方法(需下载)

#tar-zxvfXlsxWriter-master.tar.gz#cdXlsxWriter-master#pythonsetup.pyinstall

二,脚本文件:

importxlsxwriter

importsys
reload(sys)
sys.setdefaultencoding('utf8')
#注意路径
os.system("cat/usr/local/nagios/etc/hosts.cfg|grep-E'host_name|address|hostgroups'|
seds/[[:space:]]//|awk'{print$1,$2,$3}'|sed-e's/[[:space:]]$//g'>/root/autocount/hostip")

#####################处理一行多个host_name情况########################

os.system("cat/usr/local/nagios/etc/services.cfg|grep-E'host_name|service_description|contacts'|seds/[[:space:]]//|
awk'{print$1,$2,$3,$4,$5,$6}'|sed-e's/[[:space:]]*$//g'|sed-e's/,[[:space:]]/,/g'>/root/autocount/serviceip2")
#含有完整行的文件,及host_name都有的
os.system("cat/usr/local/nagios/etc/services.cfg|grep'host_name'|seds/[[:space:]]//|awk'{print$2,$3,$4,$5,$6}'|seds/[[:space:]]//g|awk'/,/{print$0}'>/root/autocount/serviceip1")
os.system("sort-u/root/autocount/serviceip1>/root/autocount/serviceip3")
#去除重复行
withopen("/root/autocount/serviceip3")asf3:
#a中保存有一行多个host_name的主机
a=f3.readlines()
withopen("/root/autocount/serviceip2")asf4:
b=f4.readlines()
j=0
foriina:
k=i.strip('n').split(',')
l=3
whilej>testfile,bb,
testfile.close()
#此时testfile中还是含有长主机名的,即多个主机在配置文件中显示为同一行的(关联服务)
jiji=0

foriina:
try:
 whileTrue:
ind=b.index("host_name" i)
b.pop(ind)
b.pop(ind)
b.pop(ind)
 print"###############"
 jiji =1
except:
 continue
#利用a中先前存的类似host1,host2,host3这样关联的主机,从b中剔除。
print"jijiis%s"%jiji


finall=open("/root/autocount/serviceip",'w')

forkkinb:
print>>finall,kk,
finall.close()
#关闭保存文件,现在就是不存在类似多个主机名的行了。

file1="/root/autocount/hostip"
file2="/root/autocount/serviceip"

f=open("/root/autocount/joinout",'w')
final=open("/root/autocount/final",'w')

f1=file(file1,"r")
j=0
totalhost=0
foriinf1.readlines():
totalhost =1
print>>f,i,
f2=file(file2,"r")
m=2
forkinf2.readlines():
 ifi==k:#先判断是否主机名相等,要不如果serviceip文件服务无联系人,就会出现错乱
 print"testtesttest"
 m=0
 continue
 elifm<2and('host_name'notink):
 print>>f,k,
 m =1
 else:
 m=2
 continue

f1.close()
f2.close()
f.close()
totalhost=totalhost/3

withopen("/root/autocount/joinout")asf:
a=f.readlines()

linen=0
con=[]
totalservice=0
foriina:
if'service_description'ini:
 totalservice =1
con.append(linen)
linen =1
else:
linen =1
printcon

m=1
#处理一些没有contacts的情况
forjincon:
if'contacts'notina[j m]:
a.insert(j m,'contactsnonen')
m =1

forxina:
print>>final,x,


title=[u'序列号',u'host',u'ip',u'service',u'联系人',u'所属部门']

workbook=xlsxwriter.Workbook('Nagios监控信息统计.xlsx')
worksheet=workbook.add_worksheet()

worksheet.set_column('A:C',30)
worksheet.set_column('D:F',30)
worksheet.set_column('H:I',10)
#worksheet.set_row(3,30)
#worksheet.set_row(6,30)
#worksheet.set_row(7,30)
merge_format=workbook.add_format({
'bold':1,
'border':1,
'align':'center',
'valign':'vcenter',
'fg_color':'#CC0033'})

merge_format1=workbook.add_format({
'bold':1,
'border':1,
'align':'center',
'valign':'vcenter',
'fg_color':'#D7E4BC'})

bold=workbook.add_format({
'bold':1,
'border':1,
'align':'center',
'valign':'vcenter'})

merge_format2=workbook.add_format({
#'bold':1,
'border':1,
'align':'center',
'valign':'vcenter'})

format_title=workbook.add_format()
format_title.set_border(1)
format_title.set_bg_color('#cccccc')

format_title.set_align('center')

worksheet.merge_range('A1:F1','Nagios监控信息',merge_format)
worksheet.merge_range('H1:I1','主机总计服务总计',merge_format1)

worksheet.write('H2',totalhost,bold)
worksheet.write('I2',totalservice,bold)

worksheet.write_row('A2',title,format_title)

#######################################
service_list=[]
count=0
slist_end=0
initline=3
defwritetoexecl(numb,host,ip,group,service_list):

globalinitline
globalslist_end

slist_len=str(len(service_list))
initl=str(initline)
slist_end=int(initl) int(slist_len)-1
slist_end1=str(slist_end)
#一行的就调用write方法
ifinitl==slist_end1:
worksheet.write('A' initl,numb,merge_format2)
worksheet.write('B' initl,host,merge_format2)
 worksheet.write('C' initl,ip,merge_format2)
worksheet.write('F' initl,group,merge_format2)
else:
worksheet.merge_range('A' initl ':' 'A' slist_end1,numb,merge_format2)
worksheet.merge_range('B' initl ':' 'B' slist_end1,host,merge_format2)
worksheet.merge_range('C' initl ':' 'C' slist_end1,ip,merge_format2)
worksheet.merge_range('F' initl ':' 'F' slist_end1,group,merge_format2)

servicell=initl
#输出服务和联系人
forelementinservice_list:
print'        '
service1=''.join(element.keys())
contacts1=''.join(element.values())
worksheet.write('D' servicell,service1,merge_format2)
worksheet.write('E' servicell,contacts1,merge_format2)
servicell=str(int(servicell) 1)
print'        '

#worksheet.merge_range('A50:A60',num,merge_format)
#printinitl
#printslist_end1
initline=int(initl) int(slist_len)
foriina:
service_dict={}
#定义字典存放服务和联系人
if'host_name'ini:
host=i.split()[1]
printhost
if'service_description'ini:
key=i.split()[1]
service_dict[key]=''

if'contacts'ini:
service_dict[key]=i.split()[1]
#printservice_dict
service_list.append(service_dict)
#printservice_list
if'address'ini:
 ip=i.split()[1]
 printip
if'hostgroups'ini:
groups=i.split()[1]
printservice_list
printgroups
count =1
writetoexecl(count,host,ip,groups,service_list)
service_list=[]
continue
workbook.close()

统计的效果如下:

 

http://www.bkjia.com/Pythonjc/1107280.htmlwww.bkjia.comtruehttp://www.bkjia.com/Pythonjc/1107280.htmlTechArticlepython根据nagios配置文件将监控的服务联系人等信息导出到excel表格 前阵子,遇到需要把nagios监控的服务统计到表格的需求,想着如果每一次...

make

3、安装NRPE

启动NRPE

usermod -a -G nagcmd nagios

可以建一个hostgroup.cfg文件来定义主机组文件内容如下:

定义联系人,设置联系人的文件名是contacts.cfg 系统默认就存在,我们只要修改就行了文件内容如下:

由于Nagios主程序只是提供一个运行框架,其具体监控是靠运行在其下的插件完成的,所以Nagios插件是必须安装的。

安装的机器上必须有一个WEB服务,本文是在Nginx环境上安装的。下载nagios主程序和相关插件程序包

/usr/local/nagios/libexec/check_nrpe -H localhost

groupadd nagcmd

chmod 755 /usr/local/nginx/start_perl_cgi.sh

5、配置nagios

1、创建Nagios用户及组

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

define service{         use                             local-service,srv-pnp               host_name                       WEB1         service_description             Root Partition         check_command                   check_nrpe!check_disk         check_period            24x7         max_check_attempts      4         normal_check_interval   1         retry_check_interval    1         contact_groups          admins         notification_interval   10         notification_period     24x7         notification_options    w,u,c,r         } 

cd ..

cd ..

2、编译并安装Nagios插件

./configure

方法一:以http://ip方式访问,NGINX配置片断如下

/usr/local/nagios/bin/nagiostats

/usr/sbin/useradd -m -s /sbin/nologin nagios

cd nrpe-2.12

yum -y install libgd2-noxpm libgd2-noxpm-devel

bin/     etc/     sbin/    share/   var/

define hostgroup{      hostgroup_name     DB-servers #主机组名,可以随意      alias          DB Server      members          DB1,DB2 #成员 } 

5.修改 commands.cfg

在service.cfg文件配置如下:

allowed_hosts=192.168.1.108

server   {     listen       80;     server_name  192.168.1.51;     index index.html index.htm index.php;     root  /usr/local/nagios/share;     auth_basic "Nagios Access";     auth_basic_user_file /usr/local/nagios/etc/nagiospasswd;     location ~ .*.(php|php5)?$     {           #fastcgi_pass  unix:/tmp/php-cgi.sock;       fastcgi_pass  127.0.0.1:9000;       fastcgi_index index.php;       include fcgi.conf;     }     location ~ .*.(cgi|pl)?$     {     gzip off;    root   /usr/local/nagios/sbin;     rewrite ^/nagios/cgi-bin/(.*).cgi /$1.cgi break;     fastcgi_pass  unix:/usr/local/nginx/logs/perl-fcgi.sock;     fastcgi_param SCRIPT_FILENAME /usr/local/nagios/sbin$fastcgi_script_name;     fastcgi_index index.cgi;     fastcgi_read_timeout   60;     fastcgi_param  REMOTE_USER        $remote_user;     include fcgi.conf;     auth_basic "Nagios Access";     auth_basic_user_file /usr/local/nagios/etc/nagiospasswd;     }     location /nagios     {     alias /usr/local/nagios/share;     auth_basic "Nagios Access";     auth_basic_user_file /usr/local/nagios/etc/nagiospasswd;       }      } 

1)、先安装FCGI模块

验证NRPE是否正确安装

5、修改NRPE配置文件,让监控主机可以访问被监控主机的NRPE。

/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d

8、安装NRPE

修改SHELL脚本权限

服务端配置完后需要重启nagios服务

nrpe的主配置文件是/usr/local/nagios/etc/nrpe.cfg,在command.cfg文件中定义nrpe的命令

4、启动NRPE

htpasswd -c /usr/local/nagios/etc/nagiospasswd test

建立Nagios账号

注:监控主机上只需要make install-plugin这一步就可以了。监控机上只要有一个check_nrpe插件用于连接被监控端nrpe的daemon就行了。

 系统环境:CentOS release 5.8 x86_64

nrpe重启方法

这个SHELL脚本只是为了方便管理上面的Perl脚本。脚本中的nobody为nginx的运行用户,请据自己的实际情况调整。

被监控机配置好后需要重启nrpe

a)、访问http://www.4webhelp.net/us/password.php生成需要加密数据

killall nrpe

wget http://pkgs.fedoraproject.org/repo/pkgs/pnp4nagios/pnp-0.4.13.tar.gz/20a96f81edba29dcd21215bde4af8b57/pnp-0.4.13.tar.gz tar zxvf  pnp-0.4.13.tar.gz cd pnp-0.4.13 ./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-perfdata-dir=/usr/local/nagios/share/perfdata --with-rrdtool make all make install   make install-config make install-init   cd /usr/local/nagios/etc/pnp cp npcd.cfg-sample npcd.cfg cp rra.cfg-sample rra.cfg cp process_perfdata.cfg-sample process_perfdata.cfg chown nagios.nagios /usr/local/nagios/etc/pnp/ -R 

usermod -a -G nagcmd www

三、安装pnp

define contact{         contact_name                    nagiosadmin    #联系人名           use                            generic-contact               alias                           Nagios Admin          #联系人别名,         email                           [email protected]          #联系人的邮件,nagios就是用这个邮件报警的,可以设置多个由逗号分开 } 

#缺省为127.0.0.1,只能本机访问

1)、配置Nagios Web界面登陆帐号及密码

1,安装perl模块:

通过简单的复制修改就能定义多个主机了。

wget http://search.cpan.org/CPAN/authors/id/F/FL/FLORA/FCGI-0.73.tar.gz tar xvzf FCGI-0.73.tar.gz cd FCGI-0.73 perl Makefile.PL make make install 

b)、创建加密验证文件

tar zxvf nagios-3.2.3.tar.gz cd nagios-3.2.3 ./configure --with-command-group=nagcmd make make all make install make install-init make install-config make install-commandmode #这里是在Nginx下运行Nagios,这一步就不用做了 make install-webconf cd .. 注: make install 用于安装主要的程序、CGI及HTML文件 make install-init 用于生成init启动脚本 make install-config 用于安装示例配置文件 make install-commandmode 用于设置相应的目录权限 make install-webconf 用于安装Apache配置文件 

make install-plugin

7、启动服务

5、配置NGINX

cd nagios-plugins-1.4.15

var–Nagios日志文件、spid 等文件所在的目录

http://www.chlinux.net/perl-fcgi.zip unzip perl-fcgi.zip cp perl-fcgi.pl /usr/local/nginx/ chmod 755 /usr/local/nginx/perl-fcgi.pl 

注:上面的www是Nginx用户所属的组,如有不同请自行调整。

缺省NRPE配置文件中只允许本机访问NRPE的Daemon

3、编译安装Nagios

三、Nagios被控端安装配置

sbin–Nagios cgi文件所在目录,也就是执行外部命令所需文件所在的目录

4、验证程序是否被正确安装

Pnp是一个绘图工具,需要依赖rrdtool软件包

注:如果成功,会返回NRPE的版本号.

验证NRPE是否正确安装

NRPE v2.12   检查是否有类似的输出,如果有就是启动成功,没有就检查配置是否正确

tar zxvf nrpe-2.12.tar.gz cd nrpe-2.12 ./configure make all make install-plugin make install-daemon make install-daemon-config 

Host.cfg文件内容如下

安装GD库(Nagios中的statusmap和trends模块必须)

/usr/local/nginx/start_perl_cgi.sh start

1)、安装前准备

/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg

本文由美洲杯波胆发布于计算机教程,转载请注明出处:【男篮世界杯波胆】Nginx下构建nagios监控平台Na

关键词: