上次腳本寫好了,過幾天老同事看了下,而後讓我部署到系統上。畢竟我是個新手,記錄下吧。
1, 首先我使用的是樂維公司的zabbix監控系統操做的。咱們要先考慮zabbix監控的腳本調用路徑是cd /usr/local/zabbix/scripts/下,那裏放了好多主動監控的腳本。
2,進入zabbix的配置文件,裏面設置鍵值配好設置。
Vim usr/local/zabbix/etc/zabbix_agentd.conf修改好鍵值和腳本執行的參數
配置完了後,記得要重啓agent,service zabbix_agentd restart
3,在zabbix監控系統上面建立新的模板。
按照上面的配置好。
4,而後把模板連接到主機上,等一下就有數據了。
5,覈對數據時,這個就要特別注意了,linux系統計算硬件使用的字節轉換成其它單位的倍率是1000,而咱們系統的轉換是1024倍率。也就是說咱們看到的磁盤大小是物理磁盤真實大小。我在覈對的時候還覺得是腳本出錯了呢,多注意。
系統的存儲轉換倍率是1000
還有注意的問題是:腳本里面匹配的磁盤是/dev/vba,有些磁盤確是/dev/sda的。這個其實不少系統基本一致的,全部在監控系統以前要檢查下系統的磁盤類型,來修改下腳本。想要作通用版的腳本,能夠用if,then條件語句多加幾個磁盤的類型判斷上去。
老同事畢竟有經驗,提出了優化腳本,而後改爲了這樣:
#!/bin/bash
#磁盤總空間大小,字節單位
disk_total() {
d_t=$(fdisk -l | grep -oP '(?<=/dev/sd\S\W).' | awk '{print $3}'|awk 'BEGIN{sum=0}{sum+=$1}END{print sum}')
echo -e "${d_t}"
}
#磁盤總使用大小,單位1k
disk_used() {
d_uk=$(df | awk '{print $3}' | grep [0-9] | awk 'BEGIN{sum=0}{sum+=$1}END{print sum}')
d_u=$((1000
d_uk))
echo -e "${d_u}"
}
#剩餘總空間計算
disk_free() {
d_t=$(fdisk -l | grep -oP '(?<=/dev/sd\S\W).' | awk '{print $3}'|awk 'BEGIN{sum=0}{sum+=$1}END{print sum}')
d_u=$(df | awk '{print $3}' | grep [0-9] | awk 'BEGIN{sum=0}{sum+=$1}END{print sum}')
d_f=$[${d_t}-d_u
1000]
echo -e "${d_f}"
}
case "$1" in
dt)
disk_total
;;
df)
disk_free
;;
du)
disk_used
;;
*)
echo "Usage: $0 {dt=disk_total}{df=disk_free}{du=disk_used}"
;;
esac
我認爲腳本能夠再優化,例如作全局變量,腳本開頭再優化匹配規則,但我目前還要作其它項目的事情,因此知足了客戶需求就能夠了。
雖然這是一個小腳本採集數據,但重要的是明白了zabbix外部檢查的工做原理,還有第一次操做,要注意的事情也是不少的,但願之後能夠作個新的大的腳本採集。
linux