Zabbix lld发现磁盘监控

一、软件版本

操作系统:CentOS-6.5-x86_64

zabbix版本:3.0.3

二、脚本编写:

1、python版本:

#!/usr/bin/env python

import json

import subprocess

def get_disk():

cmd = """grep -E "(vd[a-z]$|sd[a-z]$)" /proc/partitions|awk ‘{print $4}‘"""

disk_data = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

disk_total = []

disktotal_dict = {"data":None}

for dev in disk_data.stdout.readlines():

disk_dict = {}

disk_dict["{#DISKNAME}"]=dev.strip("\n").strip()

disk_total.append(disk_dict)

disktotal_dict["data"]=disk_total

jsonstr = json.dumps(disktotal_dict, sort_keys=True, indent=4)

return jsonstr

if __name__ == "__main__":

print get_disk()

2、shell脚本版本:

#!/bin/bash

disk_array=(`grep -E "(vd[a-z]$|sd[a-z]$)" /proc/partitions|awk ‘{print $4}‘`)

length=${#disk_array[@]}

printf "{\n"

printf  ‘\t‘"\"data\":["

for ((i=0;i<$length;i++))

do

printf ‘\n\t\t{‘

printf "\"{#DISKNAME}\":\"${disk_array[$i]}\"}"

if [ $i -lt $[$length-1] ];then

printf ‘,‘

fi

done

printf  "\n\t]\n"

printf "}\n"

三、key的查看解析:主要 /proc/diskstats文件读取:

1、读取具体文件解析:

[[email protected] ~]# cat /proc/diskstats | grep sda

8       0 sda 844141 181483 43038400 10926021 147765030 3756991779 31237698668 4206792245 0 52927059 4217644644

##每一项解读:

844141 181483 43038400 10926021 147765030 3756991779 31237698668 4206792245 0 52927059 4217644644

第一个区域:读完成次数 ----- 读磁盘的次数,成功完成读的总次数。

第二个区域:合并读完成次数, 第6个域:合并写完成次数。为了效率可能会合并相邻的读和写。从而两次4K的读在它最终被处理到磁盘上之前可能会变成一次8K的读,才被计数(和排队),因此只有一次I/O操作。这个域使你知道这样的操作有多频繁。

第3个域:读扇区的次数,成功读过的扇区总次数。

第4个域:读花费的毫秒数,这是所有读操作所花费的毫秒数

第5个区域:写完成次数 ----写完成的次数,成功写完成的总次数。

第6区域:合并写完成次数 -----合并写次数。

第7个域:写扇区次数 ---- 写扇区的次数,成功写扇区总次数。

第8个域:写操作花费的毫秒数  ---  写花费的毫秒数,这是所有写操作所花费的毫秒数

第9个域:正在处理的输入/输出请求数 -- -I/O的当前进度,只有这个域应该是0。当请求被交给适当的request_queue_t时增加和请求完成时减小。

第10个域:输入/输出操作花费的毫秒数  ----花在I/O操作上的毫秒数,这个域会增长只要field 9不为0。

第11个域:输入/输出操作花费的加权毫秒数 -----  加权, 花在I/O操作上的毫秒数,在每次I/O开始,I/O结束,I/O合并时这个域都会增加。这可以给I/O完成时间和存储那些可以累积的提供一个便利的测量标准。

2、编写agnet key的几个监控项目:

UserParameter=custom.vfs.dev.read.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk ‘{print $$4}‘         ###读磁盘完成的次数

UserParameter=custom.vfs.dev.read.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk ‘{print $$7}‘          ###读花费的毫秒数

UserParameter=custom.vfs.dev.write.ops[*],cat /proc/diskstats | grep $1 | head -1 | awk ‘{print $$8}‘        ###写完成的次数

UserParameter=custom.vfs.dev.write.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk ‘{print $$11}‘        ###写操作花费的毫秒数

UserParameter=custom.vfs.dev.io.active[*],cat /proc/diskstats | grep $1 | head -1 | awk ‘{print $$12}‘       ###当前的IO情况

UserParameter=custom.vfs.dev.io.ms[*],cat /proc/diskstats | grep $1 | head -1 | awk ‘{print $$13}‘          ###花在I/O操作上的毫秒数

UserParameter=custom.vfs.dev.read.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk ‘{print $$6}‘    ##读取扇区次数

UserParameter=custom.vfs.dev.write.sectors[*],cat /proc/diskstats | grep $1 | head -1 | awk ‘{print $$10}‘  ##写扇区次数

时间: 2024-10-10 13:43:42

Zabbix lld发现磁盘监控的相关文章

zabbix自动发现与监控内存和CPU使用率最高的进程

监控需求 某项目的应用服务器CPU和内存使用率的监控,通过zabbix系统监控记录应用服务器上进程的CPU和内存的使用情况,并以图表的形式实时展现,以便于我们分析服务器的性能瓶颈. 监控方式 利用zabbix监控系统的自动发现功能,首先编写shell脚本获取服务器的CPU和内存资源使用率最大的进程,以json的格式输出,然后对这些进程的CPU和内存资源使用情况进行监控.(本文监控的进程为Linux服务器中资源使用率最高的10个进程.) 缺点 不适用于监控固定的进程 首先使用top命令查看进程状态

zabbix自动发现监控mongo

1: zabbix自动发现mongo监控的端口,并返回zabbix_server需要的格式,脚本部署在zabbix_agent上,路径为/usr/local/zabbix/zabbix_discover_mongo.sh,脚本内容如下: #!/bin/sh #zhuangweihong 20160419 zabbix discover mysql res=`sudo ss -tulnp|grep mongo|grep -v 28107|awk '{print $(NF-2)}'|awk -F':

zabbix自动发现规则之磁盘IO监控

本文章介绍zabbix自动发现规则之磁盘IO监控的案例实践. 主机名:mysql-slave 首先在zabbix_agent下定义一个获取磁盘IO信息的脚本: cat /etc/zabbix/scripts/disk_io.sh #!/bin/bash Disk=$1 Option=$2 case $Option in rrqm) iostat -dxk 1 2|grep "\b$Disk\b" |tail -1|awk '{print $2}' ;; wrqm) iostat -dx

zabbix 用 LLD 完全自动化监控 Oracle

文章转载自:http://mp.weixin.qq.com/s?__biz=MzA3MzYwNjQ3NA==&mid=2651296856&idx=1&sn=2bdf780719d3bd913f80ebab18ada237&scene=23&srcid=0719KBxswRECyHXV3DbvSgSS#rd 在这里本人只是作为好的文章储存,不做他用 原创 2016-07-19 南非蜘蛛 运维帮 上次写完< Zabbix用好LLD,立马感觉高大上许多>后,

Zabbix自动发现与自动注册、自定义监控的实现

一.自动发现与自动注册 Zabbix的发现主要包括三种类型: 1)Zabbix的自动网络发现 Zabbix提供非常有利和灵活的自动网络发现功能.通过网络发现,可以实现加速Zabbix部署.简化管理.在不断变化的环境中使用Zabbix而不需要过多的管理: zabbix网络发现基于以下信息:1)IP段自动发现:2)可用的外部服务(FTP.SSH.WEB.TCP等):3)从Zabbix客户端接收到信息:4)从SNMP客户端接收到信息: 1)自动发现原理 网络发现主要由两个步骤组成:发现和动作: Zab

