This is a translation of the original English documentation page. Help us make it better.

2 ユーザーマクロ

概要

Zabbixでは、supportedマクロに加え、より柔軟性の高い
ユーザーマクロがサポートされています。

ユーザマクロは、グローバル、テンプレート、ホストレベルで定義することができます。これらのマクロは
特別な構文を持っています:

{$MACRO}

Zabbixは以下の優先順位に従ってマクロを解決します:

  1. ホストレベルのマクロ (最初にチェックされます)
  2. ホストの第1階層のテンプレート(ホストに直接リンクされたテンプレート)に定義されたマクロ(テンプレートIDでソートされます)
  3. ホストの第2階層のテンプレートに対して定義されたマクロ (テンプレートIDでソートされます)
  4. ホストの第3階層のテンプレートに対して定義されたマクロで、テンプレートID順に並べられます。
  5. グローバルマクロ(最後にチェック)

つまり、あるホストにマクロが存在しない場合、Zabbixはホストテンプレートから徐々にマクロを探そうとします。
それでも見つからない場合、グローバルマクロが存在すれば、それを使用します。

同じレベルのリンクされた複数のテンプレートに同じ名前のマクロが存在する場合、IDが最も小さいテンプレートの
マクロが使用されます。したがって、複数のテンプレートに同じ名前のマクロが存在することは、設定上のリスクとなります。

Zabbix がマクロを見つけることができない場合、マクロは解決されません。

マクロ(ユーザーマクロを含む)は、複雑な設定をより分かりやすくするため、設定セクション(トリガーリストなど)で
未解決のままになっています。

以下の箇所でユーザーマクロを使用することができます:

  • item キーパラメーター
  • item の更新間隔とフレキシブル間隔
  • トリガー名と説明
  • トリガ式パラメータと定数(参照: examples)
  • 他の多くの場所 - full listを参照してください
グローバルマクロとホストマクロの一般的な使用例
  • グローバルマクロを複数の場所で使用し、マクロの値を変更すると、ワンクリックですべての場所に設定変更が適用されます。
  • ホスト固有の属性(パスワード、ポート番号、ファイル名、正規表現など)を持つテンプレートを活用します。

設定

ユーザーマクロを定義するには、フロントエンドの対応する場所に移動します。

  • グローバルマクロの場合、Administration → General → Macros をご覧ください。
  • ホストとテンプレートレベルのマクロは、ホストまたはテンプレートのプロパティを開き、Macrosタブを探します。

ユーザー・マクロがテンプレート内の 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 キー、関数、演算子、または別のトリガー式を
参照している場合は、解決されません。シークレット マクロは、トリガ式では使用できません。

例 1

"Status of SSH daemon" item キーにホストレベルマクロを使用する。

net.tcp.service[ssh,,{$SSH_PORT}]

この項目は、複数のホストで {$SSH_PORT} の値が定義されている場合に、複数のホストに割り当てることができます。

例 2

"CPU load is too high" トリガー でのホストレベルマクロの使用:

last(/ca_001/system.cpu.load[,avg1])>{$MAX_CPULOAD}

このようなトリガーは、個々のホストで編集するのではなく、テンプレート上で作成されることになります。

値の量を関数のパラメーターとして使用する場合(例えば, max(/host/key,#3)),
SOME_PERIOD => #3
というようにマクロ定義にハッシュ記号を入れてください。

例 3

"CPU load is too high" トリガーで2つのマクロを使用する:

min(/ca_001/system.cpu.load[,avg1],{$CPULOAD_PERIOD})>{$MAX_CPULOAD}

マクロはトリガー関数(この例では関数min())のパラメータとして使用することができることに注意。

例 4

agent の利用不可条件と item の更新間隔を同期させる。:

  • {INTERVAL} マクロを定義し、item の更新間隔に使用する。
  • {INTERVAL} を agent 使用不可トリガーのパラメータとして使用する。

nodata(/ca_001/agent.ping,{$INTERVAL})=1

例 5

稼働時間の設定を一元化する。

  • グローバルな {$WORKING_HOURS} マクロを作成し、1-5,09:00-18:00とします。
  • AdministrationGeneralGUIWorking time フィールドで使用します。
  • AdministrationUserMediaWhen active フィールドで使用します。
  • 稼働時間中に、より頻繁に item のポーリングを設定するために使用します。

  • Time period の動作条件で使用します。
  • 必要に応じて、AdministrationGeneralMacros で稼働時間を調整します。
例 6

ホストプロトタイプマクロを使用して、検出されたホストの item を設定します:

ホストプロトタイプで、{$SNMPVALUE} を {#SNMPVALUE}low-level discovery マクロ値として定義します:

  • ホストプロトタイプに Generic SNMPv2 テンプレートを割り当てます。
  • {SNMPVALUE} を使用します。汎用SNMPv2テンプレート項目の SNMP OID* フィールドに {$SNMPVALUE} を使用します。

ユーザーマクロのコンテキスト

user macros with context を参照してください。