您的位置:首页 > 运维架构

Zabbix监控之宏

2013-10-17 23:03 197 查看
zabbix监控中会在多处用到宏变量(macros),这会使配置更方便简洁有效。
zabbix支持的宏变量有很多,官网文档支持列表:

https://www.zabbix.com/documentation/2.0/manual/appendix/macros/supported_by_location#zabbix本身支持的宏变量

Macros with numbers <1-9> like {MACRO1}, {MACRO2}…{MACRO9} allow to reference hosts in the order in which they appear in a trigger expression. So, {HOST.IP1} and {HOST.IP2} will expand to the IPs of the first and second host in the trigger expression.
#宏变量可以和数字合用,表示主机在触发器表达式中出现的顺序位置
在自动发现中使用的宏有固定的语法:[b]{#MACRO}[/b]
这种宏用于low-leveldiscovery中可以返回真正的文件系统名字,网络接口,以及snmpOIDs

Some low-level discovery macros come “pre-packaged” with the LLD funtion in Zabbix - {#FSNAME}, {#FSTYPE}, {#IFNAME}, {#SNMPINDEX}, {#SNMPVALUE}. However, adhering to these names is not compulsory when creating a custom low-level discovery rule. Then you may use any other LLD macro name and refer to that name.
对于更大的灵活性,zabbix支持用户自定义的宏,这些自定义的宏也有特定的语法:[b]{$MACRO}[/b]
宏的级别有多种:其优先级如下。

1.host level macros (checked first)#主机级别的宏优先级最高
2.macros defined for first level templates of the host (i.e., templates linked directly to the host), sorted by template ID#第一级模板中的宏
3.macros defined for second level templates of the host, sorted by template ID#第二级模板中的宏
4.macros defined for third level templates of the host, sorted by template ID
5.…
6.global macros (checked last)#全局级别的宏

#总结:如果在主机级别不存在宏设置,那么zabbix就会去模板中看是否设置有宏。如果模板中也没有,将会查找使用全局的宏。
#若是在各级别都没找到宏,将不使用宏
#创建自定义宏的步骤是:
管理---一般--宏(定义全局宏)
模板和主机在创建时会有设置宏的地方
If a user macro is used in items or triggers in a template, it is suggested to add that macro to the template even if it is defined on a global level. That way, exporting the template to XML and importing it in another system will still allow it to work as expected.
通常使用宏的地方:

1.taking advantage of templates with host specific attributes: passwords, port numbers, file names, regular expressions, etc
2.global macros for global one-click configuration changes and fine tuning

#举例:
Use of host-level macro in the “Status of SSH daemon” item key:
net.tcp.service[ssh,{$SSH_PORT}]
This item can be assigned to multiple hosts, providing that the value of {$SSH_PORT} is defined on those hosts.
Example 2
Use of host-level macro in the “CPU load is too high” trigger:
{ca_001:system.cpu.load[,avg1].last(0)}>{$MAX_CPULOAD}
Such a trigger would be created on the template, not edited in individual hosts.
If you want to use amount of values as the function parameter (for example, max(#3)), include hash mark in the macro definition like this: SOME_PERIOD  #3
Example 3
Use of two macros in the “CPU load is too high” trigger:
{ca_001:system.cpu.load[,avg1].min({$CPULOAD_PERIOD})}>{$MAX_CPULOAD}
Note that a macro can be used as a parameter of trigger function, in this example function min().
User macros in a trigger expression will be expanded if referencing a parameter or a constant. They are NOT supported for referencing the host name, item key, function or operator.
宏和正则表达式:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息