linux 访问磁盘bin,zabbix应用之Low-level discovery监控磁盘IO
zabbix自帶的“Template OS Linux”模板支持監控已掛載的磁盤空間利用率,是利用LLD(Low-level discovery)實現的,卻沒有對磁盤IO監控。本篇文章就介紹利用zabbix LLD功能監控磁盤IO的方法。
思路:首先創建Discovery rules,在agent端配置對應的UserParameter,調用編寫好的shell腳本,動態查找出已經掛載的磁盤分區;然后創建Item prototypes,使用vfs.dev.read[device,,]和vfs.dev.write[device,,]來監控磁盤分區的IO,包括磁盤讀寫速率、每秒讀寫扇區數、每秒讀寫操作數;然后創建Graph prototypes,生成磁盤IO圖表。
配置zabbix前臺
1)登錄zabbix前臺,選擇Configuration->Templates->Import,導入“Template Linux DiskIO”模板(見附件)。
2)進入主機配置界面,鏈接“Template Linux DiskIO”模板
模板下載地址:http://www.xiaohuai.com/zabbix/Template Linux DiskIO.rar
3)配置完zabbix前臺以后,需要修改zabbix_agentd使其支持獲取磁盤IO相關數值,以下為一鍵腳本,是在安裝了zabbix_agentd的前提下,再安裝這個,不影響原來的agentd使用,只是修改其中配置。#!/bin/sh
#
# Filename: autoMonitorDiskIO.sh
# Date: 2014/01/05
# Author: 來源網絡,做部分修改 xiaohuai
# Website: http://www.xiaohuai.com/
# Description: 部署zabbix low-level discovery 監控磁盤IO
# Notes: 在被監控客戶端運行此腳本,前提條件已經安裝好zabbix agent
# 注意:結尾部分的啟動腳本與客戶端zabbix agentd.conf配置文件的路徑
ROOT_UID=0
if [ "$UID" -ne "$ROOT_UID" ];then
echo "Error: Please run this script as root user."
exit 1
fi
# 自行修改為你的zabbix agent配置文件路徑
AGENT_CONF="/etc/zabbix/zabbix_agentd.conf"
mkdir -p /etc/zabbix/monitor_scripts
# 創建 low-level discovery mounted disk 腳本
cat > /etc/zabbix/monitor_scripts/mount_disk_discovery.sh << 'EOF' #!/bin/bash #Function: low-level discovery mounted disk #Script_name: mount_disk_discovery.sh mount_disk_discovery() { local regexp="\b(btrfs|ext2|ext3|ext4|jfs|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|ntfs|fat32|zfs)\b" local tmpfile="/tmp/mounts.tmp" :> "$tmpfile"
egrep "$regexp" /proc/mounts > "$tmpfile"
local num=$(cat "$tmpfile" | wc -l)
printf '{\n'
printf '\t"data":[ '
while read line;do
DEV_NAME=$(echo $line | awk '{print $1}')
FS_NAME=$(echo $line | awk '{print $2}')
SEC_SIZE=$(sudo /sbin/blockdev --getss $DEV_NAME 2>/dev/null)
printf '\n\t\t{'
printf "\"{#DEV_NAME}\":\"${DEV_NAME}\","
printf "\"{#FS_NAME}\":\"${FS_NAME}\","
printf "\"{#SEC_SIZE}\":\"${SEC_SIZE}\"}"
((num--))
[ "$num" == 0 ] && break
printf ","
done < "$tmpfile" printf '\n\t]\n' printf '}\n' } case "$1" in mount_disk_discovery) "$1" ;; *) echo "Bad Parameter." echo "Usage: $0 mount_disk_discovery" exit 1 ;; esac EOF touch /tmp/mounts.tmp chown zabbix:zabbix /tmp/mounts.tmp chown -R zabbix:zabbix /etc/zabbix/monitor_scripts chmod 755 /etc/zabbix/monitor_scripts/mount_disk_discovery.sh # 判斷配置文件是否存在 [ -f "${AGENT_CONF}" ] || { echo "ERROR: File ${AGENT_CONF} does not exist.";exit 1;} include=`grep '^Include' ${AGENT_CONF} | cut -d'=' -f2` # 在配置文件中添加自定義參數 if [ -d "$include" ];then cat > $include/disk_lld.conf << 'EOF' UserParameter=mount_disk_discovery,/bin/bash /etc/zabbix/monitor_scripts/mount_disk_discovery.sh mount_disk_discovery EOF else grep -q '^UserParameter=mount_disk_discovery' ${AGENT_CONF} || cat >> ${AGENT_CONF} << 'EOF' UserParameter=mount_disk_discovery,/bin/bash /etc/zabbix/monitor_scripts/mount_disk_discovery.sh mount_disk_discovery EOF fi # 授權zabbix用戶無密碼運行/sbin/blockdev命令 chmod +w /etc/sudoers sed -i '/^Defaults\s\+requiretty/s/^/#/' /etc/sudoers grep -q '^zabbix ALL=(ALL).*blockdev' /etc/sudoers || echo 'zabbix ALL=(ALL) NOPASSWD: /sbin/blockdev' >> /etc/sudoers
chmod 440 /etc/sudoers
# 重啟agent服務
[ -f '/etc/init.d/zabbix-agentd' ] && /etc/init.d/zabbix-agentd restart || echo "需手動重啟zabbix agent服務."
來源于啟程的Linux博客 http://qicheng0211.blog.51cto.com/3958621/1599776
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的linux 访问磁盘bin,zabbix应用之Low-level discovery监控磁盘IO的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下raid磁盘阵列的命名,li
- 下一篇: linux变量中代,linux中shel