设为首页 收藏本站
查看: 1282|回复: 0

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

[复制链接]

尚未签到

发表于 2019-1-12 14:13:36 | 显示全部楼层 |阅读模式
  一、背景
  鉴于zabbix和cacti的服务分组及图像呈现功能,公司领导以业务最大化稳定为目标导向,对运维部提出“监控系统按服务分组出图实时展现”的功能,运维部属于公司的技术保障支撑部门,面对合理的需求,只能是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默认是带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源码包
[root@nagios nagios-4.1.1]# ls cgi/status.c
cgi/status.c
[root@nagios nagios-4.1.1]# vimcgi/status.c +3598    #修改3598行为如下所示
/*choice add by xuekun 2016-12-23*/
printf("choice");       /*这一列是新加的,复选框列*/
printf("HostStatus");
printf("ServicesActions\n");
[root@nagiosnagios-4.1.1]# vim cgi/status.c +3628    #复选框全选代码,服务下拉菜单代码
/*choice all Begin by xuekun 2016-12-23 */
       printf("\n");
       printf("\n");
       printf("\n", hstgrp->group_name,hstgrp->group_name, hstgrp->group_name);
       printf("\n");
       printf("\n");
       printf("\n");
       printf("Load\n");
       printf("Disk\n");
       printf("PING\n");
       printf("iostat\n");
       printf("traffic\n");
       printf("tcp_stat\n");
       printf("\n");
       printf("\n");
       printf("\n");
       printf("\n");
       printf("\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("\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/nagiosstop      #停掉nagios
[root@nagiosnagios-4.1.1]# cp /usr/local/nagios/sbin/status.cgi /home/xuekun/status.cgi_bak  #备份原有文件
[root@nagios nagios-4.1.1]# /bin/cpcgi/status.cgi /usr/local/nagios/sbin/status.cgi  #替换原有status.cgi
  执行完上述命令,F5刷新nagios 访问页面,然后点击“hostgroup”连接,看看是不是有新发现了呢!!!
  祝你好运!





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-662432-1-1.html 上篇帖子: Nagios 监控部署详解 下篇帖子: nagios通过微信告警(无限制告警条数)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表