ZABBIX動態發現磁盤監控


linux下不同硬件或者系統版本不同識別到的塊設備的名稱各不相同,可能是sda、xda等等,因此通過zabbix監控磁盤普通的模板顯得死板不不夠靈活。通過zabbix的自動發現功能,通過腳本獲取系統塊設備的名稱,然后保存到變量中,在通過zabbix客戶端的自定義監控選項將監控的鍵值傳給服務端。

參考http://www.ttlsa.com/zabbix/zabbix-lld-monitor-disk-io-stats/ 該文檔部署,但需要修改zabbix服務端的模板文件,測試發生使用該文檔提供的 zbx_parse_iostat_values.sh獲得的鍵值在zabbix服務端呈現圖像時有問題,因此使用除了需要修改zabbix客戶端的配置 文件中的自定義鍵值的獲取方式外,還需要修改服務端模板文件

創建自動發現腳本

從網絡上下載,

vim /etc/zabbix/scripts/discover_disk.pl
#!/usr/bin/perl
# give disk dmname, returns Proxmox VM name
sub get_vmname_by_id
  {
  $vmname=`cat /etc/qemu-server/$_[0].conf | grep name | cut -d \: -f 2`;
  $vmname =~ s/^\s+//; #remove leading spaces
  $vmname =~ s/\s+$//; #remove trailing spaces
  return $vmname
  }
$first = 1;
print "{\n";
print "\t\"data\":[\n\n";
 
for (`cat /proc/diskstats`)
  {
  ($major,$minor,$disk) = m/^\s*([0-9]+)\s+([0-9]+)\s+(\S+)\s.*$/;
  $dmnamefile = "/sys/dev/block/$major:$minor/dm/name";
  $vmid= "";
  $vmname = "";
  $dmname = $disk;
  $diskdev = "/dev/$disk";
  # DM name
  if (-e $dmnamefile) {
    $dmname = `cat $dmnamefile`;
    $dmname =~ s/\n$//; #remove trailing \n
    $diskdev = "/dev/mapper/$dmname";
    # VM name and ID
    if ($dmname =~ m/^.*--([0-9]+)--.*$/) {
      $vmid = $1;
      #$vmname = get_vmname_by_id($vmid);
      }
    }
  #print("$major $minor $disk $diskdev $dmname $vmid $vmname \n");
 
  print "\t,\n" if not $first;
  $first = 0;
 
  print "\t{\n";
  print "\t\t\"{#DISK}\":\"$disk\",\n";
  print "\t\t\"{#DMNAME}\":\"$dmname\",\n";
  print "\t\t\"{#VMNAME}\":\"$vmname\",\n";
  print "\t\t\"{#VMID}\":\"$vmid\"\n";
  print "\t}\n";
  }
 
print "\n\t]\n";
print "}\n";
 
# chmod 755 /etc/zabbix/scripts/discover_disk.pl

 

ZABBIX客戶端設置

# diskio discovery
UserParameter=discovery.disks.iostats,/etc/zabbix/scripts/discover_disk.pl
#讀扇區的次數
UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$6}'
#寫扇區次數
UserParameter=custom.vfs.dev.write.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$10}'
#合並讀完成次數
UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | grep $1 | head -1 |awk '{print $$4}'
#合並寫完成次數
UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$8}'
#讀花費的毫秒數
UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$7}'
#寫操作花費的毫秒數
UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk '{print $$11}'

 

 

 

 

 

 

 

重啟zabbix客戶端

使用zabbix_get測試這些自定義鍵值是否生效

zabbix_get –s 127.0.0.1 –k custom.vfs.dev.write.ms[sda1]

 

 

配置服務端

導入模板文件zbx_export_templates.xml並修改

configuration-templates-import 導入模板

導入后點擊

IO

編輯監控的選項

將原來的監控鍵值都刪除,添加在zabbix客戶端配置文件中的對應鍵值

監控磁盤每秒鍾讀取的字節數

IO

監控磁盤每秒中寫入的字節數

IO

磁盤每秒鍾讀操作的次數

IO

每秒鍾寫操作次數

IO

磁盤每次讀操作花費的毫秒

IO

寫花費的毫秒

IO

添加繪圖

IO

IO

IO

IO

 

對需要監控磁盤的主機鏈接模板

IO

查看正則配置,改配置默認在導入模板后會有,需要修改

IO

編輯,在正則中添加sda1

IO

查看監控結果

IO

 

作者

大志@www.zhengdazhi.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM