自动化运维工具之Zabbix宏使用及用户自定义监控(三)

Zabbix宏是一种抽象(Abstraction),它根据一系列预定义的规则替换一定得文本模式,而解释器或编译器在遇到宏时会自动进行这一模式替换;

Zabbix基于宏保存预设文本模式,并且在调用时将其替换为其中的文本;

Zabbix有许多内置的宏,如{HOST.NAME}、{HOST.IP}、{TRIGGER.DESCRIPTION}、{TRIGGER.NAME}、

{TRIGGER.EVENTS.ACK}等

Zabbix为了更强的灵活性,zabbix还支持在全局、模板或主机级别使用用户自定义宏(user macro);

用户自定义宏要使用"{$MACRO}"这种特殊的语法格式;宏可以应用在item keys和descriptions、trigger名称和表达式、主机接口IP/DNS及端口、discovery机制的SNMP协议的相关信息中等;宏名称只能使用大写字母、数字及下划线

Zabbix宏的替换次序:首先是主机级别宏;其次是当前主机上一级模板中(直接链接至主机的模板)的宏,多个一级模板按其ID号排序;再接着是二级模板中的宏;而后依次类推;最后检查的是全局宏;zabbix如果无法查找到某主机定义使用的宏,则不会对其进行替换操作。要使用用户自定义宏,有以下两种途径:

-->全局宏:"Administrator-->General-->Macros"

-->主机或模板级别的宏:编辑相应的主机或模板属性即可

Macros使用示例:

-->在主机级别定义一个名为{$NETINLIMIT}的宏,以定义当前主机所接受的入站流量的合理次数:

然后在主机的triggers中使用此宏:

用户自定义监控:

为什么要自定义KEY:
  有时候我们想让被监控端执行一个zabbix没有预定义的检测,zabbix的用户自定义参数功能提供了这个方法。我们可以在客户端配置文件zabbix_angentd.conf里面配置UserParameter.
语法如下:

UserParameter=key,command

用户自定义参数包含一个key和一个命令,key必须整个系统唯一,配置好之后,重启客户端。然后配置item,在key的位置填上我们自定义的key即可。
用户自定义参数里指定的脚本由zabbix agent来执行,最大可以返回512KB的数据.

用户自定义KEY实例:

简单点的命令示例:

UserParameter=ping,echo 1
如果调用ping这个key,将会收到返回值1.

更复杂的命令示例:

UserParameter=mysql.ping,mysqladmin -uroot ping|grep -c alive
如果返回1表示MySQL运行中,如果返回0表示MySQL挂了

灵活的自定义key:
如下为灵活的用户自定义参数:

UserParameter=key[*],command

参数 描述
Key 唯一. [*]表示里面可以传递多个参数
Command 需要执行的脚本,key的[]里面的参数一一对应$1到$9,一共9个参数。$0表示脚本命令.

注意事项
1、如果需要使用命令行里面出现$2这种变量,那么你要使用两个$$2,例如awk ’{ print $$2 }’,之前就遇到过这个问题,不停的测试自己脚本输出正常,但是zabbix却拿不到数据,原来是出在这里。为了防止和参数冲突,所以zabbix做了这个规定。
2、zabbix禁止使用一些不安全的参数,如下:

\ ‘ ” ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @

3、从zabbix 2.0开始,zabbix返回文本数据可以是空格。

示例(1):获取内存空间大小

(1)配置被监控端agent配置文件如下:

# vim /etc/zabbix/zabbix_agentd.conf 
UserParameter=memory.free,/usr/bin/free |awk ‘/^Mem:/{print $4}‘

重启被监控agent服务

# service zabbix-agent restart

(2)在服务器使用shell方式获取被监控端自定义监控项数据

# zabbix_get -s 172.16.100.4 -k "memory.free"
297712

(3)添加为被监控对象

示例(2):自定义key传递多个参数:监控主机内存信息

(1)配置被监控端agent配置文件如下:

# vim /etc/zabbix/zabbix_agentd.conf 
UserParameter=memory.usage[*],/bin/cat /proc/meminfo | awk ‘/^$1:/{print $$2}‘

重启被监控agent服务

# service zabbix-agent restart

(2)在服务器使用shell方式获取被监控端自定义监控项数据

# zabbix_get -s 172.16.100.4 -k "memory.usage[Buffers]"
55980
# zabbix_get -s 172.16.100.4 -k "memory.usage[MemTotal]"
494224

(3)添加为被监控对象

实战示例:使用自定义监控nginx服务

(1)被监控端nginx服务开启status

# vim /etc/nginx/conf.d/default.conf 
    location /status {
        stub_status   on;
        access_log  off;
        allow 172.16.0.0/16;
        deny all;
    }

重启nginx服务测试:

# service nginx restart
# curl http://172.16.100.4/status
Active connections: 1 
server accepts handled requests
 2 2 2 
Reading: 0 Writing: 1 Waiting: 0

(2)配置被监控端agent配置文件如下:

