nagios分组出图代码实现讲解[1]

一、背景

鉴于zabbix和cacti的服务分组及图像呈现功能,公司领导以业务最大化稳定为目标导向,对运维部提出“监控系统按服务分组出图实时展现”的功能,运维部属于公司的技术保障支撑部门,面对合理的需求,只能是Yes。

二、需求

     监控系统按服务分组出图实时展现

三、软件环境

[[email protected] ~]# cat /etc/redhat-release

CentOS release 6.7 (Final)

[[email protected] ~]# uname -r

2.6.32-573.el6.x86_64

lamp环境及nagios基础环境的软件版本如下图所示:

图1 nagios基础环境所用软件版本

四、需求分析及实现

4.1分组功能

我们现在使用的监控系统是nagios,众所周知,nagios默认是带hosts和servers分组功能的,如下图:

图2 nagios默认的分组功能

在此看到的分组菜单跟nagios4.1.1默认版本稍有差别,这个界面是我们修改过的样式,感兴趣的可以试用下。

主机分组截图如图3所示。

图3 nagios主机分组

图3中我们看到的分组相比修改之前多了一列(choice),不错,这一列是如何增加的,是我们接下来要详细讲解的。

nagios主机分组页面和服务分组页面是由status.cgi页面控制的,所以我们要增加选择列,必须修改nagios的源码包,找到status.c文件,修改并重新编译,然后覆盖现有的status.cgi.

4.1.1修改ngios4.1.1源码包

[[email protected] nagios-4.1.1]# ls cgi/status.c

cgi/status.c

[[email protected] nagios-4.1.1]# vimcgi/status.c +3598    #修改3598行为如下所示

/*choice add by xuekun 2016-12-23*/

printf("<thclass=‘status‘>choice</th>");       /*这一列是新加的,复选框列*/

printf("<thclass=‘status‘>Host</th><th>Status</th>");

printf("<th>Services</th><thclass=‘status‘>Actions</th>\n");

[[email protected]]# vim cgi/status.c +3628    #复选框全选代码,服务下拉菜单代码

/*choice all Begin by xuekun 2016-12-23 */

printf("<tr>\n");

printf("<td>\n");

printf("<input type=\"checkbox\"id=\"check_%s\" name=\"all_%s\"onclick=\"check_all(this,‘%s‘)\" class=\"chec

kbox\"/>\n", hstgrp->group_name,hstgrp->group_name, hstgrp->group_name);

printf("</td>\n");

printf("<td>\n");

printf("<select name=‘groupsrv‘>\n");

printf("<option value=‘Current_Load‘selected=‘‘>Load</option>\n");

printf("<optionvalue=‘Disk_Partition‘>Disk</option>\n");

printf("<option value=‘PING‘>PING</option>\n");

printf("<optionvalue=‘iostat‘>iostat</option>\n");

printf("<optionvalue=‘Check_traffic‘>traffic</option>\n");

printf("<optionvalue=‘check_tcp_stat‘>tcp_stat</option></select>\n");

printf("</td>\n");

printf("<td><input type=‘submit‘value=‘View‘/></td>\n");

printf("<td></td>\n");

printf("<td></td>\n");

printf("</tr>\n");

/*choice all Begin by xuekun 2016-12-23 */

上述两处代码的添加,主要解决了新增复选框列和服务下拉菜单的问题,接下来我们还要通过jquery实现复选框的全选,代码的实现在544行的document_footer函数中,遵循web设计规则,将js放在页面的最后,提高页面加载速度。

void document_footer(void) {

if(embedded == TRUE)

return;

/* include user SSI footer */

include_ssi_files(STATUS_CGI, SSI_FOOTER);

printf("<script type=\"text/javascript\">\n");

printf("function check_all(obj,flag) \n");

printf("{var is_checked =obj.checked;\n");

printf("var checkboxs = $(\"input[flag=‘\"+ flag+\"‘]\");\n");

printf("console.log(is_checked);\n");

printf("checkboxs.each(function(){\n");

printf("var cur_box = $(this);\n");

printf("cur_box.prop(\"checked\", is_checked);\n");

printf("});} </script>\n");

printf("</body>\n");

printf("</html>\n");

return;

}

以上代码修改编写完毕,接下来要做的就是重新编译nagios,命令如下

[[email protected] nagios-4.1.1]# make all      #执行make all命令重新编译nagios

nagios编译完毕,我们要将编译好的status.cgi替换掉/usr/local/nagios/sbin/目录的status.cgi,替换之前记得先将nagios停掉,具体操作如下:

[[email protected] nagios-4.1.1]# /etc/init.d/nagiosstop      #停掉nagios

[[email protected]]# cp /usr/local/nagios/sbin/status.cgi /home/xuekun/status.cgi_bak  #备份原有文件

