Edited at

DataSpider でプロセスの監視ができるか試してみた

More than 3 years have passed since last update.

本記事は、「アプレッソ Advent Calendar 2015」17日目の記事です


はじめに

サポートセンターにはお客様からのご要望が日々上がってきますが、時には内容的に対応しきれない場合もあります。

例えば、

・DataSpider を使ってプロセスを監視したい

データ連携ソフトである DataSpider とは直接は関係が薄い機能です。

普段であれば、お断りせざるを得ない内容なのですが、今回は DataSpider で実現できるのか確認してみたいと思います。


プロセス監視の方法を考えてみる

プロセス監視と言えば・・・、今更な感じはしますが、SNMP プロトコルが便利かな?と思うので、SNMP を使って行きます。

まず DataSpider でどうやって SNMP エージェントから情報を取得するかを考えてみると・・・

フリーソフトの Net-SNMP に入っている snmpwalk コマンドを叩くのが一番簡単だと思います。

そんなわけで、Net-SNMP をダウンロードして DataSpiderServer と同じ環境にインストール

次のプロセス監視をされる側に SNMP エージェントの設定を入れます。

Windows だと Windows の機能に SNMP エージェントがあるので、SNMP エージェントの機能を追加、設定をします。

これで設定はできたはず・・・

コマンドプロンプトで以下を叩いて SNMP でとれる一覧を見てみます。

snmpwalk -v v2c -c public 192.168.XXX.XXX

大量にとれるので、細かいところは置いておいて、目的のところを探してみると・・・

ありました。

↓みたいな感じで起動しているプロセスが一覧で出ています。

・・・

iso.3.6.1.2.1.25.4.2.1.2.1 = STRING: "System Idle Process"
iso.3.6.1.2.1.25.4.2.1.2.4 = STRING: "System"
iso.3.6.1.2.1.25.4.2.1.2.380 = STRING: "smss.exe"
iso.3.6.1.2.1.25.4.2.1.2.508 = STRING: "AcroRd32.exe"
iso.3.6.1.2.1.25.4.2.1.2.588 = STRING: "svchost.exe"
iso.3.6.1.2.1.25.4.2.1.2.592 = STRING: "csrss.exe"
iso.3.6.1.2.1.25.4.2.1.2.636 = STRING: "svchost.exe"
iso.3.6.1.2.1.25.4.2.1.2.648 = STRING: "wininit.exe"
iso.3.6.1.2.1.25.4.2.1.2.656 = STRING: "csrss.exe"
iso.3.6.1.2.1.25.4.2.1.2.696 = STRING: "services.exe"
iso.3.6.1.2.1.25.4.2.1.2.724 = STRING: "lsass.exe"
iso.3.6.1.2.1.25.4.2.1.2.732 = STRING: "lsm.exe"
iso.3.6.1.2.1.25.4.2.1.2.824 = STRING: "winlogon.exe"
iso.3.6.1.2.1.25.4.2.1.2.888 = STRING: "svchost.exe"
iso.3.6.1.2.1.25.4.2.1.2.952 = STRING: "nvvsvc.exe"
iso.3.6.1.2.1.25.4.2.1.2.976 = STRING: "nvwmi64.exe"
iso.3.6.1.2.1.25.4.2.1.2.1016 = STRING: "svchost.exe"
iso.3.6.1.2.1.25.4.2.1.2.1048 = STRING: "svchost.exe"

・・・

次はこれを DataSpider で取得していきます。

処理の流れは↓みたいな感じで行きます。

 ①コマンドを叩いて起動しているプロセス一覧を取得して 変数に代入

 ②起動していてほしいプロセスを csv から読み込み、①で出力した 変数内に含まれているかチェック

 ③起動していてほしいプロセスがなければメール送信


DataSpider でのスクリプトの作成

上記のスクリプトを実際に DataSpider で作成してみました。

スクリプト.png

全体像はこんな感じです。

詳細は、長くなりそうなので、また機会があれば説明したいと思います。


動作確認

それでは実際にうまく取れるか確認してみます。

コマンドプロンプトの「cmd.exe」が起動しているかを取れるか確認してみたいと思います。

まずコマンドプロンプトが起動していない状態でスクリプトを実行します。

メール.png

メールが飛びました。

次にコマンドプロンプトを起動してスクリプトを実行します

メール後.png

なにも動きがないのでわかりにくいですが、メールが飛びません。

プロセスが起動しているか取得できています。

これをスケジュールトリガーなどで定期的に実行すればプロセスを監視することができます。

別のアプリと組み合わせることで、いろいろなことができますね!