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图表。

69c24ba8526fa6c43d015d6c76858097.png

7e75aae54b1538275e1494ce439be83a.png

配置zabbix前台

1)登录zabbix前台,选择Configuration->Templates->Import,导入“Template Linux DiskIO”模板(见附件)。

b2cb0141c9217b32c09344d6f247cd3b.png

2)进入主机配置界面,链接“Template Linux DiskIO”模板

52cb6339b38f992aeb7cfba4e339f71e.png

模板下载地址: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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值