Zabbixでは、supportedマクロに加え、より柔軟性の高い
ユーザーマクロがサポートされています。
ユーザマクロは、グローバル、テンプレート、ホストレベルで定義することができます。これらのマクロは
特別な構文を持っています:
Zabbixは以下の優先順位に従ってマクロを解決します:
つまり、あるホストにマクロが存在しない場合、Zabbixはホストテンプレートから徐々にマクロを探そうとします。
それでも見つからない場合、グローバルマクロが存在すれば、それを使用します。
同じレベルのリンクされた複数のテンプレートに同じ名前のマクロが存在する場合、IDが最も小さいテンプレートの
マクロが使用されます。したがって、複数のテンプレートに同じ名前のマクロが存在することは、設定上のリスクとなります。
Zabbix がマクロを見つけることができない場合、マクロは解決されません。
マクロ(ユーザーマクロを含む)は、複雑な設定をより分かりやすくするため、設定セクション(トリガーリストなど)で
未解決のままになっています。
以下の箇所でユーザーマクロを使用することができます:
ユーザーマクロを定義するには、フロントエンドの対応する場所に移動します。
ユーザー・マクロがテンプレート内の item またはトリガーで使用されている場合、テンプレート内の item や
トリガーでユーザーマクロが使用される場合、たとえそれがグローバルレベルで定義されていても、そのマクロを
テンプレートに追加することが推奨されます。そうすれば、マクロのタイプが text の場合、テンプレートを
XML にエクスポートして別のシステムでインポートしても、期待通りに動作します。
シークレットマクロの値は exported されません。
ユーザーマクロは以下の属性を持ちます:
パラメータ | 説明 |
---|---|
Macro | Macro name. The name must be wrapped in curly brackets and start with a dollar sign. Example: {$FRONTEND_URL}. The following characters are allowed in the macro names: A-Z (uppercase only) , 0-9 , _ , . |
Value | Macro value. Three value types are supported: Text (default) - plain-text value Secret text - the value is masked with asterisks, which could be useful to protect sensitive information such as passwords or shared keys. Vault secret - the value contains a reference path (as 'path:key', for example “secret/zabbix:password”) to a Vault secret Note that while the value of a secret macro is hidden from sight, the value can be revealed through the use in items. For example, in an external script an 'echo' statement referencing a secret macro may be used to reveal the macro value to the frontend because Zabbix server has access to the real macro value. To select the value type click on the button at the end of the value input field: icon indicates a text macro; icon indicates a secret text macro. Upon hovering, the value field transforms into a button, which allows to enter a new value of the macro (to exit without saving a new value, click the backwards arrow (). icon indicates a secret Vault macro. Maximum length of a user macro value is 2048 characters (255 characters in versions before 5.2.0). |
Description | Text field used to provide more information about this macro. |
シークレットマクロを含むURLは、マクロが "******" として解決されるため、動作しないことがあります。
トリガ式では、ユーザマクロはパラメータや定数を参照する場合に解決されます。
パラメータまたは定数を参照している場合、解決されます。ホスト、item キー、関数、演算子、または別のトリガー式を
参照している場合は、解決されません。シークレット マクロは、トリガ式では使用できません。
"Status of SSH daemon" item キーにホストレベルマクロを使用する。
net.tcp.service[ssh,,{$SSH_PORT}]
この項目は、複数のホストで {$SSH_PORT} の値が定義されている場合に、複数のホストに割り当てることができます。
"CPU load is too high" トリガー でのホストレベルマクロの使用:
last(/ca_001/system.cpu.load[,avg1])>{$MAX_CPULOAD}
このようなトリガーは、個々のホストで編集するのではなく、テンプレート上で作成されることになります。
値の量を関数のパラメーターとして使用する場合(例えば, max(/host/key,#3)),
SOME_PERIOD => #3
というようにマクロ定義にハッシュ記号を入れてください。
"CPU load is too high" トリガーで2つのマクロを使用する:
min(/ca_001/system.cpu.load[,avg1],{$CPULOAD_PERIOD})>{$MAX_CPULOAD}
マクロはトリガー関数(この例では関数min())のパラメータとして使用することができることに注意。
agent の利用不可条件と item の更新間隔を同期させる。:
nodata(/ca_001/agent.ping,{$INTERVAL})=1
稼働時間の設定を一元化する。
1-5,09:00-18:00
とします。ホストプロトタイプマクロを使用して、検出されたホストの item を設定します:
ホストプロトタイプで、{$SNMPVALUE} を {#SNMPVALUE}low-level discovery マクロ値として定義します:
user macros with context を参照してください。