原标题:zabbix监控linux磁盘性能

前提环境

perl和python,以及zabbix-agent已是可用状态。

需要主要监控的指标

1:每秒IO数,即iops或tps

2:吞吐率

3:平均IO尺寸,avgrq-sz

4:IO等待队列长度,avgqu-sz

5:磁盘活动时间百分比,util

安装iostat工具

yum install sysstat -y #centos7安装iostat工具,centos6之前自带

在agent端创建用于存放执行脚本的目录,并修改权限

mkdir /usr/lib/zabbix/alerts/ -p

chown zabbix:zabbix /usr/lib/zabbix/ -R

在/usr/lib/zabbix/alerts/目录下创建磁盘发现脚本

cd /usr/lib/zabbix/alerts/

vim discover_disk.pl

#!/usr/bin/perl

# give disk dmname, returns Proxmox VM name

sub get_vmname_by_id

{

$vmname=`cat /etc/qemu-server/$_[0].conf | grep name | cut -d \: -f 2`;

$vmname =~ s/^\s+//; #remove leading spaces

$vmname =~ s/\s+$//; #remove trailing spaces

return $vmname

}

$first = 1;

print "{\n";

print "\t\"data\":[\n\n";

for (`cat /proc/diskstats`)

{

($major,$minor,$disk) = m/^\s*([0-9]+)\s+([0-9]+)\s+(\S+)\s.*$/;

$dmnamefile = "/sys/dev/block/$major:$minor/dm/name";

$vmid= "";

$vmname = "";

$dmname = $disk;

$diskdev = "/dev/$disk";

# DM name

if (-e $dmnamefile) {

$dmname = `cat $dmnamefile`;

$dmname =~ s/\n$//; #remove trailing \n

$diskdev = "/dev/mapper/$dmname";

# VM name and ID

if ($dmname =~ m/^.*--([0-9]+)--.*$/) {

$vmid = $1;

#$vmname = get_vmname_by_id($vmid);

}

}

#print("$major $minor $disk $diskdev $dmname $vmid $vmname \n");

print "\t,\n" if not $first;

$first = 0;

print "\t{\n";

print "\t\t\"{#DISK}\":\"$disk\",\n";

print "\t\t\"{#DMNAME}\":\"$dmname\",\n";

print "\t\t\"{#VMNAME}\":\"$vmname\",\n";

print "\t\t\"{#VMID}\":\"$vmid\"\n";

print "\t}\n";

}

print "\n\t]\n";

print "}\n";

在/usr/lib/zabbix/alerts/目录下创建定义key需要的文件,用于获取io监控值

vim zbx_parse_iostat_values.sh

#!/bin/bash

dev=$1

type=$2

#enable debug mode

debug=0

if [[ -z "$dev" ]]; then

echo "error: wrong input value (device)"

exit 1

fi

if [[ -z "$type" ]]; then

echo "error: wrong input value (type)"

exit 1

fi

columns=`iostat -xN |egrep -o "^Device.*"`

columnsarray=($columns)

column_id=1

for i in "${columnsarray[@]}"

do

#echo "column: $i"

if [[ "$i" = "$type" ]]; then

if [[ $debug -eq 1 ]]; then

echo "right column (${i}) found...column_id: $column_id "

fi

id="$"

column_id_id=$id$column_id

iostats=`iostat -xN |egrep -o "^${dev}[[:space:]]+.*" |awk "{print ${column_id_id}}"`

fi

column_id=$[column_id + 1]

done

if [ -z "$iostats" ]; then

echo "error: \"device\" or \"type\" not found (${dev},${type})"

exit 3

fi

iostats_lines=`wc -l < << "$iostats"`

if [ $iostats_lines -ne 1 ]; then

echo "error: wrong output value (${iostats_lines})"

exit 2

fi

echo $iostats

if [[ $debug -eq 1 ]]; then

echo "- - - - - - - - - -"

echo $columns

