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

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

一、背景

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

 

二、需求

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

 

三、软件环境


[root@nagios ~]# cat /etc/redhat-release

CentOS release 6.7 (Final)

[root@nagios ~]# uname -r

2.6.32-573.el6.x86_64

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


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

 

四、需求分析及实现

    4.1分组功能

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


2 nagios默认的分组功能


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

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


3 nagios主机分组

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

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

    4.1.1 修改ngios4.1.1源码包

[root@nagios nagios-4.1.1]# ls cgi/status.c

cgi/status.c

[root@nagios nagios-4.1.1]# vim cgi/status.c +3598    #修改3598行为如下所示

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

printf("choice");       /*这一列是新加的,复选框列*/

printf("HostStatus");

printf("ServicesActions\n");

 [root@nagios nagios-4.1.1]# vim cgi/status.c +3628    #复选框全选代码,服务下拉菜单代码

 
/*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("\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("});} \n");

        printf("\n");

        printf("\n");

 

        return;

}

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

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

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

[root@nagios nagios-4.1.1]# /etc/init.d/nagios stop      #停掉nagios

[root@nagios nagios-4.1.1]# cp /usr/local/nagios/sbin/status.cgi /home/xuekun/status.cgi_bak  #备份原有文件

[root@nagios nagios-4.1.1]# /bin/cp cgi/status.cgi /usr/local/nagios/sbin/status.cgi  #替换原有status.cgi

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

祝你好运!



目录
相关文章
|
7月前
|
算法 异构计算
基于直方图的图像曝光量分析FPGA实现,包含tb测试文件和MATLAB辅助验证
该内容包括了算法的运行效果展示、软件版本信息、理论概述和核心程序代码。在正常图像中,`checkb`位于`f192b`和`f250b`之间,而多度曝光图像中`checkb`超出此范围,判断为曝光过度。使用的软件为Vivado 2019.2和MATLAB 2022a。理论依据未详细给出,但提及主要方法。提供的Verilog代码段用于处理图像数据,包括读取文件、时钟控制及图像histogram计算等,其中模块`im_hist`似乎是关键部分。
|
7月前
|
算法 TensorFlow 算法框架/工具
基于直方图的图像阈值计算和分割算法FPGA实现,包含tb测试文件和MATLAB辅助验证
这是一个关于图像处理的算法实现摘要,主要包括四部分:展示了四张算法运行的效果图;提到了使用的软件版本为VIVADO 2019.2和matlab 2022a;介绍了算法理论,即基于直方图的图像阈值分割,通过灰度直方图分布选取阈值来区分图像区域;并提供了部分Verilog代码,该代码读取图像数据,进行处理,并输出结果到"result.txt"以供MATLAB显示图像分割效果。
|
7月前
|
数据可视化
R语言对布丰投针(蒲丰投针)实验进行模拟和动态可视化生成GIF动画
R语言对布丰投针(蒲丰投针)实验进行模拟和动态可视化生成GIF动画
|
7月前
|
机器学习/深度学习 人工智能 文字识别
【学习打卡03】可解释机器学习笔记之CAM类激活热力图
【学习打卡03】可解释机器学习笔记之CAM类激活热力图
|
Python
matplotlib绘制雷达图之基本配置——万能模板案例
matplotlib绘制雷达图之基本配置——万能模板案例
1109 0
matplotlib绘制雷达图之基本配置——万能模板案例
|
数据挖掘
白话Elasticsearch35-深入聚合数据分析之案例实战更多metrics用法:统计每种颜色电视最大最小价格
白话Elasticsearch35-深入聚合数据分析之案例实战更多metrics用法:统计每种颜色电视最大最小价格
96 0
|
Python
②matplotlib绘制直方图之基本配置——万能模板案例
matplotlib绘制直方图之基本配置——万能模板案例
228 0
②matplotlib绘制直方图之基本配置——万能模板案例
|
数据可视化 数据库 Python
①matplotlib绘制直方图之基本配置——万能模板案例
matplotlib绘制直方图之基本配置——万能模板案例
329 0
①matplotlib绘制直方图之基本配置——万能模板案例