[[email protected] nagios-4.1.1]# /bin/cpcgi/status.cgi /usr/local/nagios/sbin/status.cgi  #替换原有status.cgi

执行完上述命令,F5刷新nagios 访问页面,然后点击“hostgroup”连接,看看是不是有新发现了呢!!!

祝你好运!

时间: 2024-10-07 06:24:01

nagios分组出图代码实现讲解[1]的相关文章

nagios分组出图代码实现讲解[2]

nagios监控+pnp4出图

Nagios监控系统 By:大官人 一.nagios简介 Nagios是一个监视系统运行状态和网络信息的监视系统.Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等.Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等. 二.nagios功能特点 1.监控网络服务(SMTP.POP3.HTTP.NNTP.PING等): 2.监控主机资源(处理器负荷.磁盘利用率等): 3.简单地插

Linux学习笔记:为Nagios 4.1.1安装出图插件pnp 0.6.25

Nagios 4.1.1的部署安装可参考http://coosh.blog.51cto.com/6334375/1741257 前言: Nagios客户端默认是没有自带出图的插件的,需要另外安装,这里介绍最常见的插件pnp.在老男孩老师的视频中,他所推荐的是0.4版本,并且建议不必选用更新的版本.虽说我同意他的观点,但本着研究学习的精神,我还是安装了最新的0.6.25,安装过程中碰到了很多问题,并一一解决了,这里做一下记录. 前期准备: 安装Nagios和部署这里不再赘述,找到http://do

CentOS7安装nagios并配置出图详解

目录 开始之前 系统环境 监控内容 所需软件包 Centos7重要变化 配置开发环境 同步时间 关闭Selinux 使用CRT上传软件包 安装邮件服务 监控主机安装 常用到的命令 安装nagios所需要的运行环境 增加用户 安装nagios 配置权限 安装插件 安装nrpe 远程主机安装 常用到的命令 配置运行环境 安装nagios-plugin 安装nrpe 启动nrpe. 监控主机安装PNP 配置开发环境 安装php4nagios (版本号为0.6) 配置pnp4nagios 图表展示 问题

JS弹出窗口代码大全(详细整理)

1.弹启一个全屏窗口 复制代码代码如下: <html> <body http://www.jb51.net','脚本之家','fullscreen');">; <b>www.jb51.net</b> </body> </html> 2.弹启一个被F11化后的窗口 复制代码代码如下: <html> <body 'http://www.jb51.net','脚本之家','channelmode');"

监控网站服务质量出图学习后续篇

前面我们已经学习过了,如何收集网站服务质量的一些相关数据,然后通过入库出图,开始打算是用rrdtool做画图,但是经过一段时间的研究,发现echarts出图合理和美观,下面贴出我实时收集到的数据和出图展示部分: 1.数据收集,并且格式化形成字典: #!/usr/bin/env python # -*- coding: utf-8 -*- import os,sys,json import time import sys import pycurl class Test: def __init__

【智能算法】粒子群算法(Particle Swarm Optimization)超详细解析+入门代码实例讲解

喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 算法起源 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源于对鸟群捕食的行为研究 .该算法最初是受到飞鸟集群活动的规律性启发,进而利用群体智能建立的一个简化模型.粒子群算法在对动物集群活动行为观察基础上,利用群体中的个体对信息的共享使整个群体的运动在问题求解空间中产生从无序到有序的演化过程,从而获得最优解.

原生js简单轮播图 代码

在团队带人,突然被人问到轮播图如何实现,进入前端领域有一年多了,但很久没自己写过,一直是用大牛写的插件,今天就写个简单的适合入门者学习的小教程.当然,轮播图的实现原理与设计模式有很多种,我这里讲的是用面向过程函数式编程去实现,相对于面向对象设计模式,代码难免会显得臃肿冗余.但没有面向对象的抽象却很适合新手理解与学习.已经在BAT的同学看到希望少喷点.另外可以多提意见. 轮播图的原理: 一系列的大小相等的图片平铺,利用CSS布局只显示一张图片,其余隐藏.通过计算偏移量利用定时器实现自动播放,或通过

支持鼠标滚轮图片自适应的焦点图代码等

支持鼠标滚轮图片自适应的焦点图代码 支持鼠标滚轮图片自适应的焦点图代码,纯JS构建,可用键盘左右键切换图片,倒序回滚,另外鼠标停止响应后可自动播放功能,兼容主流浏览器,懒人图库推荐下载! 使用方法: 1.在head区域引入样式表文件lrtk.css 2.在head区域引入lrtk.js 3.在你的网页中加入<!-- 代码 开始 --><!-- 代码 结束 -->注释区域代码即可 4.修改间隔时间和自动播放倒计时时间,请打开lrtk.js根据注释提示修改 5.去掉首页文字提示后,请注