概述

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. Ng-Matero V10 正式发布!

    Angular v10 在六月下旬就悄无声息的发布了,虽然 v9 的发布延期了两个月,但是 v10 并没有受影响,仍然如期而至. 相比 v9 的重量级发布,v10 并没有颠覆性的变化,主要还是 bug ...

  2. python setup.py install 报错【Project namexxx was given, but was not able to be found.】

    错误信息: [root@wangjq networking-mirror]# python setup.py install /usr/lib64/python2./distutils/dist.py ...

  3. 独立集(bubble) 题解

    问题描述 有一天,一个名叫顺旺基的程序员从石头里诞生了.又有一天,他学会了冒泡排序和独立集.在一个图里,独立集就是一个点集,满足任意两个点之间没有边.于是他就想把这两个东西结合在一起.众所周知,独立集 ...

  4. 如何下载gitbub中的单个文件

    1.进入Github文件夹,打开对应文件: 2.右键单击Raw,然后目标另存为即可.

  5. Ubuntu 磁盘满了处理方法。

    Ubuntu 磁盘满了处理方法: 1. 如果是虚拟机安装ubuntu,直接给虚拟机安装ubuntu 系统所在的盘符动态分配一点磁盘容量,就可以了. 2. 如果不是虚拟机安装ubuntu,那么有两个办法 ...

  6. jQuery源码分析系列(三)Sizzle选择器引擎-下

    选择函数:select() 看到select()函数,if(match.length === 1){}存在的意义是尽量简化执行步骤,避免compile()函数的调用. 简化操作同样根据tokenize ...

  7. 模拟退火详解&P1433题解

    前排提示:LZ是个菜比,有可能有讲的不对的地方,请在评论区指出qwq 0.基本思想 模拟退火其实没有那么高大上.说白了就是初始化一个"温度".每次随机乱选一个方案,如果比以前的方案 ...

  8. 使用Arcgis时,在sde空间库常用的相关函数

    一.Oracle库中配置好sde空间库常见的场景 1.在sde库中创建表:community 创建表:community 字段:id(INTEGER), shape(ST_GEOMETRY) 2.往s ...

  9. Flink从入门到入土(详细教程)

    和其他所有的计算框架一样,flink也有一些基础的开发步骤以及基础,核心的API,从开发步骤的角度来讲,主要分为四大部分 1.Environment Flink Job在提交执行计算时,需要首先建立和 ...

  10. java初探(1)之登录再探

    https://www.cnblogs.com/lovejune/p/java_login_1.html 上一章内容搭建起了登录应用场景的环境,模拟实现了登录操作,页面与后端数据的交互过程,使用的是异 ...