概述

Zabbix支持许多在多种情况下使用宏。宏是一个变量,由如下特殊语法标识:

{MACRO}

根据在上下文中, 宏解析为一个特殊的值。

有效地使用宏可以节省时间,并使Zabbix变地更加高效。

在一个的典型用途中,宏可以用于模板中。因此,模板的触发器可能命名为“Processor load is too high on {HOST.NAME}”。当这个模板应用与主机(如 Zabbix Server )时,并且当触发器展示在监控页面上时,触发器的名称讲解析为“Processor load is too high on Zabbix server”。

宏可以在监控项键值参数中使用。宏只能用在监控项键值参数的一部分中,例如 item.key[server_{HOST.HOST}_local] 。双引号参数不是必须的,因为Zabbix将处理任何模糊不清的特殊参数(如果这些参数存在于已解析的宏中)。

用户宏

概述

除了支持开箱即用的宏之外,Zabbix 还支持更灵活的用户宏。

用户宏可以在全局、模板和主机级别进行定义。这些宏具有一个特殊的语法:

{$MACRO}

用户宏可被用于:

  • 监控项名称;
  • 监控项键值参数;
  • 触发器名称和描述;
  • 触发器表达式参数和常量;
  • 许多其他位置;

宏名称中允许使用以下字符:A-Z , 0-9 , _ , . 。

Zabbix 根据以下优先级解析宏:

  1. 主机级别的宏 (首先检查);
  2. 为主机的第一级别模板定义的宏(即,直接链接到主机的模板),按照模板 ID 来排序;
  3. 为主机的第二级别模板定义的宏,按照模板 ID 来排序;
  4. 为主机的第三级别模板定义的宏,按照模板ID来排序,等;
  5. 全局宏 (最后检查)。

换言之,如果一个主机不存在一个宏, Zabbix 将会尝试在级别递增的主机模板中找到它,如果仍然找不到,那么将会使用全局宏(如果全局宏存在的话)。

如果 Zabbix不能找到宏, 那么宏将不能被解析。

如果要定义用户宏,请转到Zabbix的前端页面的如下位置:

  • 对于全局宏,请访问 管理 → 常规 → 右上角下拉菜单选择 “宏” 
  • 对于主机和模板级别的宏,请打开主机或模板属性并查看  标签页面。

认识userparameter_mysql.conf文件

这个文件在zabbix客户端的子目录下,如果你想要自己来设置监控项的话,参考这个文件即可。

[root@ken ~]# ls /etc/zabbix/zabbix_agentd.d/
testuser.conf userparameter_mysql.conf

现在我们来打开它,看一下具体内容