# vim /etc/zabbix/zabbix_agentd.d/nginx.conf
UserParameter=Nginx.active[*],/usr/bin/curl -s "http://$1:$2/status" | awk ‘/^Active/ {print $NF}‘
UserParameter=Nginx.reading[*],/usr/bin/curl -s "http://$1:$2/status" | grep ‘Reading‘ | cut -d" " -f2
UserParameter=Nginx.writing[*],/usr/bin/curl -s "http://$1:$2/status" | grep ‘Writing‘ | cut -d" " -f4
UserParameter=Nginx.waiting[*],/usr/bin/curl -s "http://$1:$2/status" | grep ‘Waiting‘ | cut -d" " -f6
UserParameter=Nginx.accepted[*],/usr/bin/curl -s "http://$1:$2/status" | awk ‘/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$1}‘
UserParameter=Nginx.handled[*],/usr/bin/curl -s "http://$1:$2/status" | awk ‘/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$2}‘
UserParameter=Nginx.requests[*],/usr/bin/curl -s "http://$1:$2/status" | awk ‘/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$3}‘

重启被监控agent服务

# service zabbix-agent restart

(3)在服务器使用shell方式获取被监控端自定义监控项数据

# zabbix_get -s 172.16.100.4 -k "Nginx.accepted[172.16.100.4,80]"
9
# ab -n 1000 -c 100 
# zabbix_get -s 172.16.100.4 -k "Nginx.accepted[172.16.100.4,80]"
1013

(4)添加为被监控对象

以上zabbix宏及zabbix用户自定义监控。

时间: 2024-10-12 04:36:15

自动化运维工具之Zabbix宏使用及用户自定义监控(三)的相关文章

自动化运维工具之Zabbix分布式监控应用(五)

分布式监控概述proxy and nodeZabbix常用3种架构-->Server-agent-->Server-Node-agent-->Server-Proxy-agent Zabbix能高效地监控分布式IT架构在大型环境中Zabbix提供两种解决方案-->使用代理(proxy)-->使用节点(node)Proxy or Node?-->代理(proxy)用于本区域数据收集,并将数据发送给server-->节点(node)提供完整的Zabbix server

自动化运维工具之Zabbix触发器_action动作及模板应用(二)

一个完善的监控系统需要一定的报警机制,什么时候告警警需要触发器,怎么告警,在什么情况下如何告警取决于action动作: 创建触发器(trigger) **"监控项"仅负责收集数据,而通常收集数据的目的还包括在某指标对应的数据超出合理范围时给相关人员发送告警信息,"触发器"正是用于为监控项所收集的数据定义阈值. **每个触发器仅能关联至一个监控项,但可以为一个监控项或同时使用多个触发器: 事实上,为一个监控项定义多个具有不用阈值的触发器,可以实现不用级别的报警功能 *

自动化运维工具之Zabbix服务器监控基本应用详解(一)

Zabbix基本概述:Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.它能监视各种网络参数,保证服务器系统的安全运营:并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题. zabbix由zabbix server与可选组件zabbix agent构成:zabbix server:可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux, Solaris, H

自动化运维工具之ansible的简单应用

ansible: ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,例如shell,copy,ping等,ansible只是提供一种框架.ansible的主要特性: 模块化:调用特定的模块,完成特定任务 基于Python语言实现,由Pa

自动化运维工具ansible的基本应用

在很多场景中我们都需要在多个主机上执行相同的命令或者是做相同的配置工作,此时,为了简化操作,我们可以借助一些自动化的工具来完成我们的需求,这种工具我们称之为自动化运维工具.ansible就是其中之一,下面我们就来用ansible来实现一些简单操作. 下面是ansible可以实现很多工具的功能,框架图如下所示:ansible不能实现操作系统的安装 ansible作者就是早期puppet和func的维护者之一,因为ansible充分吸取了puppet和func的优势,又力图避免他们的劣势. OS P

自动化运维工具(三)之( 时实监控)

话说运维监控,出口就是nagios.cacti.zabbix.Ganglia.Graphite 等,还有自已公司开发的,但采集轮询时间一般为 5分钟,1分钟 ,最少的也没30秒内的,但如果服务器异常,要时实查看,不得不开多个终端,一边处理分析,一边查看. 自动化运维工具,时实查看,5秒刷新一次并出图.可放心的去处理,并时实知道服务器的运行情况.

Puppet Saltstatck Ansible 自动化运维工具对比

最近尝试安装了一下salt statck就对自动化工具感兴趣了点所以找了一些资料入门下面总结一下希望和看到这篇文章一起探索自动化运维的世界.                              --- 小 Q ------------------------------------------------------------------------------------------------------ 自动化运维就是为减少重复又枯燥的工作而建立起来的流程更能减少失误及时报警并恢复

应用软件学习总结(包括监控,自动化运维工具,WEB服务等)

应用软件学习总结 目录 SVN部署及使用 一健安装Zabbix Ansible自动化运维工具安装及使用 PPTP服务器端部署到客户端连接使用 fail2ban安装配置 kvm安装使用 LVS+Keepalived搭建 Keepalived+LVS维护技巧与调优 LVS概念类型及三种工作模式和十种调度算法介绍 redis单实例.多实例.主从同步实战 整合Nginx和Tomcat Nginx服务器的搭建 安装LAMP 一健安装LNMP 生产环境Nginx配置文件 Apache安装配置解析 Rsync

自动化运维工具--Ansible(安装部署、模块简介与操作)

一.Ansible概述 互联网的快速发展导致产品更新换代速度加快,按照传统维护操作使得工作效率低下,自动化运维以尽可能安全高效的完成工作为目的,实现代替传统工作方式. 自动化运维工具划分为两类: 一是需要使用代理工具的,也就是基于agent程序来实现管理功能,例如puppet.func.zabbix等 二是不需要代理配置工具的,可以直接基于SSH服务来完成管理功能,如ansible,fabric等. 自动化运维工具比较: 工具 开发语言 结构 配置文件格式 运行任务 Ansible Python