Zabbixを使用してsystemdユニット(デフォルトではサービス)を検出することができます。
ディスカバリールールで使用するアイテムは
このitemキーは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 ユニットをディスカバリすることも可能です。この場合、結果の JSON には 3 つのマクロが返されます:
無効な systemd ユニットのプロトタイプからアイテムやトリガーを作成するには、{#UNIT.ACTIVESTATE} および {#UNIT.UNITFILESTATE} に対する LLD フィルタの禁止条件を調整(または削除)してください。
以下のマクロは、ディスカバリールールの フィルター およびアイテム、トリガー、グラフのプロトタイプで使用できます。
| マクロ | 説明 |
|---|---|
| {#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]