欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

深入淺出Zabbix3.0--第十四章靈活的腳本擴展

第十四章 靈活的腳本擴展

學習到本章時,相信你已經(jīng)掌握了Zabbix服務器的各個組件是如何工作的,以及通過Zabbix收集數(shù)據(jù)的方法,但在實際環(huán)境中,你可能會面對一個大型的、異構、復雜的基礎設施,你會發(fā)現(xiàn)有很多不同的應用平臺和系統(tǒng),服務器和網(wǎng)絡設備,還有可能有很多定制的設備和專用的硬件產(chǎn)品,這些設備的共同點是都提供網(wǎng)路接口。對于常規(guī)的服務器及網(wǎng)絡設備可以輕松的使用Zabbix提供的監(jiān)控方式收集數(shù)據(jù),但是還是會有一些應用系統(tǒng)或設備無法通過Zabbix提供的標準查詢方法或SNMP收集監(jiān)控數(shù)據(jù)。

目前創(chuàng)新互聯(lián)公司已為1000多家的企業(yè)提供了網(wǎng)站建設、域名、網(wǎng)站空間網(wǎng)站托管運營、企業(yè)網(wǎng)站設計、柯橋網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

假設在實際環(huán)境中用一個用戶定制的設備,只能通過特定的客戶端軟件能夠收集設備內(nèi)部溫度傳感器提供的當前溫度,這是一個關鍵性的指標現(xiàn)在必須要通過Zabbix進行監(jiān)控。在這種場景下,必須通過腳本調(diào)用客戶端軟件收集監(jiān)控數(shù)據(jù)。另外,還有很多應用系統(tǒng)如Nginx通過stub_status模塊提供運行狀態(tài)信息,redis通過命令redis-cli info可以收集系統(tǒng)的運行狀態(tài)。

Zabbix為了滿足這類場景,提供了以下幾種方式收集監(jiān)控數(shù)據(jù):

  • 在Zabbix server中運行腳本收集監(jiān)控數(shù)據(jù)(External checks)

  • 在Zabbix agent中運行腳本收集監(jiān)控數(shù)據(jù)(UserParameter)

  • 在Zabbix server或agent中運行腳本收集監(jiān)控數(shù)據(jù)(Zabbix_sender)

  • 依據(jù)Zabbix協(xié)議自行開發(fā)工具收集監(jiān)控數(shù)據(jù)

    近日完成《深入淺出?zabbix 4.0》視頻教程的錄制并正式發(fā)布,該教程基于 zabbix 4.2 ,對Zabbix進行全面講解。歡迎大家圍觀。課程鏈接:https://edu.51cto.com/sd/ce000?

    14.1 Zabbix Server中運行腳本

在實際環(huán)境中,你可能無法在監(jiān)控設備中安裝標準的Zabbix agent收集監(jiān)控數(shù)據(jù),通過Externalchecks監(jiān)控方式,可以在Zabbix server上執(zhí)行腳本或二進制程序收集監(jiān)控數(shù)據(jù)。

在使用這種方式前,需要在zabbix-server.conf配置文件中定義腳本或程序的路徑,設置正確的權限能夠讓Zabbix執(zhí)行。

# vi /etc/zabbix/zabbix-server.conf

ExternalScripts=/usr/lib/zabbix/externalscripts

ExternalScripts 可以使用系統(tǒng)標準的路徑,你也可以指定其他路徑。在這里我們可以把腳本或程序放在這里,并設置相應的權限。

使用External checks時需要注意以下幾點:

  • 在Key語法中支持多個逗號分隔的參數(shù)。

  • 在腳本命令中支持用戶定義的宏變量。

  • External checks通過標準輸出(STDOUT)將錯誤返回,可以在觸發(fā)器中進行管理。

  • 支持多行的返回值。

通過External checks可以完成很復雜的監(jiān)控任務,但是在實際環(huán)境中使用時要注意服務器性能的問題,每一次腳本執(zhí)行時需要Zabbix server啟動一個進程,當有很多腳本運行時會降低Zabbix server的性能。

具體創(chuàng)建External checks監(jiān)控方式的監(jiān)控項步驟請參考第三章。