iostats_debug=`iostat -xN |egrep -o "^${dev}[[:space:]]+.*"`

echo $iostats_debug

echo "- - - - - - - - - -"

fi

exit 0

为刚才创建的两个文件赋予执行权限

chmod +x /usr/lib/zabbix/alerts/*

在zabbix-agent的配置文件上添加如下内容

vim /etc/zabbix/zabbix_agentd.conf

# diskio discovery

UserParameter=discovery.disks.iostats,/usr/lib/zabbix/alerts/discover_disk.pl

UserParameter=custom.vfs.dev.iostats.rrqm[*],/usr/lib/zabbix/alerts/zbx_parse_iostat_values.sh $1 "rrqm/s"

UserParameter=custom.vfs.dev.iostats.wrqm[*],/usr/lib/zabbix/alerts/zbx_parse_iostat_values.sh $1 "wrqm/s"

UserParameter=custom.vfs.dev.iostats.rps[*],/usr/lib/zabbix/alerts/zbx_parse_iostat_values.sh $1 "r/s"

UserParameter=custom.vfs.dev.iostats.wps[*],/usr/lib/zabbix/alerts/zbx_parse_iostat_values.sh $1 "w/s"

UserParameter=custom.vfs.dev.iostats.avgrq[*],/usr/lib/zabbix/alerts/zbx_parse_iostat_values.sh $1 "avgrq-sz"

UserParameter=custom.vfs.dev.iostats.avgqu[*],/usr/lib/zabbix/alerts/zbx_parse_iostat_values.sh $1 "avgqu-sz"

UserParameter=custom.vfs.dev.iostats.await[*],/usr/lib/zabbix/alerts/zbx_parse_iostat_values.sh $1 "await"

UserParameter=custom.vfs.dev.iostats.svctm[*],/usr/lib/zabbix/alerts/zbx_parse_iostat_values.sh $1 "svctm"

UserParameter=custom.vfs.dev.iostats.util[*],/usr/lib/zabbix/alerts/zbx_parse_iostat_values.sh $1 "%util"

UserParameter=custom.vfs.dev.iostats.rkB[*],/usr/lib/zabbix/alerts/zbx_parse_iostat_values.sh $1 "rkB/s"

UserParameter=custom.vfs.dev.iostats.wkB[*],/usr/lib/zabbix/alerts/zbx_parse_iostat_values.sh $1 "wkB/s"

重启zabbix-agent端

systemctl restart zabbix-agent.service

将zabbix关于linux磁盘的模板文件下载下来并导入

wget https://qiniu.wsfnk.com/Template_Linux_Disk_IO_Stats.xml

按如图要求导入模板Template_Linux_Disk_IO_Stats.xml

创建发现磁盘的正则表达式,模板需要使用它

#这里的名称一定要是它,建议复制粘贴 "Linux disks for autodiscovery"

将主机链接到该模板上

查看图形

责任编辑:

zabbix监控linux文件目录,zabbix监控linux磁盘性能相关推荐

  1. Linux文件目录付空,Linux 文件系统

    1  *  Copyright (c) 2012级, 烟台大学计算机学院 2  *  All rights reserved. 3  *  作者:付记超 4  *  完成日期:2015 年 2 月 5 ...

  2. zabbix监控linux文件目录,zabbix之日志文件监控

    一.日志item介绍 下面介绍zabbix另一个"重量级"的功能--日志文件监控,它最主要的是监控日志文件中有没有某个字符串的表达式,对应日志轮转与否,zabbix都支持. 在配置 ...

  3. linux下proc里关于磁盘性能的参数

    我 们在磁盘写操作持续繁忙的服务器上曾经碰到一个特殊的性能问题.每隔 30 秒,服务器就会遇到磁盘写活动高峰,导致请求处理延迟非常大(超过3秒).后来上网查了一下资料,通过调整内核参数,将写活动的高峰 ...

  4. linux文件目录备份zip,linux文件压缩备份

    实验(三) 文件压缩和备份 一.学习目的 1.熟悉文件压缩与解压的相关操作. 2.掌握linux备份的类型及基本备份操作. 二.学习任务 第一部分:zip和unzip.gzip和gunzip命令1.将 ...

  5. linux文件目录的管理,Linux文件目录管理

    1.目录与路径 相对路径与绝对路径 绝对路径:路径的写法『一定由根目录 / 写起』,例如:/usr/share/doc这个目录 相对路径:路径的写法『不是由根目录/写起』,例如: /usr/share ...

  6. Linux文件目录sha256,在Linux系统中使用SHA256来校验下载的文件的方法

    当你下载了一个 ISO 镜像,特别是从 BitTorrent 网络上很多未知的种子处下载的,通常建议要验证下载镜像的完整性. 对于 Ubuntu 发行版的情况, Canonical 提供了几个供验证使 ...

  7. 重要linux指令的使用,Linux必学的重要命令

    tar 1. 作用 tar命令是Unix/Linux系统中备份文件的可靠方法,几乎可以工作于任何环境中,它的使用权限是所有用户. 2. 格式 tar[主选项 辅选项]文件或目录 3.主要参数 使用该命 ...

  8. linux 命令传文件大小,Linux必学的60个命令(6)-其他

    Linux必学的重要命令 (1) 在前面几讲中,我们把Linux命令按照在系统中的作用分成几个部分分别予以介绍.但是,还有一些命令不好划分,然而学习它们同样是比较重要的. tar 1.作用 tar命令 ...

  9. linux 访问磁盘bin,zabbix应用之Low-level discovery监控磁盘IO

    zabbix自带的"Template OS Linux"模板支持监控已挂载的磁盘空间利用率,是利用LLD(Low-level discovery)实现的,却没有对磁盘IO监控.本篇 ...

最新文章

  1. Dialog、Toast、Snackbar,你真的了解它们吗?
  2. Cordic算法——verilog实现
  3. TFS 2010 使用手册(二)项目集合与项目
  4. 顺时针或逆时针旋转180度等于先作一个水平镜像,再作一个垂直镜像
  5. 【Android】7.1 布局控件常用的公共属性
  6. 原来它一直在“装嫩”|“心电图”揭秘富锂巨星真实年龄
  7. linux 抓包文件 导出,Fiddler抓包13-fiddler 抓包导出 curl 命令行
  8. sysbench tpcc-mysql_MySQL压测sysbench/tpcc
  9. fp算法例题_FP-growth算法
  10. html整体布局居中,HTML实现常见居中布局
  11. uni-app使用阿里矢量图库导入 icon 彩色和黑白色
  12. C语言学习(一)C语言能干什么?为什么要学习C语言?
  13. 7月11号,大连小雨
  14. 信号与系统奥本海姆_魏小石 “奥本海姆、电子信息系统与20世纪民间传统音乐”讲座预告...
  15. html左侧悬浮音乐插件,固定在网页底部的HTML5音乐播放器插件代码
  16. 调和级数发散的简短证明
  17. 利用串口解析AIS接收机数据
  18. 深度估计(Depth Estimation)
  19. 【双11背后的技术】AliCloudDB——双11商家后台数据库的基石
  20. 华大单片机DDL库与lite库的区别

热门文章

  1. java pdfbox2 中文乱码,如何从PDFBox 2.0.2中的PDDocument提取字体
  2. swiper.js使用心得
  3. 去除bootstrap中input输入框的蓝色光
  4. php矢量瓦片,矢量瓦片相关计算函数
  5. c语言文件打开函数,C语言fopen函数中文件打开方式(参数值)
  6. 如何设计良好的viewcontroller
  7. nfs linux系统服务,Linux系统服务搭建之NFS
  8. java測試動態方法_java反射学习
  9. 猪行天下之Python基础——1.1 Python开发环境搭建
  10. 前端面试题目汇总摘录(JS 基础篇)