天天看點

nagios分組出圖代碼實作講解[1]

<b>一、背景</b>

    鑒于zabbix和cacti的服務分組及圖像呈現功能,公司上司以業務最大化穩定為目标導向,對運維部提出“監控系統按服務分組出圖實時展現”的功能,運維部屬于公司的技術保障支撐部門,面對合理的需求,隻能是Yes。

<b>二、需求</b>

<b>     </b>監控系統按服務分組出圖實時展現

<b>三、軟體環境</b>

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

CentOS release 6.7 (Final)

[root@nagios ~]# uname -r

2.6.32-573.el6.x86_64

lamp環境及nagios基礎環境的軟體版本如下圖所示:

nagios分組出圖代碼實作講解[1]

圖1 nagios基礎環境所用軟體版本

<b> </b>

<b>四、需求分析及實作</b>

4.1分組功能

       我們現在使用的監控系統是nagios,衆所周知,nagios預設是帶hosts和servers分組功能的,如下圖:

nagios分組出圖代碼實作講解[1]

圖2 nagios預設的分組功能

在此看到的分組菜單跟nagios4.1.1預設版本稍有差别,這個界面是我們修改過的樣式,感興趣的可以試用下。

    主機分組截圖如圖3所示。

nagios分組出圖代碼實作講解[1]

圖3 nagios主機分組

圖3中我們看到的分組相比修改之前多了一列(choice),不錯,這一列是如何增加的,是我們接下來要詳細講解的。

     nagios主機分組頁面和服務分組頁面是由status.cgi頁面控制的,是以我們要增加選擇列,必須修改nagios的源碼包,找到status.c檔案,修改并重新編譯,然後覆寫現有的status.cgi.

    <b>4.1.1 </b><b>修改ngios4.1.1</b><b>源碼包</b>

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

cgi/status.c

[root@nagios nagios-4.1.1]# vim

cgi/status.c +3598    <b>#</b><b>修改</b><b>3598</b><b>行為如下所示</b><b></b>

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

printf("choice");       /*<b>這一列是新加的,複選框列</b>*/

printf("HostStatus");

printf("ServicesActions\n");

 [root@nagios

nagios-4.1.1]# vim cgi/status.c +3628    <b>#</b><b>複選框全選代碼,服務下拉菜單代碼</b>

nagios分組出圖代碼實作講解[1]
nagios分組出圖代碼實作講解[1]

/*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");

return;

}

以上代碼修改編寫完畢,接下來要做的就是重新編譯nagios,指令如下

[root@nagios nagios-4.1.1]# make all      <b>#</b><b>執行</b><b>make all</b><b>指令重新編譯</b><b>nagios</b>

    nagios編譯完畢,我們要将編譯好的status.cgi替換掉/usr/local/nagios/sbin/目錄的status.cgi,替換之前記得先将nagios停掉,具體操作如下:

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

stop      <b>#</b><b>停掉</b><b>nagios</b>

[root@nagios

nagios-4.1.1]# cp /usr/local/nagios/sbin/status.cgi /home/xuekun/status.cgi_bak  <b>#</b><b>備份原有檔案</b>

[root@nagios nagios-4.1.1]# /bin/cp

cgi/status.cgi /usr/local/nagios/sbin/status.cgi  <b>#</b><b>替換原有</b><b>status.cgi</b>

執行完上述指令,F5重新整理nagios 通路頁面,然後點選“hostgroup”連接配接,看看是不是有新發現了呢!!!

祝你好運!

nagios分組出圖代碼實作講解[1]