自动化监控--zabbix中的Macros(宏)详解
宏
Zabbix支持許多在多種情況下使用的宏。宏是一個(gè)變量,由如下特殊語(yǔ)法標(biāo)識(shí):
{MACRO}根據(jù)在上下文中, 宏解析為一個(gè)特殊的值。有效地使用宏可以節(jié)省時(shí)間,并使Zabbix變地更加高效。
在一個(gè)的典型用途中,宏可以用于模板中。因此,模板的觸發(fā)器可能命名為Processor load is too high on {HOST.NAME}。當(dāng)這個(gè)模板應(yīng)用與主機(jī)(如 Zabbix Server )時(shí),并且當(dāng)觸發(fā)器展示在監(jiān)控頁(yè)面上時(shí),觸發(fā)器的名稱講解析為Processor load is too high on Zabbix server。
宏可以在監(jiān)控項(xiàng)鍵值參數(shù)中使用。宏只能用在監(jiān)控項(xiàng)鍵值參數(shù)的一部分中,例如item.key[server_{HOST.HOST}_local] 。雙引號(hào)參數(shù)不是必須的,因?yàn)閆abbix將處理任何模糊不清的特殊參數(shù)(如果這些參數(shù)存在于已解析的宏中)。
宏函數(shù)
宏函數(shù)能提供自定義宏值的功能。
有時(shí)候宏可能會(huì)解析為一個(gè)不一定易于使用的值。它可能很長(zhǎng),或包含你想提取的一個(gè)特殊感興趣的子字符串。這在宏函數(shù)中是可以使用的。
宏函數(shù)的語(yǔ)法為:
用戶宏
概述
除了支持開(kāi)箱即用的宏之外,Zabbix 還支持更靈活的用戶宏。
用戶宏可以在全局、模板和主機(jī)級(jí)別進(jìn)行定義。這些宏具有一個(gè)特殊的語(yǔ)法:
{$MACRO}用戶宏可被用于:
- 監(jiān)控項(xiàng)名稱;
- 監(jiān)控項(xiàng)鍵值參數(shù);
- 觸發(fā)器名稱和描述;
- 觸發(fā)器表達(dá)式參數(shù)和常量
- 許多其他位置
宏名稱中允許使用以下字符:A-Z , 0-9 , _ , . 。
Zabbix 根據(jù)以下優(yōu)先級(jí)解析宏:
換言之,如果一個(gè)主機(jī)不存在一個(gè)宏, Zabbix 將會(huì)嘗試在級(jí)別遞增的主機(jī)模板中找到它,如果仍然找不到,那么將會(huì)使用全局宏(如果全局宏存在的話)。
如果 Zabbix不能找到宏, 那么宏將不能被解析。
Administration → General → Macros
如果要定義用戶宏,轉(zhuǎn)到Zabbix的web頁(yè)面的如下位置:
- 對(duì)于全局宏,請(qǐng)?jiān)L問(wèn) Administration → General → Macros;
- 對(duì)于主機(jī)和模板級(jí)別的宏,打開(kāi)主機(jī)或模板屬性并查看 宏 標(biāo)簽頁(yè)面。
注意:如果在模板的監(jiān)控項(xiàng)或觸發(fā)器使用用戶宏,建議將該宏添加到模板,即使它被定義在全局級(jí)別上。這樣的話,將模板導(dǎo)出至XML文件中,之后在其他系統(tǒng)中導(dǎo)入,那么在其他系統(tǒng)中使用也將會(huì)達(dá)到預(yù)期的使用效果。
全局和主機(jī)宏的常用案例
- 利用具有主機(jī)特定屬性的模板:密碼、端口號(hào)、文件名稱、正則表達(dá)式等;
- 運(yùn)用全局宏進(jìn)行全局的一鍵配置更改或微調(diào)。
示例1
在 “Status of SSH daemon” 監(jiān)控項(xiàng)鍵值中使用主機(jī)級(jí)別的宏:
該監(jiān)控項(xiàng)可以分配給多個(gè)主機(jī),前提是在這些主機(jī)上定義了 {$SSH_PORT} 的值。
示例 2
在 “CPU load is too high” 觸發(fā)器上使用主機(jī)級(jí)別的宏:
{ca_001:system.cpu.load[,avg1].last()}>{$MAX_CPULOAD}這樣的觸發(fā)器將會(huì)在模板上創(chuàng)建,而不會(huì)在單個(gè)主機(jī)中編輯。
如果要使用數(shù)值作為函數(shù)參數(shù)
注意:如果要使用數(shù)值作為函數(shù)參數(shù)(例如,max(#3)),則在宏定義中要包含井號(hào)(hash mark)例如:SOME_PERIOD ? #3
示例 3
在“CPU load is too high”觸發(fā)器中使用了兩個(gè)宏:
{ca_001:system.cpu.load[,avg1].min({$CPULOAD_PERIOD})}>{$MAX_CPULOAD}請(qǐng)注意,宏可以用作觸發(fā)器函數(shù)的參數(shù),在這個(gè)示例中為 min() 。
注意:在觸發(fā)器表達(dá)式中,如果引用參數(shù)或者常量,則用戶宏將會(huì)解析。如果引用主機(jī)、監(jiān)控項(xiàng)鍵值、函數(shù)、操作或其他觸發(fā)器表達(dá)式的話,他們將不會(huì)解析。
------做運(yùn)維之前很矯情的小年輕-----
總結(jié)
以上是生活随笔為你收集整理的自动化监控--zabbix中的Macros(宏)详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 自动化监控--zabbix中的templ
- 下一篇: 自动化监控--zabbix-get安装使