linux磁盘i o跟踪,利用zabbix动态监控磁盘I/O
最近在看Linux I/O子系统相关的资料,需要监控每台服务器的磁盘I/O,特别是MongoDB数据库服务器的磁盘I/O,由于每台服务器的磁盘名称可能不一样,所以需要用到Zabbix的LLD功能来发现磁盘并监控I/O
参考文章
编写发现磁盘的脚步
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
do
printf '\n\t\t{'
printf "\"{#DISK_NAME}\":\"${diskarray[$i]}\"}"
if [ $i -lt $[$length-1] ];then
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信息
nohup /usr/bin/iostat -dxkt 1 > /tmp/iostat_output 2>/dev/null &
#/bin/sh
device=$1
item=$2
case $item in
rrqm)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b"|tail -1|awk '{print $2}'
;;
wrqm)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b"|tail -1|awk '{print $3}'
;;
rps)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b"|tail -1|awk '{print $4}'
;;
wps)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $5}'
;;
rKBps)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $6}'
;;
wKBps)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $7}'
;;
avgrq-sz)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $8}'
;;
avgqu-sz)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $9}'
;;
await)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $10}'
;;
svctm)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $11}'
;;
util)
/usr/bin/tail -n20 /tmp/iostat_output |grep "\b$device\b" |tail -1|awk '{print $12}'
;;
esac
3.修改Zabbix agent配置文件
添加disk_status.conf
### Option: UserParameter
# User-defined parameter to monitor. There can be several user-defined parameters.
# Format: UserParameter=,
# 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
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
5.添加磁盘监控模板
在添加item的时候注意,由于使用的是iostat -k 获取每秒的读写大小,所以iostat显示的是以KB为单位,在zabbix上以B为基本单位,需要用到Use custom multiplier 这个选项将zabbix agent返回的KB值乘以1024变成B,然后zabbix agent再以B为单位显示成B或KB或MB便于查看。
linux磁盘i o跟踪,利用zabbix动态监控磁盘I/O相关推荐
- Zabbix动态监控磁盘I/O
需要监控每台服务器的磁盘I/O,由于每台服务器的磁盘名称可能不一样,所以需要用到Zabbix的LLD功能来发现磁盘并监控I/O. 一.客户端(被监控端) 1.发现磁盘的脚本(disk_discover ...
- 利用系统错误日志监控磁盘健康状况
一.故障现象 这个星期出现了两块磁盘不能读写,后面通过系统日志查看,关键字"EXT4-fs error对应某个磁盘",因此利用zabbix,把系统日志抓取出来,作告警! 二.步聚 ...
- zabbix之监控磁盘读写速度
Zabbix作为强大的服务器监控平台,本次利用它来检测服务器中各个硬盘的读写速度,以便能在硬盘性能下降能够即使更换,不影响工作效率. 1.dd命令使用 利用Linux自带的dd命令来测试硬盘的读写速度 ...
- linux 占用内存 脚本,如何利用Bash脚本监控Linux的内存使用情况
前言 目前市场上有许多开源监控工具可用于监控 Linux 系统的性能.当系统达到指定的阈值限制时,它可以发送电子邮件警报.它可以监视 CPU 利用率.内存利用率.交换利用率.磁盘空间利用率等所有内容. ...
- linux 访问磁盘bin,zabbix应用之Low-level discovery监控磁盘IO
zabbix自带的"Template OS Linux"模板支持监控已挂载的磁盘空间利用率,是利用LLD(Low-level discovery)实现的,却没有对磁盘IO监控.本篇 ...
- zabbix如何监控oracle,使用zabbix监控oracle数据库的方法详解
一.概述 zabbix是一款非常强大,同时也是应用最为广泛的开源监控软件,本文将给大家介绍如何利用zabbix+python监控oracle数据库. 二.环境介绍 以下是我安装的环境,实际部署时并不需 ...
- zabbix——分布式监控系统
目录 zabbix概述 zabbix 是什么 zabbix 监控原理 zabbix常见的五个程序 zabbix端口号 安装 zabbix 5.0 部署 zabbix 服务端 部署 zabbix 客户端 ...
- zabbix日志监控:操作系统、业务系统、文件大小、多行日志
zabbix日志监控:操作系统.业务系统.文件大小.多行日志 目录 1 监控操作系统日志 2 监控业务系统日志 具体要求: 分析: 操作: 3 监控日志文件大小 (1)在被管主机当中安装agent ( ...
- linux服务器系统_利用Zabbix监控系统监测Linux服务器系统时间是否准确完美实现...
服务器时间校准是非常重要的,因为很多应用服务都是需要基于时间的,服务器系统时间如果不准确的话就会产生很多问题.虽然我们可以通过部署NTP时间服务器来进行校准,但是有时候感觉还不够保险,而这往往也是很多 ...
最新文章
- 一个简单的mysql存储过程
- Eclipse中spring boot的安装和创建简单的Web应用
- 一个野路子java程序员的自述
- 磁盘 I/O性能指标
- vmware中ubuntu虚拟机扩容
- java类快速构造_程序员有什么办法能快速梳理java知识点?有这八张图就够了
- 公司想建个FTP文件服务器,自己折腾把一台电脑做成文件服务器了,但是考虑稳定性放弃,计划买个有哪些建议?
- pycharm搭建spark环境
- 【java笔记】Stream流(2):获取流的两种方法
- [分享].Net脱壳利器de4dot介绍
- 【Linux】U盘配合WinPE 安装debian8.6
- Vscode鼠标乱跳
- PHP执行shell_exec方法失败
- 3dmark压力测试 linux,拷机还用Furmark? 瞧瞧3DMark压力测试怎样玩
- 点亮LED灯(LED)
- 设置Windows桌面壁纸
- ue4物品审视功能及景深效果
- 金融工程会用哪些计算机知识,金融工程专业对计算机的能力要求到底是什么
- 小米、华为和智汀智能家居从单品向全屋智能前进
- C/C++游戏项目详细教程:《中国象棋》
热门文章
- IF10+的数据库文章!这里有5个案例,一起发起来?
- GraPhlAn绘制的超高颜值物种树Cladogram
- 环境微生物期刊—mBio介绍
- TBtools - 超过一万人在使用的生信小工具
- R语言编写自定义函数、创建使用ggplot2生成图标(icon)的主题(theme)函数、使用ggplot2以及自定义的图标主题函数创建箱图(boxplot)图标、ggsave保存图标(png、svg
- R语言使用pwr包的pwr.f2.test函数对线性回归模型(Linear models)进行效用分析(power analysis)的语法
- R语言attributes函数(获取属性、设置属性)、attr函数(改变一个属性)、structure函数(改变数据形状)实战
- Association Rules 关联规则
- 基于 PacBio 测序数据的纠错算法评测与剪切位点识别研究
- FLAS: fast and high-throughput algorithm for PacBio long-read self-correction FLAS:快速、高通量的PacBio lon