?

14.2 Zabbix agent中運行腳本

為了防止在服務器上運行腳本占用大量資源,影響服務器性能,Zabbix提供了一種方法即UserParameter,我們可以把腳本放到Zabbix agent上運行。

UserParameter是在agent配置文件中定義的。語法如下:

UserParameter=<key>,<command>

User parameter由兩部分組成,一部分是Key,在這里定義的Key在Zabbix server前端頁面中創(chuàng)建item時會用到,并且在引用這個Key的主機中名稱必須是唯一的,Key的名稱中我們可以使用點或下劃線,但不能有空格或其他特殊字符。另一部分是command,是一個可執(zhí)行的命令或腳本。

在User parameter中定義key時,我們也可以設定參數(shù),這些參數(shù)可以傳遞給命令或腳本。語法是:

UserParameter=key[*],command

[*]表示可以傳遞多個參數(shù),對應[*]中參數(shù)的位置,在command中可以使用$1,$2,$3 …$9來引用參數(shù),$0代表command本身。如果在使用的命令行中引用$2這種參數(shù),那就需要變成$$2,例如:awk '{print $$2}',在這種情況下$$2實際上引用的是$2參數(shù)。另外,像$2這些參數(shù)你即使用雙引號(”)或單引號(‘)括起來,它也會正常解析相應位置的參數(shù)。

通過Zabbix agent支持User parameter中的命令,最多返回512KB大小的數(shù)據(jù)。如果達到agent配置文件中定義的超時時間,這個User parameter進程會被殺掉。Userparameter返回的文本中(type ofinformation為character、log或text)可以包括空格,返回值無效時item將變成unsupported。

為了更好的理解UserParameter,下面舉幾個例子。

  • UserParameter=ping,echo 1

總是返回1。

  • UserParameter=ping[*],echo $1

ping[0] 將返回 '0';ping[aaa] 將返回 'aaa'。

  • UserParameter=MySQL.ping,mysqladmin–uroot -p<password> ping | grep -c alive

如果MySQL運行正常返回1,否則返回0。

  • UserParameter=mysql.ping[*],mysqladmin-u$1 -p$2 ping | grep -c alive

mysql.ping[zabbix,our_password] 會把用戶名和密碼傳遞到命令行中參數(shù)引用的位置。

  • UserParameter=wc[*],grep -c"$2" $1

wc[/etc/services,zabbix],計算在services文件中包含zabbix的行數(shù),在這里$2用雙引號括起來后,在命令行中還是會正確引用相應位置的參數(shù)。

通常的做法是:

1、?編輯zabbix_agentd.conf配置文件,配置UserParameter選項。比如:

UserParameter= process.number[*], ps -e |grep $1 | wc -l

2、?使用zabbix-agentd -t 測試定義的UserParameter

# zabbix_agentd -t process.number[httpd]

process.number?????????????????????[t|8]

3、?保存agent 配置文件,重啟agent.

# systemctl restart zabbix-agent.service

4、?使用zabbix_get工具測試:

# zabbix_get -s 127.0.0.1 -k process.number[httpd]

8

5、?在Zabbix server中的主機上創(chuàng)建一個新的監(jiān)控項。類型可以是Zabbix agent或者Zabbix agent(active)。如下圖14-1所示。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?深入淺出Zabbix 3.0 -- 第十四章 靈活的腳本擴展

圖 14-1

6、?打開Monitoring --> Latest data 頁面,稍等片刻后你就能看到httpd process number這個監(jiān)控項的返回值了。

?

14.3 使用zabbix_sender發(fā)送數(shù)據(jù)

Zabbix也提供了工具用來發(fā)送數(shù)據(jù)到server,這個工具就是zabbix_sender。使用zabbix_sender之前,需要在Zabbix server前端頁面中添加類型為Zabbixtrapper的監(jiān)控項。如下圖14-2所示。

深入淺出Zabbix 3.0 -- 第十四章 靈活的腳本擴展

圖 14-2

Zabbix_sender用法可以通過 -h 閱讀幫助文件,也可以瀏覽Zabbix網(wǎng)站的頁面https://www.zabbix.com/documentation/3.0/manpages/zabbix_sender。下面介紹一些主要的參數(shù)和用法。

