zabbix监控linux磁盘性能具体方法

Zabbix 是一个企业级分布式开源监控解决方案,能够监控众多网络参数和服务器的健康度、完整性,使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题,下面为大家分享一下使用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/alertscripts/ -p
chown zabbix:zabbix /usr/lib/zabbix/ -R

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

cd /usr/lib/zabbix/alertscripts/
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/alertscripts/目录下创建定义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/alertscripts/*

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

vim /etc/zabbix/zabbix_agentd.conf
# diskio discovery
UserParameter=discovery.disks.iostats,/usr/lib/zabbix/alertscripts/discover_disk.pl
UserParameter=custom.vfs.dev.iostats.rrqm[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "rrqm/s"
UserParameter=custom.vfs.dev.iostats.wrqm[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "wrqm/s"
UserParameter=custom.vfs.dev.iostats.rps[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "r/s"
UserParameter=custom.vfs.dev.iostats.wps[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "w/s"
UserParameter=custom.vfs.dev.iostats.avgrq[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "avgrq-sz"
UserParameter=custom.vfs.dev.iostats.avgqu[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "avgqu-sz"
UserParameter=custom.vfs.dev.iostats.await[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "await"
UserParameter=custom.vfs.dev.iostats.svctm[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "svctm"
UserParameter=custom.vfs.dev.iostats.util[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "%util"
UserParameter=custom.vfs.dev.iostats.rkB[*],/usr/lib/zabbix/alertscripts/zbx_parse_iostat_values.sh $1 "rkB/s"
UserParameter=custom.vfs.dev.iostats.wkB[*],/usr/lib/zabbix/alertscripts/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

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

zabbix监控linux磁盘性能zabbix监控linux磁盘性能

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

将主机链接到该模板上

zabbix监控linux磁盘性能zabbix监控linux磁盘性能

查看图形

zabbix监控linux磁盘性能zabbix监控linux磁盘性能

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/16237.html

(0)
晴川运维晴川运维
上一篇 2025年10月22日
下一篇 2025年10月22日

相关推荐

  • nginx常用操作有那些?

    Nginx 是一款面向性能设计的 HTTP 服务器,相较于 Apache、lighttpd 具有占有内存少,稳定性高等优势,下面为大家分享一下nginx常用操作。 nginx启动,…

    Linux系统 2025年10月10日
  • 详解OpenStack 的 metadata

    在云计算中,Metadata 并不是一个陌生的概念。从字面上看,Metadata 是元数据的意思。而在云计算中,Metadata 服务能够向虚机注入一些额外的信息,这样虚机在创建之…

    Linux系统 2025年10月9日
  • Linux中mysql定时备份脚本

    在生产环境上,为了避免数据的丢失,通常情况下都会定时的对数据库进行备份,本篇文章重点为大家讲解一下Linux中mysql定时备份脚本。 1. 创建备份脚本 备份脚本: #!/bin…

    Linux系统 2025年6月4日
  • HTML 元素使用实例

    HTML 文档是由 HTML 元素定义的。HTML 元素指的是从开始标签(start tag)到结束标签(end tag)的所有代码,下面为大家详细讲解一下HTML 元素 HTML…

    Linux系统 2025年6月8日
  • 如何让网站不下线而从 Redis 2 迁移到 Redis 3

    我们在 Sky Betting&Gaming 中使用 Redis 作为共享内存缓存,用于那些需要跨 API 服务器或者 Web 服务器鉴别令牌之类的操作。在 Core Tribe …

    Linux系统 2025年10月8日
  • 通过命令行的方式查找公网动态 IP 地址

    公网IP是运行商给你的IP,是互联网上的一个“门牌号”。内网IP一般是你的局域网IP,比如你家有路由器,就必须有一个内网IP,是内网的一个“门牌号”。“门牌号”是“唯一”的,使别人…

    Linux系统 2025年6月24日
  • 如何在 Linux 上用 Fail2Ban 保护服务器免受暴力攻击

    linux 管理员的一个重要任务是保护服务器免受非法攻击或访问。 默认情况下,Linux 系统带有配置良好的防火墙,比如iptables、Uncomplicated Firewal…

    Linux系统 2025年6月16日
  • Linux Tee 命令使用实例

    Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。在执行Linux命令时,我们既想把输出保存到文件中,又想在屏幕上看到输出内容,那么可以用到tee…

    Linux系统 2025年6月8日
  • Linux下使用MPlayer具体方法

    MPlayer是在Linux平台上的最强大的电影播放器的Windows版本。MPlayer能播放几乎所有流行的音频 和视频格式,相对其它播放器来说,资源占用非常少,不需要任何系统解…

    Linux系统 2025年10月26日
  • SVN标签(tag)

    SVN是一款版本控制工具。相对于GitHub而言,SVN在使用上更为简化些,本篇文章重点为大家讲解一下SVN标签(tag)。 版本管理系统支持 tag 选项,通过使用 tag 的概…

    Linux系统 2025年9月25日

发表回复

登录后才能评论