zabbix 自定義探索規則發現服務器上面的kvm虛擬機和對應的網卡


安裝完zabbix服務器之后 只有兩個探索規則模版,掛載點探索和網卡探索

場景描述:想使用zabbix監控kvm虛擬機的網卡的流量情況,

獲取虛擬機和網卡對應關系

虛擬機 S-1 

virsh domiflist S-1 # 列出虛擬機的網卡 (vnet*)

virsh domifstat S-1 vnet0 # 列出虛擬機的網絡流量

所以監控虛擬機的網卡流量情況,需要知道虛擬機的名和對應的網卡

首先建立探索腳本,來搜索虛擬機和網卡

vi /etc/zabbix/zabbix_agentd.d/virsh_running_discovery.sh

#!/bin/bash
virsh_running_discovery()
{

    local tmpfile="/tmp/mounts.tmp"
    echo > "$tmpfile"
    local kvm_list=(`sudo virsh list | grep running |awk '{print $2}'`)
	local num1=${#kvm_list[@]}
	printf '{\n'
    printf '\t"data":[ '
    for i in ${kvm_list[@]}
    do
		((num1--))
        local vnic_list=(`sudo virsh domiflist $i|sed '1,2d'|awk '{print $1}'|grep -v ^$`)
		local num2=${#vnic_list[@]}
		for s in ${vnic_list[@]}
		do
			printf '\n\t\t{'
			printf "\"{#VS_NAME}\":\"${i}\","
			printf "\"{#VS_NIC}\":\"${s}\"}"
			((num2--))
			[ "$num2" == 0 -a "$num1" == 0 ] && break
			printf ","
		done
	done
	printf '\n\t]\n'
    printf '}\n'
}	
case "$1" in
    virsh_running_discovery)
        "$1"
        ;;
    *)
        echo "Bad Parameter."
        echo "Usage: $0 virsh_running_discovery"
        exit 1
        ;;
esac

自定義key 

編輯配置文件vim /etc/zabbix/zabbix.agentd.d/kvm_list.conf

UserParameter=virsh.running.discovery,/bin/bash /etc/zabbix/zabbix_agentd.d/virsh_running_discovery.sh virsh_running_discovery

 測試

  zabbix_get -s 127.0.0.1 -k virsh.running.discovery

測試通過過 在zabbix界面添加探索規則,然后添加此規則的項目原型,使用{#VS_NAME}引用虛擬機名,{#VS_NIC} 引用網卡名

 

補充:

 zabbix 調用到了virsh 命令 所以要配置sudo 才能讓zabbix 調用virsh 

 vi /etc/sudoers 

zabbix ALL=(ALL) NOPASSWD: /usr/bin/virsh # NOPASSWD 表示 sudo的時候不使用密碼

將 Defaults requiretty 給注釋,在centos fedora 下面 使用sudo  需要有個tty才可以 ,因為在腳本里面執行 所以要將這行注釋


免責聲明!

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



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