当前位置:网站首页>利用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
边栏推荐
- Use typora to draw flow chart, sequence diagram, sequence diagram, Gantt chart, etc. for detailed explanation
- 量化计算调研
- MATLAB extrait les données numériques d'un fichier txt irrégulier (simple et pratique)
- 外插散点数据
- FL Studio 20无限试用版水果编曲下载
- How PHP solves the problem of high concurrency
- DS90UB949
- 2022年湖南工学院ACM集训第二次周测题解
- 用了这么久线程池,你真的知道如何合理配置线程数吗?
- [OBS] encapsulate the basic process of OBS acquisition
猜你喜欢
Xml的(DTD,xml解析,xml建模)
AOSP ~ NTP ( 网络时间协议 )
Viewing binary bin files with notepad++ editor
Arctangent entropy: the latest SCI paper in July 2022
Numpy np. Max and np Maximum implements the relu function
同事写了一个责任链模式,bug无数...
机器学习 3.2 决策树模型 学习笔记(待补)
The excel table is transferred to word, and the table does not exceed the edge paper range
Extrapolated scatter data
STL教程10-容器共性和使用场景
随机推荐
.\vmware-vdiskmanager.exe -k “c:\\xxxxx.vmdk”
Arctangent entropy: the latest SCI paper in July 2022
FL Studio 20无限试用版水果编曲下载
DS90UB949
Unity3D学习笔记5——创建子Mesh
用了这么久线程池,你真的知道如何合理配置线程数吗?
C language log base zlog basic use
ftp登录时,报错“530 Login incorrect.Login failed”
Cuiyusong, CTO of youzan: the core goal of Jarvis is to make products smarter and more reliable
repo ~ 常用命令
基于turtlebot3实现SLAM建图及自主导航仿真
抓包整理外篇fiddler———— 会话栏与过滤器[二]
ORACLE进阶(一) 通过EXPDP IMPDP命令实现导dmp
PHP server interacts with redis with a large number of close_ Wait analysis
After using the thread pool for so long, do you really know how to reasonably configure the number of threads?
MATLAB提取不規則txt文件中的數值數據(簡單且實用)
Yintai department store ignites the city's "night economy"
[vtk] interpretation of source code comments of vtkwindowedsincpolydatafilter
MATLAB extrait les données numériques d'un fichier txt irrégulier (simple et pratique)
Mysql根据时间搜索常用方法整理