日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

zabbix磁盘的自动发现与磁盘指标监控

發(fā)布時(shí)間:2023/12/1 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zabbix磁盘的自动发现与磁盘指标监控 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

由于最近項(xiàng)目上需要對(duì)服務(wù)器監(jiān)控進(jìn)行規(guī)范化監(jiān)控,再磁盤(pán)這塊有幾種方式

1.如果每臺(tái)設(shè)備的磁盤(pán)是一樣的 比如都有vda,vdb兩塊磁盤(pán)那么可以采用

  1.1 每臺(tái)客戶端寫(xiě)腳本,服務(wù)端每臺(tái)設(shè)備去加上監(jiān)控項(xiàng)(------最次的手段-------------)

  1.2 客戶端批量部署腳本,服務(wù)端直接把監(jiān)控項(xiàng)部署到模板里面去。這樣所有使用了模板的設(shè)備都可以加上這個(gè)監(jiān)控項(xiàng)目了? 但是必須注意,這樣必須是所有設(shè)備磁盤(pán)都一樣的情況

2.如果每臺(tái)設(shè)備的磁盤(pán)數(shù)目不一樣,就只能采用客戶端定義腳本,服務(wù)端單獨(dú)針對(duì)每臺(tái)設(shè)備添加獨(dú)特的監(jiān)控項(xiàng)

3.利用python 腳本添加(平庸選擇)

4.上面的方法都是不是那么智能化,其實(shí)zabbix為我們提供了一個(gè)自動(dòng)發(fā)現(xiàn)規(guī)則(注意 不是設(shè)備的自動(dòng)發(fā)現(xiàn) ),再模板的下方自動(dòng)發(fā)現(xiàn)規(guī)則:就是下圖這個(gè)東西

?

?

他能實(shí)現(xiàn)什么功能呢? 他提供一套發(fā)現(xiàn)與處理機(jī)制!!!!那么真多磁盤(pán)呢?他可以實(shí)現(xiàn)自動(dòng)發(fā)現(xiàn)主機(jī)上面的磁盤(pán),并且為每個(gè)磁盤(pán)加上監(jiān)控項(xiàng)目,后續(xù)還可以自動(dòng)為每個(gè)監(jiān)控加圖形,告警等等 后話了。 那么怎么實(shí)現(xiàn)呢?就是zabbix提供的機(jī)制 +++ 個(gè)人的腳本 以下慢慢道來(lái)!!

一:為了實(shí)現(xiàn)我們的功能,我們第一步就是實(shí)現(xiàn)磁盤(pán)發(fā)現(xiàn),也就是自動(dòng)發(fā)現(xiàn)我們?cè)O(shè)備上又那么些磁盤(pán)(注意以下的操作都是以模板為單位的)

?

?找到這個(gè)自動(dòng)發(fā)現(xiàn)規(guī)則,點(diǎn)擊右邊的創(chuàng)建自動(dòng)發(fā)現(xiàn)規(guī)則如下:

我們的名字可以隨便起,這里類型我們是zabbix客戶端 鍵值是什么呢?就是給后臺(tái)傳遞的參數(shù):完成的功能就是發(fā)現(xiàn)主機(jī),這里得到的結(jié)果是個(gè)json格式的字符串。好了既然把這個(gè)參數(shù)io.scandisk傳遞到客戶端了,那么我們的客戶端怎么配置,完成什么功能呢?

我們直接看zabbix-agent的配置文件

這里面scandisk就是對(duì)應(yīng)頁(yè)面配置的關(guān)鍵字 [*]里面就是傳遞的參數(shù),由于頁(yè)面沒(méi)有傳遞,那么這里就沒(méi)有,后面的$1企業(yè)也沒(méi)用(保留是因?yàn)榇蠹叶歼@么寫(xiě)。。。具體為啥我也不清楚)如果需要傳遞參數(shù)我們可以這么寫(xiě)

頁(yè)面io.scandisk[1,2] 那么這里的1就是客戶端配置文件里面的$1了,同理2就是$2了.

好了,我們看到客戶端得到這個(gè)鍵后會(huì)執(zhí)行一個(gè)python腳本,python腳本內(nèi)容如下:

