zabbix快速創建篩選(sql操作)

    公司由于大量業務調整,尤其是服務器功能和性能的轉變,監控也跟隨這變化,其中操作最為繁瑣的當數zabbix篩選(相信各位從頁面添加的都深感痛苦)于是有了本文。

    本文采用的方法是sql操作(由于本人不會php等,無法寫程序直接調用官方api,所以,嘿嘿,不解釋,同時也希望各路大大多多交流。)

    本文所述的腳本屬于beta版,其中很多部分可以和sql,php,python進行結合,各位可以進行多種嘗試。如果該腳本有任何bug,請及時聯系我,同時我也會針對該版本進行更新,還望各位多多支持。

——————————————-Bash內容————————————————

#!/bin/sh

:<< Statement
Function : To Quick Create zabbix Screen
Version : 1.0-beta
Mail : 714810243@qq.com
Date : 2015-12-16
Bug     : 1.該腳本僅適用于zabbix-2.0.8(開發環境是該版本,其他版本沒測試過,但是按照官方文檔說明,應該適用到2.4.x >_< )
       2.該腳本目前只適用于傳輸一個key,無法支持多個,同一個分組必須要都含有該key值,如果無該key,那么,無key的機器將無法加入篩選
       3.目前該腳本僅僅適用于有圖形的選項,對于簡單圖形等,不支持

       4.本文中的函數是準備用來進行第二版的擴展,如果不需要,可以刪除

        該腳本可以和數據庫,php等結合使用,目前是beta版,其功能還有待開發與完善。
Statement

[ -n ${DEBUG:-''} ] && set -v

DBUser=root
DBPasswd=sy381
DBHost=localhost

HostGroupName=$1
ScreenName=$2
Screenkey=$3

#插入screen
function InsertScreen (){
#查詢組中主機數量,以便插入行和列的信息
Host_Num=`/usr/local/mysql-5.1.56/bin/mysql -u${DBUser} -p${DBPasswd} -h${DBHost} -e"
    SELECT
        count(*)
    FROM
        zabbix.hosts,
        zabbix.groups,
        zabbix.hosts_groups
    WHERE
        zabbix.hosts.hostid = zabbix.hosts_groups.hostid
    AND zabbix.hosts_groups.groupid = zabbix.groups.groupid
    AND zabbix.groups.name = '$HostGroupName';" | awk 'NR==2{print}'`

if [ $[$Host_Num%2] != '0' ] ;then
    LineNum=$[$Host_Num/2+1]
else
    LineNum=$[$Host_Num/2]
fi

LastScreenId=`/usr/local/mysql-5.1.56/bin/mysql -u${DBUser} -p${DBPasswd} -h${DBHost} -e"
    SELECT
        zabbix.screens.screenid
    FROM
        zabbix.screens
    ORDER BY
        zabbix.screens.screenid DESC LIMIT 1;" | awk 'NR==2{print}'`
    
ScreenId=$[$LastScreenId+1]

/usr/local/mysql-5.1.56/bin/mysql -u${DBUser} -p${DBPasswd} -h${DBHost} -e"
    INSERT INTO zabbix.screens (
        zabbix.screens.screenid,
        zabbix.screens.name,
        zabbix.screens.hsize,
        zabbix.screens.vsize
    )
    VALUES
        ('$ScreenId','$ScreenName', '2', '${LineNum}');"

}

#插入screen中的items
function InsertScreenitems (){

ScreenGrap=`/usr/local/mysql-5.1.56/bin/mysql -u${DBUser} -p${DBPasswd} -h${DBHost} -e"
        SELECT
            zabbix.graphs.graphid
    FROM
        zabbix.hosts_groups,
        zabbix.hosts,
        zabbix.groups,
        zabbix.items,
        zabbix.graphs_items,
        zabbix.graphs
    WHERE
        zabbix.groups.groupid = zabbix.hosts_groups.groupid
    AND zabbix.hosts_groups.hostid = zabbix.hosts.hostid
    AND zabbix.hosts.hostid = zabbix.items.hostid
    AND zabbix.graphs_items.itemid = zabbix.items.itemid
    AND zabbix.graphs.graphid = zabbix.graphs_items.graphid
    AND zabbix.groups.name = '$HostGroupName'
    AND ( zabbix.items.key_ LIKE '%$Screenkey%')  GROUP BY zabbix.graphs.graphid;"| awk 'NR!=1{print}'`

Screennum=`/usr/local/mysql-5.1.56/bin/mysql -u${DBUser} -p${DBPasswd} -h${DBHost} -e"
    SELECT
        zabbix.screens.screenid
    FROM
        zabbix.screens
    WHERE
        zabbix.screens.name = '$ScreenName';"| awk 'NR!=1{print}'`

x=0
y=0
        
for screenresource in $ScreenGrap ; do
#    echo $screenresource
    LastScreenitemsnum=`/usr/local/mysql-5.1.56/bin/mysql -u${DBUser} -p${DBPasswd} -h${DBHost} -e"
        SELECT
            zabbix.screens_items.screenitemid
        FROM
            zabbix.screens_items
        ORDER BY
            zabbix.screens_items.screenitemid DESC LIMIT 1;"| awk 'NR==2{print}'`
            
    Screenitemsnum=$[$LastScreenitemsnum+1]
    
    x=$[$x%2]
#    echo "$Screenitemsnum $Screennum 0 $screenresource 500 100 $x $y 1 1 0 0 0 0 0 0"
    /usr/local/mysql-5.1.56/bin/mysql -u${DBUser} -p${DBPasswd} -h${DBHost} -e"
    INSERT INTO
        zabbix.screens_items
    VALUES
        ('$Screenitemsnum','$Screennum','0','$screenresource','500','100','$x','$y','1','1','0','0','0','0','','0','0');"
    y=$[$y+$x]
    x=$[$x+1]
    
done

}
InsertScreen
InsertScreenitems
———————————————————————————–