[root@ken ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
# For all the following commands HOME should be set to the directory that has .my.cnf file with password information. # Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert].
# Key syntax is mysql.status[variable].
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -N | awk '{print $$2}' # Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data].
# Key syntax is mysql.size[<database>,<table>,<type>].
# Database may be a database name or "all". Default is "all".
# Table may be a table name or "all". Default is "all".
# Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both".
# Database is mandatory if a table is specified. Type may be specified always.
# Returns value in bytes.
# 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single table
UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix mysql -N' UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive
UserParameter=mysql.version,mysql -V

可以看到这个文件里面只有四行是生效的,其余的都已经被注释掉了。现在我们来过滤出来这几行

[root@ken ~]# cp /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf{,bak} #对文件做一个备份
[root@ken ~]# grep -E -v '^#|^$' /etc/zabbix/zabbix_agentd.d/userparameter_mysql.confbak > /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf #过滤出注释行和空白行

[root@ken ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -N | awk '{print $$2}' #查看数据库状态
UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix mysql -N' #查看数据库空间大小
UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive #查看数据库是否在线
UserParameter=mysql.version,mysql -V #查看数据库版本信息

自定义监控项目

现在我们已经了解了整个文件的书写格式,即

1. UserParameter=key,command

2.UserParameter=key[*],command

两种格式的区别即第一个不能接受用户参数,第二个可以接受变量,更加灵活。

现在我们一一来实现,直观感受下效果。

1. UserParameter=key,command 应用示例

第一步:进入到子目录下,创建一个testyserp.conf (文件名无所谓,你也可以把你自己设置的写进上面那个文件中,都是可以的。)

[root@ken ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@ken zabbix_agentd.d]# touch testuserp.conf

第二步:写入你要监控的内容,这里我监控的是内存的总量,内存的使用量,以及内存剩余量。

[root@ken zabbix_agentd.d]# vim testuserp.conf
UserParameter=check.totalmem,free -m| awk -F ' +' 'NR==2{print $2}'
UserParameter=check.usedmem,free -m| awk -F ' +' 'NR==2{print $3}'
UserParameter=check.freemem,free -m| awk -F ' +' 'NR==2{print $4}'

第三步:重启zabbix客户端

[root@ken zabbix_agentd.d]# systemctl restart zabbix-agent

第四步:在zabbix中添加监控项,configure>hosts>items>create item,上面文件中定义的三个key一一复制进去,点击add保存即可,创建三个监控项

第五步:查看。monitoring>latest data>select,选择你的组即可查看

你可以把它们显示在一张图形中 前面白色方框内选中>display graph

2.UserParameter=key[*],command应用示例

第一步:还是进入到客户端的子目录下,创建一个文件用来存储自定义的监控项

[root@ken ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@ken zabbix_agentd.d]# touch test.conf

第二步:写入我们想要的监控项目。写成如下格式,这样我们就可以来接收参数了。

[root@ken zabbix_agentd.d]# vim test.conf
UserParameter=check.meminfo[*],cat /proc/meminfo | awk -F " +" '/$1/{print $$2}'

第三步:重启zabbix-agent客户端

[root@ken zabbix_agentd.d]# systemctl restart zabbix-agent

第四步:现在把check.meminfo这个key写进zabbix的key当中。

监控SwapTotal总量

监控SwapFree

添加完之后就可以去monitoring > latest data > select 你的application

选中,选择display graph.查看图形界面

结言

学会了上面的自定义监控,想要监控什么你是不是都可以做到了那? 只要记住格式,会使用命令来获取你想要的结果,即可自定义监控项,以数字或者图形化界面显示出来。

分布式系统监视zabbix讲解六之自定义监控项的更多相关文章

  1. 分布式系统监视zabbix讲解六之自定义监控项--技术流ken

    宏 概述 Zabbix支持许多在多种情况下使用宏.宏是一个变量,由如下特殊语法标识: {MACRO} 根据在上下文中, 宏解析为一个特殊的值. 有效地使用宏可以节省时间,并使Zabbix变地更加高效. ...

  2. 分布式系统监视zabbix讲解七之分布式监控--技术流ken

    分布式监控 概述 Zabbix通过Zabbix proxy为IT基础设施提供有效和可用的分布式监控 代理(proxy)可用于代替Zabbix server本地收集数据,然后将数据报告给服务器. Pro ...

  3. 分布式系统监视zabbix讲解七之分布式监控

    分布式监控 概述 Zabbix通过Zabbix proxy为IT基础设施提供有效和可用的分布式监控 代理(proxy)可用于代替Zabbix server本地收集数据,然后将数据报告给服务器. Pro ...

  4. 分布式系统监视zabbix讲解五之web监控--技术流ken

    Web 监控 概况 你可以使用 Zabbix 检查几个网站可用性方面. 如果要使用 Web 检测功能,必须在 编译Zabbix 的时候加入 cURL(libcurl) 的支持. 要使用 Web 监控, ...

  5. 分布式系统监视zabbix讲解五之web监控

    Web 监控 概况 你可以使用 Zabbix 检查几个网站可用性方面. 如果要使用 Web 检测功能,必须在 编译Zabbix 的时候加入 cURL(libcurl) 的支持. 要使用 Web 监控, ...

  6. 分布式系统监视zabbix讲解二之邮件报警通知--技术流ken

    概述 在上一篇博客<分布式系统监视zabbix讲解一技术流ken>中已经详细讲解了如何安装zabbix,本篇博客将详细讲解如何使用zabbix监控另外一台主机,并实现email报警通知机制 ...

  7. 分布式系统监视zabbix讲解二之邮件报警通知

    概述 在上一篇博客<分布式系统监视zabbix讲解一技术流ken>中已经详细讲解了如何安装zabbix,本篇博客将详细讲解如何使用zabbix监控另外一台主机,并实现email报警通知机制 ...

  8. Docker下实战zabbix三部曲之三:自定义监控项

    通过上一章<Docker下实战zabbix三部曲之二:监控其他机器>的实战,我们了解了对机器的监控是通过在机器上安装zabbix agent来完成的,zabbix agent连接上zabb ...

  9. 分布式系统监视zabbix讲解九之使用snmp监控windows--技术流ken

    前言 使用zabbix监控windows主要有两种方法,一种是在windows端安装zabbix-agent客户端工具,安装麻烦.另外一种是使用snmp协议,配置简单快捷.两种配置都可以实现同样的效果 ...

随机推荐

  1. Kubernetes实战总结 - 自定义Prometheus

    一.概述 首先Prometheus整体监控结构略微复杂,一个个部署并不简单.另外监控Kubernetes就需要访问内部数据,必定需要进行认证.鉴权.准入控制, 那么这一整套下来将变得难上加难,而且还需 ...

  2. 你真的会做 2 Sum 吗?| 含双重好礼

    小预告:文末有两份福利,记得看到最后哦- 2 Sum 这题是 Leetcode 的第一题,相信大部分小伙伴都听过的吧. 作为一道标着 Easy 难度的题,它真的这么简单吗? 我在之前的刷题视频里说过, ...

  3. Python Matplotlib绘图基础

    Matplotlib绘图基础 1.Figure和Subplot import numpy as np import matplotlib.pyplot as plt #创建一个Figure fig = ...

  4. 输入url后的加载过程~

    1)查找域名对应的IP地址: 2)建立连接(TCP的三次握手): 3)构建网页: 4)断开连接(TCP的四次挥手): TCP的三次握手:为了准确无误的把数据送到目标处,TCP协议采用了三次握手策略,用 ...

  5. FastStone Capture注册破解码

    原文链接:https://blog.csdn.net/lxq_9532/article/details/82893170 faststone-capture下载链接: https://en.softo ...

  6. 虚拟化技术之kvm镜像模板制作工具virt-sysprep

    virt-sysprep这个工具来自libguest-tools这个工具包,它能够把kvm虚拟机对应的磁盘文件做成一个模板,后续我们启动虚拟机就可以基于这个镜像模板启动:什么是镜像模板呢?所谓模板就是 ...

  7. CentOS 6.x/7.x上安装git

    yum安装 # yum info git # yum install -y git 可以通过下面的命令来检查是否安装了git环境 git --version 参考:如何在CentOS 6.x/7.x上 ...

  8. 我是怎样刚拿饿了么P7 offer,然后途虎一轮游的

    今年初拿了个饿了么P7的offer,于此同时大家顺便看看我怎么途虎一轮游的.废话不多说,直接上题吧. 一面 首先上来就是自我介绍,简单的说下自己的项目经验,涉及的技术栈之类的. 然后每一轮必问的问题来 ...

  9. 认证授权:学习OIDC

    前言 上一篇文章介绍了OAuth2.0协议的相关内容,知道OAuth2.0是一个授权协议,无法提供完善的身份认证功能.那么什么来解决身份认证功能呢?——OIDC是一个不错的解决方案.接下来进一步来了解 ...

  10. 【Pod Terminating原因追踪系列之一】containerd中被漏掉的runc错误信息

    前一段时间发现有一些containerd集群出现了Pod卡在Terminating的问题,经过一系列的排查发现是containerd对底层异常处理的问题.最后虽然通过一个短小的PR修复了这个bug,但 ...