import subprocess import json args="cat /proc/diskstats|awk '{print $3}'|grep -E '^[a-z]+$'|sort|uniq 2>/dev/null" t=subprocess.Popen(args,shell=True,stdout=subprocess.PIPE).communicate()[0] disks=[] for disk in t.split('\n'):if len(disk) != 0:disks.append({'{#DISK_NAME}':disk}) print json.dumps({'data':disks},indent=4,separators=(',',':'))

  我們執(zhí)行下腳本得到結(jié)果如下:

和上文我們提到的一樣返回的是一個(gè)json字符串!

每臺(tái)設(shè)備不一樣。得到的結(jié)果也不一樣,獲取的是本機(jī)上的物理磁盤(pán)的名稱

好了,既然已經(jīng)獲取到了磁盤(pán)的名字,我們接下來(lái)就會(huì)對(duì)每個(gè)磁盤(pán)的性能進(jìn)行監(jiān)控了,監(jiān)控肯定也是在客戶端實(shí)現(xiàn)。首先我們把需要的內(nèi)容輸出到一個(gè)文件里面

nohup iostat -m -x -d 30 > /tmp/iostat_output &

然后再配置文件里面田間配置

UserParameter=io.rps[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b"|tail -1|awk '{print $$4}' UserParameter=io.wps[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$5}' UserParameter=io.rMBps[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$6}' UserParameter=io.wMBps[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$7}' UserParameter=io.avgrq-sz[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$8}' UserParameter=io.avgqu-sz[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$9}' UserParameter=io.await[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$10}' UserParameter=io.svctm[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$11}' UserParameter=io.util[*],/usr/bin/tail /tmp/iostat_output |grep "\b$1\b" |tail -1|awk '{print $$12}'

這里面我們可以看到每行都有一個(gè)$1 那么這個(gè)$1是怎么來(lái)的呢?其實(shí)他就是代表磁盤(pán)的名字 所以我們頁(yè)面就需要配置監(jiān)控項(xiàng),把參數(shù)(磁盤(pán)滿傳遞過(guò)來(lái))

我們回到頁(yè)面繼續(xù)配置

點(diǎn)擊創(chuàng)建監(jiān)控項(xiàng)原型以io.avgqu-sz為例

名字隨便取最好加上$1這里的$1其實(shí)就是鍵值里面的io.avgqu-sz[{#DISK_NAME}]里面的#DISK_NAME 我們前面用自動(dòng)發(fā)現(xiàn)不是發(fā)現(xiàn)了自己的磁盤(pán)么? 比如sdb和sda,zabbix會(huì)把這兩個(gè)磁盤(pán)循環(huán)傳遞到這里來(lái)作為DISK_NAME,那么你一定也想到了。客戶端里面的$1其實(shí)也是這個(gè)參數(shù)咯? ------------至于怎么實(shí)現(xiàn),只有看源碼咯。。不必糾結(jié)? 應(yīng)用集我們新建一個(gè)DISK。然后點(diǎn)擊更新完成

?

?

至此我們只需等待然后到頁(yè)面去看數(shù)據(jù)就可以了。就完成了磁盤(pán)的自動(dòng)發(fā)現(xiàn)以及指定項(xiàng)的監(jiān)控。。后面的圖形,如果你理解了這里就是小菜一碟了。

?


?

我們重新再來(lái)理一遍? ?服務(wù)端配置 自動(dòng)發(fā)現(xiàn)規(guī)則發(fā)現(xiàn)磁盤(pán)------>客戶端修改配置文件以及自定義腳本實(shí)現(xiàn)(返回json的格式)

服務(wù)端找到磁盤(pán)以后對(duì)把每個(gè)磁盤(pán)的名稱作為參數(shù)傳遞給監(jiān)控項(xiàng),監(jiān)控項(xiàng)根據(jù)客戶端的配置文件以及腳本實(shí)現(xiàn)對(duì)應(yīng)的數(shù)據(jù)返回。

?

?

另外需要注意的是 在監(jiān)控項(xiàng)里面 有 print $$4 這種寫(xiě)法。 需要注意的是 因?yàn)樵趜abbix里面$1..$N 其實(shí)是關(guān)鍵字代表的是前端傳遞過(guò)來(lái)的參數(shù),所以自己的$1需要在前面加上一個(gè)$也是就$$1來(lái)區(qū)別!!!這個(gè)東西當(dāng)時(shí)也是疑惑了很久

?

?

?

?

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/ZFBG/p/10194768.html

總結(jié)

以上是生活随笔為你收集整理的zabbix磁盘的自动发现与磁盘指标监控的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。