概述

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. JDK1.8源码学习-String-hashCode方法为什么选择数字31作为乘子

    1. 背景 某天,我在写代码的时候,无意中点开了 String hashCode 方法.然后大致看了一下 hashCode 的实现,发现并不是很复杂.但是我从源码中发现了一个奇怪的数字,也就是本文的主 ...

  2. Typescript node starter 2.Router Middleware

    Router 路由器对象是中间件和路由的一个独立实例.可以将它视为一个“迷你应用程序”,仅能够执行中间件和路由功能.每个Express应用程序都有一个内置的应用程序路由器. 路由器的行为类似于中间件本 ...

  3. 跟我一起学.NetCore之选项(Options)核心类型简介

    前言 .NetCore中提供的选项框架,我把其理解为配置组,主要是将服务中可供配置的项提取出来,封装成一个类型:从而服务可根据应用场景进行相关配置项的设置来满足需求,其中使用了依赖注入的形式,使得更加 ...

  4. ubuntu ARM 源配置

    cat /etc/apt/sources.list deb http://mirrors.aliyun.com/ubuntu-ports/ xenial main deb-src http://mir ...

  5. centos7 下安装生物信息软件的问题小总结

    1.安装samtools与bwa时: 缺少zlib库 下载zlib库 cd zlib/ CFLAGS="-O3 -fPIC" ./configure make make insta ...

  6. markdown 绘图利器之granphviz

    目录 概述 graphviz 脚本语法结构 图 方向,尺寸,间距 节点 shape 属性 多边形 record-based 的形状 用户定制 label 属性 基本用法 HTML用法 style 属性 ...

  7. 键盘敲入 A 字母时,操作系统期间发生了什么

    前言 键盘可以说是我们最常使用的输入硬件设备了,但身为程序员的你,你知道「键盘敲入A 字母时,操作系统期间发生了什么吗」? 那要想知道这个发生的过程,我们得先了解了解「操作系统是如何管理多种多样的的输 ...

  8. 兄弟,别再爬妹子图了整点JS逆向吧--陆金所密码加密破解

    好久没有写爬虫文章了,今晚上得空看了一下陆金所登录密码加密,这个网站js加密代码不难,适合练手,篇幅有限,完整js代码我放在了这里从今天开始种树,不废话,直接开整. 前戏热身 打开陆金所网站,点击到登 ...

  9. Webfunny知识分享:webpack sourceMap解析源码

    前端的业务越来越庞大,导致我们需要引入的js等静态资源文件的体积也越来越大,不得不使用压缩js文件的方式来提高加载的效率. 编译工具的诞生,极大地方便了我们处理js文件的这一过程,但压缩后的js文件极 ...

  10. Vue基础(五)---- 前端路由

    基本结构: ◆ 1.路由的基本概念与原理 ◆ 2.vue-router的基本使用 ◆ 3.vue-router嵌套路由 ◆ 4.vue-router动态路由匹配 ◆ 5.vue-router命名路由 ...