378 发表于 2017-6-26 07:51:43

Zabbix监控qemuKVM进程-low_level_discovery

  本文介绍基于Zabbix LLD(low_level_discovery)自动发现机制创建自动发现脚本及对详细进程进行监控。
  执行过程:
  1:基于py脚本寻找KVM主机上的虚拟机名称,返回JSON格式
  2:配置Zabbix模板,自动生成监控列表信息
  3:基于ps命令获取监控值
  代码文件:
  获取虚拟机名称列表:



#!/usr/bin/env python
import os
import json
t=os.popen("""ps -e -o 'pid,comm,pcpu,rsz,vsz,stime,user,uid,cmd' |awk '$7=="qemu" {print $11}'""")
kvms = []
for kvm int.readlines():
   virshName = os.path.basename(kvm.strip())
   kvms += [{'{#QEMU}':virshName}]
print json.dumps({'data':kvms},sort_keys=True,indent=4,separators=(',',':'))
  获取监控详情:



#!/bin/bash
psfile=/tmp/$$.$$
ps -e -o 'pid,pcpu,pmem,sz,rsz,vsz,user,cmd' | awk '
BEGIN {
printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\n","pid","pcpu","pmem","sz","rsz","vsz","user","CMD"
}
$7=="qemu" {
printf "%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%s\t%s\n",$1,$2,$3,$4*1024,$5*1024,$6*1024,$7,$10
}
' > ${psfile}
PIDD=`cat ${psfile} | grep $2 | awk '{print $1}'`
#PIDD=$(ps -ef | grep $2 | grep -v grep| awk '{print $2}')
case $1 in
CPU_usage)
query_result=`/usr/bin/top -b -p $PIDD -n 1 | awk '/qemu/ {print $9}'`
;;
memory_usage)
query_result=`cat ${psfile} | grep $2 | awk '{print $3}'`
;;
sz_usage)
query_result=`cat ${psfile} | grep $2 | awk '{print $4}'`
;;
rsz_usage)
query_result=`cat ${psfile} | grep $2 | awk '{print $5}'`
;;
vsz_usage)
query_result=`cat ${psfile} | grep $2 | awk '{print $6}'`
;;
*)
echo ERROR
exit 1;
esac
rm -rf ${psfile}
echo ${query_result}
  配置Zabbix模板