zabbix自动发现oracle表空间并监控其使用率

监控需求 Oracle表空间使用率实时监控,当表空间使用率达到95%时触发告警机制.Oracle表空间分为系统默认表空间和用户创建的表空间,而表空间又有自动扩展和非自动扩展两种类型,用户(DBA)在创建表空间时可以根据应用需求指定是否开启表空间自动扩展.那么在这里我们需要分析一个监控策略,就是当zabbix监控到某个表空间使用率达到95%,那么就让触发器触发警告(Warning)信息,并发送邮件给DBA或管理者.当检测到表空间没有开启自动扩展时,则触发Information信息.说明一下:ora

zabbix自动发现mysql端口并监控

一.需求: 因为我们是游戏业务,要用到mysql,一个服务器上面跑多个mysql实例也是很正常.如果单独手动一台台修改agent.conf,添加web监控,太费时费力.所以就想的要用zabbix 的自动发现来监控 二.配置Agent 1.编写自动发现端口脚本 [[email protected] ~]# cat /etc/zabbix/alertscripts/zabbix_discovery_mysql.sh  #!/bin/bash mysql() {             port=($

zabbix自动发现结合shell实现自动发现占用内存最大top10进程并监控其资源

最近在想一个问题,线上服务器跑的服务五花八门,可能这台跑的是nginx,另一台跑的是mysql,其他的跑的是nfs或者其他服务等等,通过某一个脚本中固定的写入一些服务来实现监控所有的服务器的进程占用资源情况占用zabbix服务器资源不说,假如该服务器跑的服务不在固定列表中,监控服务获取不到相应数据. 为了解决这个问题,最近在想通过zabbix的自动发现功能能不能实现自动发现占用服务器内存最大的N个进程,然后对这些进程占用内存和CPU的资源情况进行监控获取数据呢?于是就有了本篇文章的诞生. 首先,

zabbix自动发现监控多台mysql

1: 前言 由于前面写的博客,zabbix自动发现监控redis.zabbix自动发现监控mongo这两篇博客虽然都能自动发现并监控,但是由于每个zabbix_agentd都得配置,监控起来非常不方便,因此,再做了个模板,能够自动发现并监控多台mysql.这个方法在监控mongo.redis或者mysql主从等时候也都适用. 2: 在zabbix_agentd下编写自动发现并监控多台mysql的脚本,脚本如下: #!/bin/sh #zhuangweihong 20160512 zabbix d