【Zabbix】Windowsサーバのプロセス監視とサービス監視

はじめに

ZabbixでWindowsのプロセス監視を行おうとした際、上手く行かず、サービス監視を行ったことがありました。
プロセス監視とサービス監視について調べたことをまとめます。

まとめ

  • Windowsサーバの場合、プロセス監視だと各サービスを区別することが難しい
    • Windowsサーバ側で「svchost.exe」のプロセス分離を行えば可能?※要検証
  • サービス監視であれば、各サービスを区別することができる
    • 戻り値はステータスとなるため、正常に起動(0)以外を障害として検知する
    • Zabbix3.0以降は「service.info[]」が推奨のため注意する

検証環境

  • Zabbixサーバ:3.0.30
  • Zabbixエージェント:3.0.31
  • 監視対象:Windows 10 Pro

調べたこと

プロセス監視

プロセス監視のアイテムキー1

Zabbixのプロセス監視のアイテムキーは以下の通りです。

アイテムキー 戻り値 備考
proc.num[\,\,\,] 数値(プロセス数) Windowsではオプション(\,\,)使用不可

<name>にWindowsのプロセス名を入れるため、
Windowsでプロセス名を確認する必要があります。

Windowsのプロセス

Windowsのプロセス名は以下の方法で確認することができます。

タスクマネージャー

  1. 「タスク マネージャー」を起動する
  2. 「名前」を右クリックし、「プロセス名」を選択する

コマンドプロンプト

tasklist /SVC
イメージ名                     PID サービス
========================= ======== ============================================
(中略)
svchost.exe                   1572 W32Time
(後略)

Windowsのプロセス監視の場合、<name>には~.exeの形で指定します。
例) proc.num[sakura.exe]

プロセス障害検知

プロセス監視の場合、アイテムキーの戻り値は数値(プロセス数)です。
そのため、障害としたいプロセス起動数以下、または以外を検知するようにトリガー設定します。

{$TEMPLATE$:proc.num[sakura.exe].last()}<1

問題点

Windowsのサービスは、全て親プロセスのsvchost.exeで管理されています。

そのため、特定のサービスに対するプロセス監視として、svchost.exeは使用できません。
(例えば、DNSもFTPも全てsvchost.exeとなるため、どのサービスが起動しているか判断がつかない)

また、オプションが使用できないため、<cmdline>を使用してフィルタすることもできません。(Linuxであれば可能2)

レジストリキーを修正し、svchost.exeを分離することが可能?※要検証

サービス監視

サービス監視のアイテムキー3

ZabbixのWindowsサービス監視のアイテムキーは以下の通りです。

アイテムキー 戻り値 備考
service.info[] 0 - 実行1 - 一時停止2 - 起動待ち3 - 一時停止待ち4 - 継続待ち5 - 停止待ち6 - 停止7 - 不明255 - サービスが存在しない 「service_state[]」はZabbix3.0以降非推奨Windows特有のアイテムキー(Linuxでは使用不可)

Windowsのサービス

Windowsのサービスは以下の方法で確認できます。

サービス

  1. 「サービス」を開く
  2. 確認したいサービスを右クリックして、「プロパティ」をクリックする

コマンドプロンプト

C:>sc query | findstr /C:SERVICE_NAME /C:STATE
(中略)
SERVICE_NAME: W32Time
        STATE              : 4  RUNNING
(後略)

サービス障害検知

サービス監視の場合、アイテムキーの戻り値はサービスのステータスです。
そのため、障害としたいステータスを検知するようにトリガー設定します。
プロセス監視の代わりに使用したい場合は、正常起動0以外を障害と検知するように設定するのが良いかと思います。

{$TEMPLATE$:service.info[w32Time].last()}<>0

参考資料

ツイッターでシェア
みんなに共有、忘れないようにメモ

batica@初心者はここからわかりません。

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント