【Zabbix】WindowsサービスをLLDで監視する方法

Zabbixでテンプレートを利用して各ホストのWindowsサービス監視をする場合、サービス名を直接指定すると、そのテンプレートを複数のホスト間で使い回すことができませんが、かと言って、共通のサービス監視する場合、ホスト毎に1つずつ設定するのは不便です。
そこで今回は、ZabbixLLDローレベルディスカバリ)を利用した、Windowsサービス監視の設定方法をご紹介します。

LLDでWindowsサービス監視

Windowsサービス監視で設定するLLDローレベルディスカバリ)は、各ホストのWindowsサービス自動で検出するディスカバリルールと、検出されたそれぞれのサービスを監視するためのアイテムとトリガーのプロトタイプの設定を行います。

Windowsサービス監視で必要なディスカバリ設定
  • ディスカバリルール
  • アイテムのプロトタイプ
  • トリガーのプロトタイプ

Windowsサービス監視をするためには、特定のLLDルールを使用して、サービス名や状態を取得するアイテムを作成する必要があります。

ディスカバリルールの作成

ディスカバリルールの作成
ディスカバリルールの作成

始めに、自動でWindowsサービスを検出するためのディスカバリルールを作成します。
ここで設定した内容に従って、Zabbix自動的にサービスを検出します。

  • [設定] → [テンプレート(またはホスト)]に移動します
  • テンプレートの行のディスカバリをクリックします
  • 画面の右上隅にある[ディスカバリールールの作成]をクリックします
  • フォームにディスカバリルールのパラメーターを入力します

設定内容は以下の通りです。
記載のない設定に関しては自身の環境に置き換えて設定してください。(デフォルトで問題ないです)

スクロールできます
設定項目設定値説明・注意点
名前<Windowsサービスの検出>(任意の名前)
タイプZabbixエージェントZabbixエージェント(アクティブ)も可
キーservice.discovery(任意のキー)
監視間隔<1h>滅多に変更しないので長くてOK
ディスカバリルール

設定項目の「タイプ」以外は任意になりますね。。
こちらはLinuxもWindowsも共通設計になりますが、次項の「フィルタ」はご注意ください。

フィルター

フィルター
フィルター

ディスカバリルールでは、フィルターがとても重要になってきます。
例えば、何もフィルタをかけずにWindowsサービスを検出すると、監視不要なものまで全て検出してしまい、視認性が悪くなってしまうと共に、それを複数のホストで監視しようものなら、Zabbixの負荷も高くなってしまいます。
幸い、既に標準のテンプレートでも用意されていますので、そちらを拝借しましょう!

スクロールできます
マクロ条件正規表現正規表現マクロの内容
{#SERVICE.NAME}一致する{$SERVICE.NAME.MATCHES}^.*$
{#SERVICE.NAME}一致しない{$SERVICE.NAME.NOT_MATCHES}^RemoteRegistry|MMCSS|gupdate|SysmonLog|clr_optimization_v.+|clr_optimization_v.+|sppsvc|gpsvc|Pml Driver HPZ12|Net Driver HPZ12|MapsBroker|IntelAudioService|Intel(R) TPM Provisioning Service|dbupdate|DoSvc$
{#SERVICE.STARTUPNAME}一致する{$SERVICE.STARTUPNAME.MATCHES}^automatic|automatic delayed$
{#SERVICE.STARTUPNAME}一致しない{$SERVICE.STARTUPNAME.NOT_MATCHES}^manual|disabled$^manual|disabled$
フィルタ設定

上記はWindowsサービスを検出するためのフィルターになります。
ただし、マクロの正規表現を見てもらうと分かる通り、これだとWindows上にあるすべてのサービスを監視してしまいますので、実際には必要なサービスのみ監視するようにフィルターを追加してください。

以上でディスカバリルールの設定は完了です!
次に、検出したディスクを監視をするために「アイテムのプロトタイプ」と「トリガーのプロトタイプ」を作成していきましょう。

アイテムのプロトタイプの作成

アイテムのプロトタイプの作成
アイテムのプロトタイプの作成

アイテムのプロトタイプでは、Zabbixで自動的に検出した全てのWindowsサービス監視設定を共通的に行うことができます。

  • [設定] → [テンプレート(またはホスト)]に移動します
  • テンプレートの行のディスカバリをクリックします
  • 該当のディスカバリルールにある[アイテムのプロトタイプ]をクリックします
  • 画面の右上隅にある[アイテムのプロトタイプの作成]をクリックします
  • フォームにアイテムのパラメーターを入力します

冒頭でも少し触れましたが、例えば、サービスが複数ある場合、LLDを利用しなければサービスの数だけアイテムを設定しなければなりませんが、アイテムのプロトタイプを使えば、それぞれのLLDで検出したサービスのアイテムもZabbixが自動で作成します!

設定項目設定値説明・注意点
名前<”{#SERVICE.NAME}” ({#SERVICE.DISPLAYNAME}):Windowsサービス監視>(任意の名前)※LLDマクロを使うと尚良し
タイプZabbixエージェントZabbixエージェント(アクティブ)も可
キーservice.info[“{#SERVICE.NAME}”,state]LLDマクロ{#SERVICE.NAME}とstateオプションを使用する
データ型整数サービス状態の数値:
0 – 実行中
1 – 一時停止
2 – 保留中の開始
3 – 保留中の一時停止
4 – 保留中の続行
5 – 保留中の停止
6 – 停止
7 – 不明
255 – 該当サービスなし
単位<なし>(後ほど記載)
監視間隔<1m>(任意の間隔。トリガーも考慮する)
Windowsサービス使用率監視(アイテムのプロトタイプ)

トリガーのプロトタイプの作成

トリガーのプロトタイプの作成
トリガーのプロトタイプの作成

トリガーのプロトタイプアイテムのプロトタイプと同じように、1つ設定していたら、Zabbixが検出したサービス全てに自動で設定されます。

  • [設定] → [テンプレート(またはホスト)]に移動します
  • テンプレートの行のディスカバリをクリックします
  • 該当のディスカバリルールにある[トリガーのプロトタイプ]をクリックします
  • 画面の右上隅にある[トリガーのプロトタイプの作成]をクリックします
  • フォームにトリガーのパラメーターを入力します

トリガーのプロトタイプの閾値についてはご自身の環境に合わせてください。
設定する際は、アイテムで取得した値が「0」が実行中(正常)であることに注意しましょう。

スクロールできます
設定項目設定値説明・注意点
名前<”{#SERVICE.NAME}” ({#SERVICE.DISPLAYNAME}) が実行されていません (スタートアップの種類 {#SERVICE.STARTUPNAME})>スタートアップの種類:
0 – 自動
1 – 自動遅延
2 – 手動
3 – 無効
4 – 不明
深刻度<軽度の障害>(任意の深刻度)
条件式min(/Template Module Windows services by Zabbix agent/service.info[“{#SERVICE.NAME}”,state],#3)<>0過去3回の最小値が0(実行中)以外なら障害イベントを発生
Windowsサービス監視(トリガーのプロトタイプ)

もし、サービス毎に別々の閾値を設定したいと考えているなら、コンテキストユーザーマクロが便利ですよ!

【フィルタの注意点】サービス名と表示名は違う!

【フィルタの注意点】サービス名と表示名は違う!
サービス名と表示名は違う!

最後に、ディスカバリルールフィルターで少し触れましたが、フィルターの設定がデフォルトのままだと、大量のWindowsサービスを検出してしまい、意図したサービスを監視することが難しくなります。

そこで、予めフィルターで監視するサービス名を絞りたいのですが、上の画像を見ると分かる通り、Windowsサービスには「サービス名」と「表示名」というものがあり、しばしばこの2つを間違えて設定してしまうことがありますので注意しましょう。

画像左の例では、時刻のズレを修正するためにインターネット時刻と同期をしてくれる「Windowsタイムサービス」ですが、表示名は「Windows Time」ととてもわかりやすいですが、実際にZabbixに監視設定するサービス名は「Win32Time」となります。

また、画像右の「リモートデスクトップサービス」の表示名は「Windows Desktop Services」ですが、肝心のサービス名は「TermService」ですね。

このように、ZabbixWindowsサービス監視をする際は、きちんとサービス名を確認してから設定しましょう!


Amazonベストセラー

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA