1 监控指标
iops是每秒的input/output次数,就是磁盘每秒能处理的读或写操作的请求能力。是衡量磁盘性能的主要指标之一。
而吞吐量是磁盘每秒rw的数据量,反应数据的传输速度。
2 配置监控
[root@iZbp1ezumclop9223l31okZ zabbix]# cat /app/zabbix/scripts/disk_discovery.sh #!/bin/bash diskname_discovery () { HardDisk=($(grep '\b[a-z][a-z][a-z]\+\b' /proc/diskstats|awk '{print $3}')) [ "${HardDisk[0]}" == "" ] && exit printf '{\n' printf '\t"data":[\n\n' for((i=0;i<${#HardDisk[@]};++i)) { num=$(echo $((${#HardDisk[@]}-1))) if [ "$i" != ${num} ]; then printf "\t{\t\"{#DISKNAME}\":\"${HardDisk[$i]}\"\t},\n" else printf "\t{\t\"{#DISKNAME}\":\"${HardDisk[$num]}\"\t}\n\n\t]\n}\n" fi } } case "$1" in diskname_discovery) diskname_discovery ;; *) echo "Usage: $0 {diskname_discovery}" ;; esac #磁盘发现脚本
[root@iZbp1ezumclop9223l31okZ zabbix]# cat /app/zabbix/scripts/disk_stat.sh #/bin/sh Device=$1 DISK=$2 case $DISK in riops) grep "\b$Device\b" /proc/diskstats | head -1 | awk '{print $4}' ;; wiops) grep "\b$Device\b" /proc/diskstats | head -1 | awk '{print $8}' ;; rKBps) iostat | grep "\b$Device\b" | awk '{print $5}' ;; wKBps) iostat | grep "\b$Device\b" | awk '{print $6}' ;; await) iostat -dxkt |grep "\b$Device\b" |tail -1|awk '{print $10}' ;; svctm) iostat -dxkt |grep "\b$Device\b" |tail -1|awk '{print $11}' ;; util) iostat -dxkt |grep "\b$Device\b" |tail -1|awk '{print $12}' ;; esac #监控项获取脚本 #await,avctm,util暂未修改,不可用
[root@iZbp1ezumclop9223l31okZ zabbix]# cat /app/zabbix/etc/zabbix_agentd.conf.d/diskio.conf #discovery hard disk UserParameter=custom.vfs.discovery.diskname,/app/zabbix/scripts/disk_discovery.sh diskname_discovery #disk status UserParameter=custom.vfs.dev.disk_stats.riops[*],/app/zabbix/scripts/disk_stat.sh $1 riops UserParameter=custom.vfs.dev.disk_stats.wiops[*],/app/zabbix/scripts/disk_stat.sh $1 wiops UserParameter=custom.vfs.dev.disk_stats.rKBps[*],/app/zabbix/scripts/disk_stat.sh $1 rKBps UserParameter=custom.vfs.dev.disk_stats.wKBps[*],/app/zabbix/scripts/disk_stat.sh $1 wKBps UserParameter=custom.vfs.dev.disk_stats.avgrq[*],/app/zabbix/scripts/disk_stat.sh $1 avgrq-sz UserParameter=custom.vfs.dev.disk_stats.avgqu[*],/app/zabbix/scripts/disk_stat.sh $1 avgqu-sz UserParameter=custom.vfs.dev.disk_stats.await[*],/app/zabbix/scripts/disk_stat.sh $1 await UserParameter=custom.vfs.dev.disk_stats.svctm[*],/app/zabbix/scripts/disk_stat.sh $1 svctm UserParameter=custom.vfs.dev.disk_stats.util[*],/app/zabbix/scripts/disk_stat.sh $1 util #自定义监控项脚本
3 配置zabbix
在zabbix添加模板,然后添加自动发现规则,在自动发现规则里添加监控项原型(由于获取的数据是累计值,需要把监控项设定为每秒更改),添加图像原型
此为效果图
附上导出模板
<?xml version="1.0" encoding="UTF-8"?> <zabbix_export> <version>3.4</version> <date>2018-08-20T01:34:49Z</date> <groups> <group> <name>Linux servers</name> </group> </groups> <templates> <template> <template>Template disk io</template> <name>Template disk io</name> <description/> <groups> <group> <name>Linux servers</name> </group> </groups> <applications> <application> <name>diski io</name> </application> </applications> <items/> <discovery_rules> <discovery_rule> <name>auto discovery.Disk</name> <type>0</type> <snmp_community/> <snmp_oid/> <key>custom.vfs.discovery.diskname</key> <delay>30s</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/> <params/> <ipmi_sensor/> <authtype>0</authtype> <username/> <password/> <publickey/> <privatekey/> <port/> <filter> <evaltype>0</evaltype> <formula/> <conditions/> </filter> <lifetime>30d</lifetime> <description/> <item_prototypes> <item_prototype> <name>Disk {#DISKNAME} riops</name> <type>0</type> <snmp_community/> <snmp_oid/> <key>custom.vfs.dev.disk_stats.riops[{#DISKNAME}]</key> <delay>30s</delay> <history>90d</history> <trends>365d</trends> <status>0</status> <value_type>3</value_type> <allowed_hosts/> <units>count/sec</units> <snmpv3_contextname/> <snmpv3_securityname/> <snmpv3_securitylevel>0</snmpv3_securitylevel> <snmpv3_authprotocol>0</snmpv3_authprotocol> <snmpv3_authpassphrase/> <snmpv3_privprotocol>0</snmpv3_privprotocol> <snmpv3_privpassphrase/> <params/> <ipmi_sensor/> <authtype>0</authtype> <username/> <password/> <publickey/> <privatekey/> <port/> <description/> <inventory_link>0</inventory_link> <applications> <application> <name>diski io</name> </application> </applications> <valuemap/> <logtimefmt/> <preprocessing> <step> <type>10</type> <params/> </step> </preprocessing> <jmx_endpoint/> <application_prototypes/> <master_item_prototype/> </item_prototype> <item_prototype> <name>Disk {#DISKNAME} rps</name> <type>0</type> <snmp_community/> <snmp_oid/> <key>custom.vfs.dev.disk_stats.rKBps[{#DISKNAME}]</key> <delay>15s</delay> <history>90d</history> <trends>365d</trends> <status>0</status> <value_type>3</value_type> <allowed_hosts/> <units>MB/s</units> <snmpv3_contextname/> <snmpv3_securityname/> <snmpv3_securitylevel>0</snmpv3_securitylevel> <snmpv3_authprotocol>0</snmpv3_authprotocol> <snmpv3_authpassphrase/> <snmpv3_privprotocol>0</snmpv3_privprotocol> <snmpv3_privpassphrase/> <params/> <ipmi_sensor/> <authtype>0</authtype> <username/> <password/> <publickey/> <privatekey/> <port/> <description/> <inventory_link>0</inventory_link> <applications> <application> <name>diski io</name> </application> </applications> <valuemap/> <logtimefmt/> <preprocessing> <step> <type>10</type> <params/> </step> <step> <type>1</type> <params>0.001</params> </step> </preprocessing> <jmx_endpoint/> <application_prototypes/> <master_item_prototype/> </item_prototype> <item_prototype> <name>Disk {#DISKNAME} wiops</name> <type>0</type> <snmp_community/> <snmp_oid/> <key>custom.vfs.dev.disk_stats.wiops[{#DISKNAME}]</key> <delay>30s</delay> <history>90d</history> <trends>365d</trends> <status>0</status> <value_type>3</value_type> <allowed_hosts/> <units>count/sec</units> <snmpv3_contextname/> <snmpv3_securityname/> <snmpv3_securitylevel>0</snmpv3_securitylevel> <snmpv3_authprotocol>0</snmpv3_authprotocol> <snmpv3_authpassphrase/> <snmpv3_privprotocol>0</snmpv3_privprotocol> <snmpv3_privpassphrase/> <params/> <ipmi_sensor/> <authtype>0</authtype> <username/> <password/> <publickey/> <privatekey/> <port/> <description/> <inventory_link>0</inventory_link> <applications> <application> <name>diski io</name> </application> </applications> <valuemap/> <logtimefmt/> <preprocessing> <step> <type>10</type> <params/> </step> </preprocessing> <jmx_endpoint/> <application_prototypes/> <master_item_prototype/> </item_prototype> <item_prototype> <name>Disk {#DISKNAME} wps</name> <type>0</type> <snmp_community/> <snmp_oid/> <key>custom.vfs.dev.disk_stats.wKBps[{#DISKNAME}]</key> <delay>15s</delay> <history>90d</history> <trends>365d</trends> <status>0</status> <value_type>0</value_type> <allowed_hosts/> <units>MB/s</units> <snmpv3_contextname/> <snmpv3_securityname/> <snmpv3_securitylevel>0</snmpv3_securitylevel> <snmpv3_authprotocol>0</snmpv3_authprotocol> <snmpv3_authpassphrase/> <snmpv3_privprotocol>0</snmpv3_privprotocol> <snmpv3_privpassphrase/> <params/> <ipmi_sensor/> <authtype>0</authtype> <username/> <password/> <publickey/> <privatekey/> <port/> <description/> <inventory_link>0</inventory_link> <applications> <application> <name>diski io</name> </application> </applications> <valuemap/> <logtimefmt/> <preprocessing> <step> <type>10</type> <params/> </step> <step> <type>1</type> <params>0.001</params> </step> </preprocessing> <jmx_endpoint/> <application_prototypes/> <master_item_prototype/> </item_prototype> </item_prototypes> <trigger_prototypes/> <graph_prototypes> <graph_prototype> <name>磁盘 {#DISKNAME} IO</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>00AA00</color> <yaxisside>0</yaxisside> <calc_fnc>2</calc_fnc> <type>0</type> <item> <host>Template disk io</host> <key>custom.vfs.dev.disk_stats.wKBps[{#DISKNAME}]</key> </item> </graph_item> <graph_item> <sortorder>1</sortorder> <drawtype>0</drawtype> <color>F63100</color> <yaxisside>0</yaxisside> <calc_fnc>2</calc_fnc> <type>0</type> <item> <host>Template disk io</host> <key>custom.vfs.dev.disk_stats.rKBps[{#DISKNAME}]</key> </item> </graph_item> </graph_items> </graph_prototype> <graph_prototype> <name>磁盘 {#DISKNAME} IOPS</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>1A7C11</color> <yaxisside>0</yaxisside> <calc_fnc>2</calc_fnc> <type>0</type> <item> <host>Template disk io</host> <key>custom.vfs.dev.disk_stats.riops[{#DISKNAME}]</key> </item> </graph_item> <graph_item> <sortorder>1</sortorder> <drawtype>0</drawtype> <color>F63100</color> <yaxisside>0</yaxisside> <calc_fnc>2</calc_fnc> <type>0</type> <item> <host>Template disk io</host> <key>custom.vfs.dev.disk_stats.wiops[{#DISKNAME}]</key> </item> </graph_item> </graph_items> </graph_prototype> </graph_prototypes> <host_prototypes/> <jmx_endpoint/> </discovery_rule> </discovery_rules> <httptests/> <macros/> <templates/> <screens/> </template> </templates> </zabbix_export>