systemdサービスの検出
概要
Zabbixを使用してsystemdユニット(デフォルトではサービス)を検出することができます。
アイテムキー
ディスカバリルールを設定するには、Zabbix エージェントのアイテムキー systemd.unit.discovery を使用します。
このアイテムキーは Zabbix agent 2 でのみサポートされています。
このアイテムは、systemd ユニットに関する情報を含む JSON を返します。例:
[{
"{#UNIT.NAME}": "mysqld.service",
"{#UNIT.DESCRIPTION}": "MySQL Server",
"{#UNIT.LOADSTATE}": "loaded",
"{#UNIT.ACTIVESTATE}": "active",
"{#UNIT.SUBSTATE}": "running",
"{#UNIT.FOLLOWED}": "",
"{#UNIT.PATH}": "/org/freedesktop/systemd1/unit/mysqld_2eservice",
"{#UNIT.JOBID}": 0,
"{#UNIT.JOBTYPE}": "",
"{#UNIT.JOBPATH}": "/",
"{#UNIT.UNITFILESTATE}": "enabled"
"{#UNIT.SERVICETYPE}": "simple"
}, {
"{#UNIT.NAME}": "systemd-journald.socket",
"{#UNIT.DESCRIPTION}": "Journal Socket",
"{#UNIT.LOADSTATE}": "loaded",
"{#UNIT.ACTIVESTATE}": "active",
"{#UNIT.SUBSTATE}": "running",
"{#UNIT.FOLLOWED}": "",
"{#UNIT.PATH}": "/org/freedesktop/systemd1/unit/systemd_2djournald_2esocket",
"{#UNIT.JOBID}": 0,
"{#UNIT.JOBTYPE}": "",
"{#UNIT.JOBPATH}": "/",
"{#UNIT.UNITFILESTATE}": "enabled"
}]
無効化された systemd ユニットの検出
無効化された systemd ユニットも検出できます。この場合、結果の JSON には 3 つのマクロが返されます。
{#UNIT.PATH}{#UNIT.ACTIVESTATE}{#UNIT.UNITFILESTATE}
無効化された systemd ユニットに対してプロトタイプからアイテムとトリガーを作成するには、{#UNIT.ACTIVESTATE} と {#UNIT.UNITFILESTATE} に対する禁止的な LLD フィルターを調整するか、削除してください。
サポートされるマクロ
以下のマクロは、ディスカバリルールのフィルターおよびアイテム、トリガー、グラフのプロトタイプで使用できます:
| Macro | Description |
|---|---|
{#UNIT.NAME} |
主要なユニット名。 |
{#UNIT.DESCRIPTION} |
人間が読みやすい説明。 |
{#UNIT.LOADSTATE} |
ロード状態(つまり、ユニットファイルが正常に読み込まれたかどうか) |
{#UNIT.ACTIVESTATE} |
アクティブ状態(つまり、ユニットが現在起動しているかどうか) |
{#UNIT.SUBSTATE} |
サブ状態(アクティブ状態をより細かく表したもので、ユニットの種類に固有。アクティブ状態にはない) |
{#UNIT.FOLLOWED} |
このユニットが状態を追従しているユニット。存在する場合はそのユニット、存在しない場合は空文字列。 |
{#UNIT.PATH} |
ユニットオブジェクトのパス。 |
{#UNIT.JOBID} |
ジョブユニットに対してキューに入っているジョブがある場合の数値のジョブID。そうでない場合は 0。 |
{#UNIT.JOBTYPE} |
ジョブタイプ。 |
{#UNIT.JOBPATH} |
ジョブオブジェクトのパス。 |
{#UNIT.UNITFILESTATE} |
ユニットファイルのインストール状態。 |
{#UNIT.SERVICETYPE} |
サービスユニットの種類(例: simple, forking, oneshot, idle など)。このマクロは、ユニットがサービスの場合にのみ返されます。 |
アイテムプロトタイプ
systemdサービスディスカバリに基づいて作成できるアイテムプロトタイプには、例えば以下のものがあります。
- アイテム名:
{#UNIT.DESCRIPTION} active state info; アイテムキー:systemd.unit.info["{#UNIT.NAME}"] - アイテム名:
{#UNIT.DESCRIPTION} load state info; アイテムキー:systemd.unit.info["{#UNIT.NAME}",LoadState]