Windows に対する SNMP 監視やプロセス監視は ASCII 以外の文字が通らないという話を「[鯖缶] Hinemos 6 で windows のプロセスを監視」と「[鯖缶] hinemos 6 の文字化けについて」で書きました。(もしかしたら上手く通す方法はあるのかもしれませんが)
「いやでも、どうしても ASCII 以外の文字を Windows から拾わないと」という場合は Hinemos agent を介したカスタム監視をするより他にありません。
ということでカスタム監視を試してみます。
プロセス監視の代わりのカスタム監視を考えてみます。
以下がその手順です。
- 監視対象ノードで Hinemos agent が動作していることを確認します。
監視対象の Windows で hinemos agent サービスが動作していることを確認します。
また、リポジトリパースペクティブの "リポジトリ[エージェント]" ウインドウに監視対象ノードが表示されていることを確認します。(Windows 側で hinemos agent サービスが動作していても、"リポジトリ[エージェント]" ウインドウに表示されていない場合は動作しません。) - 監視設定パースペクティブの "監視設定[一覧]" でカスタム監視(数値)を選択します。
- 以下の項目を画面の通りに設定します。
- 監視項目 ID
- スコープ
- 間隔
- 監視
- 通知ID
- アプリケーション
- コマンドを設定します。
コマンドを以下のように設定します。
powershell -command "$m = (Get-WmiObject win32_process | ? {$_.name -match 'notepad'}).CommandLine | ? {$_ -match '新しい'}; 'value,{0}' -f $m.count"
上記はコマンド欄が一行でしか書けないのでワンライナーで書いていますが、以下の Powershell スクリプト相当のことを行っています。
# wmi 経由でプロセス情報を取得する $a = Get-WmiObject Win32_Process # プロセス名に 'notepad' が含まれるものを抽出する $b = $a | ? { $_.name -match 'notepad' } # さらにコマンドラインに '新しい' が含まれるものを抽出する $m = $b.CommandLine | ? { $_ -match '新しい' } # 結果(プロセス数)を key,value の形式で出力する 'value,{0}' -f $m.count
このスクリプトをワンライナーに書き換えて、Powershell.exe の -command オプションに渡しています。
また win32_process の CommandLine の値はプロセス名と引数が分かれずに一つの文字列として得られます。
たとえば以下のようにで戻ってきます。"C:\WINDOWS\system32\notepad.exe" "C:\Users\user01\Desktop\新しいテキスト ドキュメント.txt"
従ってこの点は SNMP を使った標準のプロセス監視と正規表現の表現方法が異なるので注意します。