<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
   <version>2.0</version>
   <date>2017-06-04T01:51:44Z</date>
   <groups>
         <group>
             <name>QEMU_KVM</name>
         </group>
   </groups>
   <templates>
         <template>
             <template>Template QEMU_KVM</template>
             <name>Template QEMU_KVM</name>
             <description/>
             <groups>
               <group>
                     <name>QEMU_KVM</name>
               </group>
             </groups>
             <applications>
               <application>
                     <name>qemuKVM</name>
               </application>
               <application>
                     <name>QEMU_memory_usage</name>
               </application>
               <application>
                     <name>QEMU_Process_usage</name>
               </application>
               <application>
                     <name>QEMU_rsz_usage</name>
               </application>
               <application>
                     <name>QEMU_sz_usage</name>
               </application>
               <application>
                     <name>QEMU_vsz_usage</name>
               </application>
             </applications>
             <items/>
             <discovery_rules>
               <discovery_rule>
                     <name>discovery_qemuKVM</name>
                     <type>0</type>
                     <snmp_community/>
                     <snmp_oid/>
                     <key>qemuKVM.discovery</key>
                     <delay>3600</delay>
                     <status>0</status>
                     <allowed_hosts/>
                     <snmpv3_contextname/>
                     <snmpv3_securityname/>
                     <snmpv3_securitylevel>0</snmpv3_securitylevel>
                     <snmpv3_authprotocol>0</snmpv3_authprotocol>
                     <snmpv3_authpassphrase/>
                     <snmpv3_privprotocol>0</snmpv3_privprotocol>
                     <snmpv3_privpassphrase/>
                     <delay_flex/>
                     <params/>
                     <ipmi_sensor/>
                     <authtype>0</authtype>
                     <username/>
                     <password/>
                     <publickey/>
                     <privatekey/>
                     <port/>
                     <filter>
                         <evaltype>0</evaltype>
                         <formula/>
                         <conditions>
                           <condition>
                                 <macro>{#QEMU}</macro>
                                 <value/>
                                 <operator>8</operator>
                                 <formulaid>A</formulaid>
                           </condition>
                         </conditions>
                     </filter>
                     <lifetime>30</lifetime>
                     <description/>
                     <item_prototypes>
                         <item_prototype>
                           <name>{#QEMU}_memory_usage</name>
                           <type>0</type>
                           <snmp_community/>
                           <multiplier>0</multiplier>
                           <snmp_oid/>
                           <key>qemuKVM</key>
                           <delay>30</delay>
                           <history>90</history>
                           <trends>365</trends>
                           <status>0</status>
                           <value_type>0</value_type>
                           <allowed_hosts/>
                           <units>%</units>
                           <delta>0</delta>
                           <snmpv3_contextname/>
                           <snmpv3_securityname/>
                           <snmpv3_securitylevel>0</snmpv3_securitylevel>
                           <snmpv3_authprotocol>0</snmpv3_authprotocol>
                           <snmpv3_authpassphrase/>
                           <snmpv3_privprotocol>0</snmpv3_privprotocol>
                           <snmpv3_privpassphrase/>
                           <formula>1</formula>
                           <delay_flex/>
                           <params/>
                           <ipmi_sensor/>
                           <data_type>0</data_type>
                           <authtype>0</authtype>
                           <username/>
                           <password/>
                           <publickey/>
                           <privatekey/>
                           <port/>
                           <description/>
                           <inventory_link>0</inventory_link>
                           <applications>
                                 <application>
                                     <name>QEMU_memory_usage</name>
                                 </application>
                           </applications>
                           <valuemap/>
                           <logtimefmt/>
                         </item_prototype>
                         <item_prototype>
                           <name>{#QEMU}_Process_usage</name>
                           <type>0</type>
                           <snmp_community/>
                           <multiplier>0</multiplier>
                           <snmp_oid/>
                           <key>qemuKVM</key>
                           <delay>30</delay>
                           <history>90</history>
                           <trends>365</trends>
                           <status>0</status>
                           <value_type>0</value_type>
                           <allowed_hosts/>
                           <units>%</units>
                           <delta>0</delta>
                           <snmpv3_contextname/>
                           <snmpv3_securityname/>
                           <snmpv3_securitylevel>0</snmpv3_securitylevel>
                           <snmpv3_authprotocol>0</snmpv3_authprotocol>
                           <snmpv3_authpassphrase/>
                           <snmpv3_privprotocol>0</snmpv3_privprotocol>
                           <snmpv3_privpassphrase/>
                           <formula>1</formula>
                           <delay_flex/>
                           <params/>
                           <ipmi_sensor/>
                           <data_type>0</data_type>
                           <authtype>0</authtype>
                           <username/>
                           <password/>
                           <publickey/>
                           <privatekey/>
                           <port/>
                           <description/>
                           <inventory_link>0</inventory_link>
                           <applications>
                                 <application>
                                     <name>QEMU_Process_usage</name>
                                 </application>
                           </applications>
                           <valuemap/>
                           <logtimefmt/>
                         </item_prototype>
                         <item_prototype>
                           <name>{#QEMU}_rsz_usage</name>
                           <type>0</type>
                           <snmp_community/>
                           <multiplier>0</multiplier>
                           <snmp_oid/>
                           <key>qemuKVM</key>
                           <delay>30</delay>
                           <history>90</history>
                           <trends>365</trends>
                           <status>0</status>
                           <value_type>3</value_type>
                           <allowed_hosts/>
                           <units>B</units>
                           <delta>0</delta>
                           <snmpv3_contextname/>
                           <snmpv3_securityname/>
                           <snmpv3_securitylevel>0</snmpv3_securitylevel>
                           <snmpv3_authprotocol>0</snmpv3_authprotocol>
                           <snmpv3_authpassphrase/>
                           <snmpv3_privprotocol>0</snmpv3_privprotocol>
                           <snmpv3_privpassphrase/>
                           <formula>1</formula>
                           <delay_flex/>
                           <params/>
                           <ipmi_sensor/>
                           <data_type>0</data_type>
                           <authtype>0</authtype>
                           <username/>
                           <password/>
                           <publickey/>
                           <privatekey/>
                           <port/>
                           <description/>
                           <inventory_link>0</inventory_link>
                           <applications>
                                 <application>
                                     <name>QEMU_rsz_usage</name>
                                 </application>
                           </applications>
                           <valuemap/>
                           <logtimefmt/>
                         </item_prototype>
                         <item_prototype>
                           <name>{#QEMU}_sz_usage</name>
                           <type>0</type>
                           <snmp_community/>
                           <multiplier>0</multiplier>
                           <snmp_oid/>
                           <key>qemuKVM</key>
                           <delay>30</delay>
                           <history>90</history>
                           <trends>365</trends>
                           <status>0</status>
                           <value_type>3</value_type>
                           <allowed_hosts/>
                           <units>B</units>
                           <delta>0</delta>
                           <snmpv3_contextname/>
                           <snmpv3_securityname/>
                           <snmpv3_securitylevel>0</snmpv3_securitylevel>
                           <snmpv3_authprotocol>0</snmpv3_authprotocol>
                           <snmpv3_authpassphrase/>
                           <snmpv3_privprotocol>0</snmpv3_privprotocol>
                           <snmpv3_privpassphrase/>
                           <formula>1</formula>
                           <delay_flex/>
                           <params/>
                           <ipmi_sensor/>
                           <data_type>0</data_type>
                           <authtype>0</authtype>
                           <username/>
                           <password/>
                           <publickey/>
                           <privatekey/>
                           <port/>
                           <description/>
                           <inventory_link>0</inventory_link>
                           <applications>
                                 <application>
                                     <name>QEMU_sz_usage</name>
                                 </application>
                           </applications>
                           <valuemap/>
                           <logtimefmt/>
                         </item_prototype>
                         <item_prototype>
                           <name>{#QEMU}_vsz_usage</name>
                           <type>0</type>
                           <snmp_community/>
                           <multiplier>0</multiplier>
                           <snmp_oid/>
                           <key>qemuKVM</key>
                           <delay>30</delay>
                           <history>90</history>
                           <trends>365</trends>
                           <status>0</status>
                           <value_type>3</value_type>
                           <allowed_hosts/>
                           <units>B</units>
                           <delta>0</delta>
                           <snmpv3_contextname/>
                           <snmpv3_securityname/>
                           <snmpv3_securitylevel>0</snmpv3_securitylevel>
                           <snmpv3_authprotocol>0</snmpv3_authprotocol>
                           <snmpv3_authpassphrase/>
                           <snmpv3_privprotocol>0</snmpv3_privprotocol>
                           <snmpv3_privpassphrase/>
                           <formula>1</formula>
                           <delay_flex/>
                           <params/>
                           <ipmi_sensor/>
                           <data_type>0</data_type>
                           <authtype>0</authtype>
                           <username/>
                           <password/>
                           <publickey/>
                           <privatekey/>
                           <port/>
                           <description/>
                           <inventory_link>0</inventory_link>
                           <applications>
                                 <application>
                                     <name>QEMU_vsz_usage</name>
                                 </application>
                           </applications>
                           <valuemap/>
                           <logtimefmt/>
                         </item_prototype>
                     </item_prototypes>
                     <trigger_prototypes>
                         <trigger_prototype>
                           <expression>{Template QEMU_KVM:qemuKVM.min(300)}&gt;200 or {Template QEMU_KVM:qemuKVM.min(600)}&gt;80</expression>
                           <name>{#QEMU}_CPU_usage_100Percent</name>
                           <url/>
                           <status>1</status>
                           <priority>3</priority>
                           <description/>
                           <type>0</type>
                         </trigger_prototype>
                         <trigger_prototype>
                           <expression>{Template QEMU_KVM:qemuKVM.min(300)}&gt;300 or {Template QEMU_KVM:qemuKVM.min(900)}&gt;80</expression>
                           <name>{#QEMU}_CPU_usage_is_too_hight</name>
                           <url/>
                           <status>1</status>
                           <priority>4</priority>
                           <description/>
                           <type>0</type>
                         </trigger_prototype>
                     </trigger_prototypes>
                     <graph_prototypes>
                         <graph_prototype>
                           <name>memory_usage</name>
                           <width>900</width>
                           <height>200</height>
                           <yaxismin>0.0000</yaxismin>
                           <yaxismax>100.0000</yaxismax>
                           <show_work_period>1</show_work_period>
                           <show_triggers>1</show_triggers>
                           <type>0</type>
                           <show_legend>1</show_legend>
                           <show_3d>0</show_3d>
                           <percent_left>0.0000</percent_left>
                           <percent_right>0.0000</percent_right>
                           <ymin_type_1>0</ymin_type_1>
                           <ymax_type_1>0</ymax_type_1>
                           <ymin_item_1>0</ymin_item_1>
                           <ymax_item_1>0</ymax_item_1>
                           <graph_items>
                                 <graph_item>
                                     <sortorder>0</sortorder>
                                     <drawtype>0</drawtype>
                                     <color>00C800</color>
                                     <yaxisside>0</yaxisside>
                                     <calc_fnc>2</calc_fnc>
                                     <type>0</type>
                                     <item>
                                       <host>Template QEMU_KVM</host>
                                       <key>qemuKVM</key>
                                     </item>
                                 </graph_item>
                                 <graph_item>
                                     <sortorder>1</sortorder>
                                     <drawtype>0</drawtype>
                                     <color>C80000</color>
                                     <yaxisside>0</yaxisside>
                                     <calc_fnc>4</calc_fnc>
                                     <type>0</type>
                                     <item>
                                       <host>Template QEMU_KVM</host>
                                       <key>qemuKVM</key>
                                     </item>
                                 </graph_item>
                                 <graph_item>
                                     <sortorder>2</sortorder>
                                     <drawtype>0</drawtype>
                                     <color>0000C8</color>
                                     <yaxisside>0</yaxisside>
                                     <calc_fnc>1</calc_fnc>
                                     <type>0</type>
                                     <item>
                                       <host>Template QEMU_KVM</host>
                                       <key>qemuKVM</key>
                                     </item>
                                 </graph_item>
                           </graph_items>
                         </graph_prototype>
                         <graph_prototype>
                           <name>Process_usage</name>
                           <width>900</width>
                           <height>200</height>
                           <yaxismin>0.0000</yaxismin>
                           <yaxismax>100.0000</yaxismax>
                           <show_work_period>1</show_work_period>
                           <show_triggers>1</show_triggers>
                           <type>0</type>
                           <show_legend>1</show_legend>
                           <show_3d>0</show_3d>
                           <percent_left>0.0000</percent_left>
                           <percent_right>0.0000</percent_right>
                           <ymin_type_1>0</ymin_type_1>
                           <ymax_type_1>0</ymax_type_1>
                           <ymin_item_1>0</ymin_item_1>
                           <ymax_item_1>0</ymax_item_1>
                           <graph_items>
                                 <graph_item>
                                     <sortorder>0</sortorder>
                                     <drawtype>0</drawtype>
                                     <color>00C800</color>
                                     <yaxisside>0</yaxisside>
                                     <calc_fnc>2</calc_fnc>
                                     <type>0</type>
                                     <item>
                                       <host>Template QEMU_KVM</host>
                                       <key>qemuKVM</key>
                                     </item>
                                 </graph_item>
                                 <graph_item>
                                     <sortorder>1</sortorder>
                                     <drawtype>0</drawtype>
                                     <color>C80000</color>
                                     <yaxisside>0</yaxisside>
                                     <calc_fnc>4</calc_fnc>
                                     <type>0</type>
                                     <item>
                                       <host>Template QEMU_KVM</host>
                                       <key>qemuKVM</key>
                                     </item>
                                 </graph_item>
                                 <graph_item>
                                     <sortorder>2</sortorder>
                                     <drawtype>0</drawtype>
                                     <color>0000C8</color>
                                     <yaxisside>0</yaxisside>
                                     <calc_fnc>1</calc_fnc>
                                     <type>0</type>
                                     <item>
                                       <host>Template QEMU_KVM</host>
                                       <key>qemuKVM</key>
                                     </item>
                                 </graph_item>
                           </graph_items>
                         </graph_prototype>
                     </graph_prototypes>
                     <host_prototypes/>
               </discovery_rule>
             </discovery_rules>
             <macros/>
             <templates/>
             <screens/>
         </template>
   </templates>
</zabbix_export>
Zabbix_Template QEMU_KVM  监控效果略。
  官方文档:
  https://www.zabbix.com/documentation/3.0/manual/discovery/low_level_discovery

lkboys 发表于 2017-8-4 09:21:34

回帖赚点积分哈···
页: [1]
查看完整版本: Zabbix监控qemuKVM进程-low_level_discovery