參數(shù)說明:

  • -c, --config config-file:Zabbix sender從agent配置文件中讀取有關server的信息,如果不使用這個參數(shù),默認Zabbixsender是不讀取配置文件的。config-file必須指定配置文件的絕對路徑。目前僅支持Hostname、ServerActive和SourceIP,ServerActive配置有多個服務器時將使用第一個服務器的配置。

  • -z, --zabbix-server server:Zabbix server的主機名或IP地址。如果是使用proxy進行監(jiān)控,這里應該是proxy的主機名或IP地址。如果和--config一起使用,當前該參數(shù)的設置將覆蓋配置文件中ServerActive的第一個服務器配置的IP或主機名。

  • -p, --port port:Zabbix server trapper運行的端口,默認是10051。如果和--config一起使用,當前該參數(shù)的設置將覆蓋配置文件中ServerActive的第一個服務器配置的端口。

  • -I, --source-address IP-address:指定源IP地址。如果和--config一起使用,當前該參數(shù)的設置將覆蓋配置文件中SourceIP的設置。

  • -s, --host host:指定接收監(jiān)控項數(shù)據(jù)的主機名稱,在這里不能使用主機IP或DNS主機名。如果和--config一起使用,當前該參數(shù)的設置將覆蓋配置文件中Hostname的設置。

  • -k, --key key:指定發(fā)送數(shù)據(jù)的監(jiān)控項的key。

  • -o, --value value:指定監(jiān)控項的值。

  • -i, --input-file input-file:從文件中加載發(fā)送的數(shù)據(jù)。指定input-file為 – 時將從標準輸入讀取數(shù)據(jù)。輸入文件的內(nèi)容每行的格式為<hostname> <key> <value>,每個參數(shù)直接用空格分隔。其中hostname為Zabbix server前端頁面中添加的主機名稱,key為監(jiān)控項item key,value為監(jiān)控項的值。如果hostname指定為– 時,hostname將使用agent配置文件中的Hostname或—host參數(shù)。例如:

- iostat.avgrq-sz[sda] 39.48? # 使用--host或agent配置文件中Hostname

Server1 db.connections 60?# 主機server1,監(jiān)控項的key為db.connections,值為60

在Zabbix server前端頁面中必須設置正確的item的值類型,Zabbix sender每次連接能夠發(fā)送最多250個值。

下面舉個監(jiān)控磁盤IO的例子。在本例中通過iostat(sysstat的版本為10.1.5)收集磁盤數(shù)據(jù),在模板中定義自動發(fā)現(xiàn)規(guī)則和item、graph、trigger原型,當模板鏈接到主機后,自動創(chuàng)建item、graph和trigger。在模板中創(chuàng)建一個item,定期收集監(jiān)控數(shù)據(jù)。

1、?定義UserParameter

# vi /etc/zabbix/zabbix_agentd.d/userparameter_io.conf

UserParameter = iostat_status,/etc/zabbix/script/io_stat.sh

UserParameter = iostat.discovery_disks,/etc/zabbix/script/io_stat.shdisks

2、?編輯腳本文件

# vi /etc/zabbix/script/io_stat.sh

#!/bin/bash

?

if [ -z $1 ]; then

RespStr=$(/usr/bin/iostat -dkxy 2>/dev/null)

(cat <<EOF

$RespStr

EOF

?) |? awk 'BEGIN {split("disk rrqm_s wrqm_sr_s w_s rkB_s wkB_s avgrq-sz avgqu-sz await r_await w_await svct util",aParNames)}

?? $1 ~ /^[hsv]d[a-z]$/ {print$0;

?? if(NF == 14)

???? for(i = 2; i <= 14;i++) print "- iostat."aParNames[i]"["$1"]", $i

?}' | /usr/bin/zabbix_sender--config /etc/zabbix/zabbix_agentd.conf?--input-file - >/dev/null 2>&1

?echo 1

?exit 0

elif [ "$1" = 'disks' ]; then

?DiskStr=`/usr/bin/iostat -d |awk '$1 ~ /^[hsv]d[a-z]$/ {print $1}'`

