分布式系统监视zabbix讲解六之自定义监控项
概述
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 根据以下优先级解析宏:
- 主机级别的宏 (首先检查);
- 为主机的第一级别模板定义的宏(即,直接链接到主机的模板),按照模板 ID 来排序;
- 为主机的第二级别模板定义的宏,按照模板 ID 来排序;
- 为主机的第三级别模板定义的宏,按照模板ID来排序,等;
- 全局宏 (最后检查)。
换言之,如果一个主机不存在一个宏, 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讲解六之自定义监控项的更多相关文章
- 分布式系统监视zabbix讲解六之自定义监控项--技术流ken
宏 概述 Zabbix支持许多在多种情况下使用宏.宏是一个变量,由如下特殊语法标识: {MACRO} 根据在上下文中, 宏解析为一个特殊的值. 有效地使用宏可以节省时间,并使Zabbix变地更加高效. ...
- 分布式系统监视zabbix讲解七之分布式监控--技术流ken
分布式监控 概述 Zabbix通过Zabbix proxy为IT基础设施提供有效和可用的分布式监控 代理(proxy)可用于代替Zabbix server本地收集数据,然后将数据报告给服务器. Pro ...
- 分布式系统监视zabbix讲解七之分布式监控
分布式监控 概述 Zabbix通过Zabbix proxy为IT基础设施提供有效和可用的分布式监控 代理(proxy)可用于代替Zabbix server本地收集数据,然后将数据报告给服务器. Pro ...
- 分布式系统监视zabbix讲解五之web监控--技术流ken
Web 监控 概况 你可以使用 Zabbix 检查几个网站可用性方面. 如果要使用 Web 检测功能,必须在 编译Zabbix 的时候加入 cURL(libcurl) 的支持. 要使用 Web 监控, ...
- 分布式系统监视zabbix讲解五之web监控
Web 监控 概况 你可以使用 Zabbix 检查几个网站可用性方面. 如果要使用 Web 检测功能,必须在 编译Zabbix 的时候加入 cURL(libcurl) 的支持. 要使用 Web 监控, ...
- 分布式系统监视zabbix讲解二之邮件报警通知--技术流ken
概述 在上一篇博客<分布式系统监视zabbix讲解一技术流ken>中已经详细讲解了如何安装zabbix,本篇博客将详细讲解如何使用zabbix监控另外一台主机,并实现email报警通知机制 ...
- 分布式系统监视zabbix讲解二之邮件报警通知
概述 在上一篇博客<分布式系统监视zabbix讲解一技术流ken>中已经详细讲解了如何安装zabbix,本篇博客将详细讲解如何使用zabbix监控另外一台主机,并实现email报警通知机制 ...
- Docker下实战zabbix三部曲之三:自定义监控项
通过上一章<Docker下实战zabbix三部曲之二:监控其他机器>的实战,我们了解了对机器的监控是通过在机器上安装zabbix agent来完成的,zabbix agent连接上zabb ...
- 分布式系统监视zabbix讲解九之使用snmp监控windows--技术流ken
前言 使用zabbix监控windows主要有两种方法,一种是在windows端安装zabbix-agent客户端工具,安装麻烦.另外一种是使用snmp协议,配置简单快捷.两种配置都可以实现同样的效果 ...
随机推荐
- WeakHashMap的应用场景
WeakHashMap是啥: WeakHashMap和HashMap都是通过"拉链法"实现的散列表.它们的源码绝大部分内容都一样,这里就只是对它们不同的部分就是说明. WeakR ...
- 搭建vue开发环境的步骤,六步完成
搭建vue开发环境的步骤,其实也挺简单的,之前这环境的配置也困扰着我一:在搭建vue的开发环境之前,一定一定要先下载node.js,vue的运行是要依赖于node的npm的管理工具来实现,下载地址:h ...
- iNeuOS工业互联平台,WEB组态(iNeuView)集成图报组件,满足实时数据图形化展示的需求
目 录 1. 概述... 1 2. 平台演示... 2 3. 应用过程... 3 4. 实时数据展示效果... 5 1. 概述 市场和开源社区有 ...
- C++开发时字符编码的选择
最近看了很多有关字符编码的讨论帖子, 自己也做了很多尝试, 针对linux和windows上字符编码的选择做了个简单整理, 在此做个记录 首先是基础编码知识, 下面我列出的4个编码方式或字符集是我们应 ...
- 笔记:CSS基础
一.CSS(层叠式样式表),决定页面怎么显示元素 1.引入方式: 行内样式,在当前标签元素中直接使用 style 的属性. 内嵌方式,在<head>中写样式: 外链式,<link&g ...
- Linux下启动、关闭SVN服务
1.命令:ps -ef|grep svnserve,查看SVN是否允许,执行如下: 2.命令:svnserve -d -r /home/svn,启动SVN,/home/svn是SVN安装路径,执行如下 ...
- Golang | 简介channel常见用法,完成goroutin通信
今天是golang专题的第14篇文章,大家可以点击上方的专辑回顾之前的内容. 今天我们来看看golang当中另一个很重要的概念--信道.我们之前介绍goroutine的时候曾经提过一个问题,当我们启动 ...
- 面经手册 · 第8篇《LinkedList插入速度比ArrayList快?你确定吗?》
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你以为考你个数据结构是要造火箭? 汽车75马力就够奔跑了,那你怎么还想要2.0涡轮+ ...
- 【解决】虚拟windows7无法安装VMware Tools
VMware安装虚拟windows7,在虚拟windows7上安装VMware Tools 报错VMware Alias Manager and Ticket 服务失败. Windows 无法启动 V ...
- Win10 第三方浏览器无法上网或者上网速度慢 的终极解决方案
请参考: https://blog.csdn.net/shouzei123/article/details/82862478 近期,工程师收到大量反馈360浏览器,极速模式无法打开网页,兼容模式无此问 ...