zabbix监控linux文件目录,zabbix监控linux磁盘性能
原标题: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磁盘性能相关推荐
- Linux文件目录付空,Linux 文件系统
1 * Copyright (c) 2012级, 烟台大学计算机学院 2 * All rights reserved. 3 * 作者:付记超 4 * 完成日期:2015 年 2 月 5 ...
- zabbix监控linux文件目录,zabbix之日志文件监控
一.日志item介绍 下面介绍zabbix另一个"重量级"的功能--日志文件监控,它最主要的是监控日志文件中有没有某个字符串的表达式,对应日志轮转与否,zabbix都支持. 在配置 ...
- linux下proc里关于磁盘性能的参数
我 们在磁盘写操作持续繁忙的服务器上曾经碰到一个特殊的性能问题.每隔 30 秒,服务器就会遇到磁盘写活动高峰,导致请求处理延迟非常大(超过3秒).后来上网查了一下资料,通过调整内核参数,将写活动的高峰 ...
- linux文件目录备份zip,linux文件压缩备份
实验(三) 文件压缩和备份 一.学习目的 1.熟悉文件压缩与解压的相关操作. 2.掌握linux备份的类型及基本备份操作. 二.学习任务 第一部分:zip和unzip.gzip和gunzip命令1.将 ...
- linux文件目录的管理,Linux文件目录管理
1.目录与路径 相对路径与绝对路径 绝对路径:路径的写法『一定由根目录 / 写起』,例如:/usr/share/doc这个目录 相对路径:路径的写法『不是由根目录/写起』,例如: /usr/share ...
- Linux文件目录sha256,在Linux系统中使用SHA256来校验下载的文件的方法
当你下载了一个 ISO 镜像,特别是从 BitTorrent 网络上很多未知的种子处下载的,通常建议要验证下载镜像的完整性. 对于 Ubuntu 发行版的情况, Canonical 提供了几个供验证使 ...
- 重要linux指令的使用,Linux必学的重要命令
tar 1. 作用 tar命令是Unix/Linux系统中备份文件的可靠方法,几乎可以工作于任何环境中,它的使用权限是所有用户. 2. 格式 tar[主选项 辅选项]文件或目录 3.主要参数 使用该命 ...
- linux 命令传文件大小,Linux必学的60个命令(6)-其他
Linux必学的重要命令 (1) 在前面几讲中,我们把Linux命令按照在系统中的作用分成几个部分分别予以介绍.但是,还有一些命令不好划分,然而学习它们同样是比较重要的. tar 1.作用 tar命令 ...
- linux 访问磁盘bin,zabbix应用之Low-level discovery监控磁盘IO
zabbix自带的"Template OS Linux"模板支持监控已挂载的磁盘空间利用率,是利用LLD(Low-level discovery)实现的,却没有对磁盘IO监控.本篇 ...
最新文章
- Dialog、Toast、Snackbar,你真的了解它们吗?
- Cordic算法——verilog实现
- TFS 2010 使用手册(二)项目集合与项目
- 顺时针或逆时针旋转180度等于先作一个水平镜像,再作一个垂直镜像
- 【Android】7.1 布局控件常用的公共属性
- 原来它一直在“装嫩”|“心电图”揭秘富锂巨星真实年龄
- linux 抓包文件 导出,Fiddler抓包13-fiddler 抓包导出 curl 命令行
- sysbench tpcc-mysql_MySQL压测sysbench/tpcc
- fp算法例题_FP-growth算法
- html整体布局居中,HTML实现常见居中布局
- uni-app使用阿里矢量图库导入 icon 彩色和黑白色
- C语言学习(一)C语言能干什么?为什么要学习C语言?
- 7月11号,大连小雨
- 信号与系统奥本海姆_魏小石 “奥本海姆、电子信息系统与20世纪民间传统音乐”讲座预告...
- html左侧悬浮音乐插件,固定在网页底部的HTML5音乐播放器插件代码
- 调和级数发散的简短证明
- 利用串口解析AIS接收机数据
- 深度估计(Depth Estimation)
- 【双11背后的技术】AliCloudDB——双11商家后台数据库的基石
- 华大单片机DDL库与lite库的区别
热门文章
- java pdfbox2 中文乱码,如何从PDFBox 2.0.2中的PDDocument提取字体
- swiper.js使用心得
- 去除bootstrap中input输入框的蓝色光
- php矢量瓦片,矢量瓦片相关计算函数
- c语言文件打开函数,C语言fopen函数中文件打开方式(参数值)
- 如何设计良好的viewcontroller
- nfs linux系统服务,Linux系统服务搭建之NFS
- java測試動態方法_java反射学习
- 猪行天下之Python基础——1.1 Python开发环境搭建
- 前端面试题目汇总摘录(JS 基础篇)