?es=''

?for disk in $DiskStr; do

??OutStr="$OutStr$es{\"{#DISKNAME}\":\"$disk\"}"

?? es=","

?done

?echo -e"{\"data\":[$OutStr]}"

fi

3、?創(chuàng)建模板Template IO Trap。如下圖14-3所示。深入淺出Zabbix 3.0 -- 第十四章 靈活的腳本擴展

圖 14-3

4、?在模板中添加一個名稱為IO的application。

5、?創(chuàng)建一個名稱為Status的監(jiān)控項,如下圖14-4所示。

?

深入淺出Zabbix 3.0 -- 第十四章 靈活的腳本擴展

圖 14-4

6、?創(chuàng)建一個觸發(fā)器,如下圖14-5所示。

深入淺出Zabbix 3.0 -- 第十四章 靈活的腳本擴展

圖 14-5

7、?創(chuàng)建自動發(fā)現(xiàn)規(guī)則,定期調(diào)用腳本發(fā)現(xiàn)磁盤。在腳本中自動生成JOSN格式的數(shù)據(jù),例如:

{"data":

[

{"{#DISKNAME}":"sda"},

{"{#DISKNAME}":"sdb"}

]

}

如下圖14-6所示。

深入淺出Zabbix 3.0 -- 第十四章 靈活的腳本擴展

圖 14-6

?

8、?創(chuàng)建item原型。在第5步中創(chuàng)建的監(jiān)控項會定期調(diào)用腳本,腳本中根據(jù)iostat命令的返回結果自動生成的Zabbixsender需要的輸入文件。創(chuàng)建item原型時使用輸入文件中的key創(chuàng)建類型為Zabbix trapper的監(jiān)控項。輸入文件的內(nèi)容格式如下:

-iostat.rrqm_s[sda] 0.00

-iostat.wrqm_s[sda] 0.02

-iostat.r_s[sda] 0.12

-iostat.w_s[sda] 5.17

-iostat.rkB_s[sda] 4.30

-iostat.wkB_s[sda] 99.98

-iostat.avgrq-sz[sda] 39.48

-iostat.avgqu-sz[sda] 0.01

-iostat.await[sda] 1.21

-iostat.r_await[sda] 2.18

-iostat.w_await[sda] 1.19

-iostat.svct[sda] 0.66

-iostat.util[sda] 0.35

使用輸入文件中的key參數(shù)創(chuàng)建item原型,如下圖14-7所示。

深入淺出Zabbix 3.0 -- 第十四章 靈活的腳本擴展

圖 14-7

創(chuàng)建的item原型列表如下圖14-8所示。

深入淺出Zabbix 3.0 -- 第十四章 靈活的腳本擴展

圖 14-8

9、?創(chuàng)建graph原型,如下圖14-9所示。

深入淺出Zabbix 3.0 -- 第十四章 靈活的腳本擴展

圖 14-9

graph原型列表如下圖14-10所示。

深入淺出Zabbix 3.0 -- 第十四章 靈活的腳本擴展

圖 14-10

10、??將模板Template IOTrap鏈接到主機,然后到Latest data中查看監(jiān)控數(shù)據(jù),如下圖14-11所示。

深入淺出Zabbix 3.0 -- 第十四章 靈活的腳本擴展

圖 14-11

Zabbix sender的執(zhí)行在例子中我們通過一個監(jiān)控項的查詢來調(diào)用腳本,實際上你也可以通過cron來運行腳本。通過定義監(jiān)控項的方式管理比較方便,Update interval (in sec)等設置的改變都可以在前端頁面中完成,不需要對監(jiān)控主機做任何操作。

深入淺出Zabbix 3.0 -- 第十四章 靈活的腳本擴展

出自?http://ustogether.blog.51cto.com/8236854/1929788,如需轉(zhuǎn)載請與作者聯(lián)系。

分享文章:深入淺出Zabbix3.0--第十四章靈活的腳本擴展
文章URL:http://chinadenli.net/article18/jpsggp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣網(wǎng)站制作企業(yè)建站網(wǎng)站排名微信小程序手機網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站