当前位置:网站首页>利用Zabbix动态监控磁盘I/O
利用Zabbix动态监控磁盘I/O
2022-07-03 11:02:00 【星哥玩云】
最近在看Linux I/O子系统相关的资料,需要监控每台服务器的磁盘I/O,特别是MongoDB数据库服务器的磁盘I/O,由于每台服务器的磁盘名称可能不一样,所以需要用到Zabbix的LLD功能来发现磁盘并监控I/O
参考文章
http://www.programering.com/a/MDOwYDNwATc.html
1.编写发现磁盘的脚步
shell版本disk_discovery.sh
#!/bin/bash
diskarray=(`cat /proc/diskstats |grep -E "\bsd[a-z]\b|\bxvd[a-z]\b|\bvd[a-z]\b"|awk '{print $3}'|sort|uniq 2>/dev/null`)
length=${#diskarray[@]}
printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
printf '\n\t\t{'
printf "\"{#DISK_NAME}\":\"
if [ i -lt [
printf ','
fi
done
printf "\n\t]\n"
printf "}\n"
$ sh disk_discovery.sh
{
"data":[
{"{#DISK_NAME}":"xvda"},
{"{#DISK_NAME}":"xvdb"}
]
}
Python版本disk_discovery.py
#/usr/bin/python
#This script is used to discovery disk on the server
import subprocess
import json
args="cat /proc/diskstats |grep -E '\ssd[a-z]\s|\sxvd[a-z]\s|\svd[a-z]\s'|awk '{print $3}'|sort|uniq 2>/dev/null"
t=subprocess.Popen(args,shell=True,stdout=subprocess.PIPE).communicate()[0]
disks=[]
for disk in t.split('\n'):
if len(disk) != 0:
disks.append({'{#DISK_NAME}':disk})
print json.dumps({'data':disks},indent=4,separators=(',',':'))
$ python disk_discovery.py
{
"data":[
{
"{#DISK_NAME}":"xvda"
},
{
"{#DISK_NAME}":"xvdb"
}
]
}
2.编写获取磁盘I/O信息的脚本
使用iostat收集磁盘I/O信息
#/bin/sh
device=$1
item=$2
/usr/bin/iostat -dxkt 1 5 > /tmp/iostat_output 2>/dev/null
case $item in
rrqm)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b
;;
wrqm)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b
;;
rps)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b
;;
wps)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b
;;
rKBps)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b
;;
wKBps)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b
;;
avgrq-sz)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b
;;
avgqu-sz)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b
;;
await)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b
;;
svctm)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b
;;
util)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b
;;
esac
3.修改Zabbix agent配置文件
添加disk_status.conf
Timeout=10
### Option: UserParameter
# User-defined parameter to monitor. There can be several user-defined parameters.
# Format: UserParameter=<key>,<shell command>
# See 'zabbix_agentd' directory for examples.
#
# Mandatory: no
# Default:
# UserParameter=
UserParameter=disk.discovery,/usr/bin/python /usr/local/zabbix/bin/disk_discovery.py
UserParameter=disk.status[*],/usr/local/zabbix/bin/disk_status.sh 1 2
这里需要注意,Zabbix agent默认的Timeout值为3秒,由于这里使用iostat -ydxkt 1 3,每隔1秒刷新一次,刷新3次,所以如果获取磁盘信息Timeout设置时间短了的话会出现ZBX_NOTSUPPORTED这样的错误
然后重新加载zabbix agent
4.通过在zabbix server或zabbix proxy端使用zabbix_get获取磁盘信息
$ /usr/local/zabbix/bin/zabbix_get -s 192.168.1.190 -p 10055 -k "disk.discovery"
{
"data":[
{
"{#DISK_NAME}":"xvda"
},
{
"{#DISK_NAME}":"xvdb"
},
{
"{#DISK_NAME}":"xvdc"
}
]
}
$ /usr/local/zabbix/bin/zabbix_get -s 192.168.1.190 -p 10055 -k "disk.status[xvda,wps]"10.00
边栏推荐
- R语言ggplot2可视化:gganimate包创建动态折线图动画(gif)、使用transition_reveal函数在动画中沿给定维度逐步显示数据、在折线移动方向添加数据点
- Use typora to draw flow chart, sequence diagram, sequence diagram, Gantt chart, etc. for detailed explanation
- Excel quick cross table copy and paste
- 解决msvcp120d.dll和msvcr120d.dll缺失
- AOSP ~ NTP ( 网络时间协议 )
- 2022年中南大学夏令营面试经验
- Double linked list of linear list
- The tutor put forward 20 pieces of advice to help graduate students successfully complete their studies: first, don't plan to take a vacation
- 银泰百货点燃城市“夜经济”
- Linear table sequence table comprehensive application problem p18
猜你喜欢

(数据库提权——Redis)Redis未授权访问漏洞总结

Mmc5603nj geomagnetic sensor (Compass example)

同事写了一个责任链模式,bug无数...

Understand go language context in one article

Application of high-precision indoor positioning technology in safety management of smart factory

ASP. Net hotel management system

机器学习 3.2 决策树模型 学习笔记(待补)

Excel quick cross table copy and paste

ASP.NET-酒店管理系统

The tutor put forward 20 pieces of advice to help graduate students successfully complete their studies: first, don't plan to take a vacation
随机推荐
2022 northeast four provinces match VP record / supplementary questions
Hongmeng fourth training
[vtk] source code interpretation of vtkpolydatatoimagestencil
phpcms 提示信息页面跳转showmessage
Kibana - installation and configuration of kibana
Excel quick cross table copy and paste
How to make others fear you
Spl06-007 air pressure sensor (example of barometer)
[vtk] interpretation of source code comments of vtkwindowedsincpolydatafilter
C语言 AES加解密
Program process management tool -go Supervisor
Nestjs配置服务,配置Cookie和Session
Double linked list of linear list
并发编程-单例
After watching the video, AI model learned to play my world: cutting trees, making boxes, making stone picks, everything is good
STL教程9-容器元素深拷贝和浅拷贝问题
P3250 [HNOI2016] 网络 + [NECPC2022] F.Tree Path 树剖+线段树维护堆
The R language uses the hist function in the native package (basic import package, graphics) to visualize the histogram plot
2022年湖南工学院ACM集训第二次周测题解
R语言使用原生包(基础导入包、graphics)中的hist函数可视化直方图(histogram plot)