使用方法  : sh shellname.sh  groupname  screenname  itemskey

            ex:  sh addscreen.sh 01-銀行業務03  01-銀行業務03-流量  bond0

那么,該腳本會生成名為01-銀行業務03-流量的篩選,并將01-銀行業務03分組中的所有機器(有bond0)的bond0網卡流量納入篩選中。

歡迎各位多多交流和轉載,轉載還請保留出處,>.<


原創文章,作者:graysky,如若轉載,請注明出處:http://www.www58058.com/10127

(1)
grayskygraysky
上一篇 2015-12-16
下一篇 2015-12-18

相關推薦

  • Linux基礎 sed命令詳解

    概述 sed是一個流編輯器(Stream EDitor)。主要用于自動編輯一個或多個文件;簡化對文件的反復操作;編寫轉換程序等。本文主要講述了: sed工作原理 sed命令格式及常用選項 應用實例 高級編輯命令 sed工作原理 sed命令運行過程中維護著兩個緩沖區,一個是活動的“模式空間(pattern space)”,另一個是起輔助作用的“暫存緩沖區(ho…

    Linux干貨 2016-08-12
  • bash腳本之for循環和while循環及包管理

    一.概述 上一章剩余內容 壓縮工具 cpio 復制從或到文件 cpio命令是通過重定向的方式將文件進行打包備份,還原恢復的工具,它可以解壓以“.cpio”或者“.tar”結尾的文件。 cpio[選項] > 文件名或者設備名 cpio[選項] < 文件名或者設備名 選項 -o 將文件拷貝打包成文件或者將文件輸出到設備上 -i解包,將打包文件解壓或將…

    Linux干貨 2016-08-24
  • centos7源碼編譯安裝Apache2.4.25服務

    ?一、源碼包下載 ?二、安裝開發環境以及編譯環境 ?三、編譯安裝以及報錯排查 ?四、調試Apache服務 前言: 本文主要介紹了在Centos7環境中如何通過源碼編譯的方式安裝Apache服務(也就是我們的httpd服務)由于本文整理時間有限,所以難免有些紕漏之處,歡迎大家在閱讀后在評論區指出,本人看到會在第一時間修改文中錯誤的地方。 為什么要進行源碼編譯安…

    2017-04-22
  • 實現基于MYSQL驗證的vsftpd虛擬用戶

    馬哥教育面授21期 運維 vsftpd MySQL 說明:本實驗在兩臺CentOS主機上實現,一臺做為FTP服務器,一臺做數據庫服務器 一、安裝所需要包和包組: 在數據庫服務器上安裝包: yum –y install mariadb-server mariadb-devel systemctl start mariad…

    Linux干貨 2016-12-21
  • 關于LNMP架構的網站遷移的事(第一版)

    大家好: 今天分享下在生產環境中如何對LNMP架構的兩臺服務器群的網站進行遷移及其操作思路: 1– 首先要對老服務器上的nginx,PHP, mysql的版本及其安裝方式要徹底了解。 特別對php來說,用php -m 來了解老服務器上php所安裝過的插件。 [azureuser@cnux17 ~]$ php -m [PHP Modules] ap…

    Linux干貨 2016-12-26
  •         linux 文件顏色的含義:         藍色代表目錄         綠色代表可執行文件 &nbs…

    Linux干貨 2016-12-05

評論列表(3條)

  • stanley
    stanley 2015-12-19 20:02

    腳本寫的不錯,贊。內容上結合些樣式更聽睛

  • shenfang
    shenfang 2016-10-27 17:50

    在zabbix 2.2.11版本中運行這個腳本最后在插入screens_items表時少一個字段在最后加一個”空字段值就可以了,把(‘$Screenitemsnum’,’$Screennum’,’0′,’$screenresource’,’500′,’100′,’$x’,’$y’,’1′,’1′,’0′,’0′,’0′,’0′,”,’0′,’0′)改為
    (‘$Screenitemsnum’,’$Screennum’,’0′,’$screenresource’,’500′,’100′,’$x’,’$y’,’1′,’1′,’0′,’0′,’0′,’0′,”,’0′,’0′,”)

  • shenfang
    shenfang 2016-10-27 17:50

    為了寫個評論注冊個賬號。。。。不開心。。。

欧美性久久久久