プログラミング
逆引き
クライアントとの通信
VisMでの通信
Factoryでの通信
WebServiceでの通信
CSP (Cache' Server Pages)
Cache'SQL
設定・性能


【広告】









SNMPでの監視

SNMP Monitoring

 Cache'をSNMPを使って監視することができるということなので、試してみました。
 監視される側(エージェント側)はLinux上でsnmpdを、マネージャーはwindows7上でTWSNMPを使用しました。設定はマニュアルhttp://docs.intersystems.com/cache20102j/csp/docbook/DocBook.UI.Page.cls?KEY=GCM_snmpを参考に設定しました。

SNMPの基本設定

まずは正しくSNMPでの通信が行えていることを確認するため、Cache'ではなくLinuxOSの情報を取得してみます。
エージェント側で以下のように/etc/snmp/snmpd.confファイルを編集しpublic accessをenableにしました。

com2sec notConfigUser 192.168.0.0/16 public
group myROGroup v1 notConfigUser
group myROGroup v2c notConfigUser
view all included .1 80
access myROGroup "" any noauth exact all none none

この状態でTWSNMPからSNMPを情報を使用して情報を取得してみます。
対象サーバーノードを追加し、ノードの右クリックから[SNMP管理]→[MIBブラウザ]を選択します

標準MIBのsystem(iso.org.dod.internet.mgmt,mib-2.system/1.3.6.1.2.1.1)下の情報を取得してみます。


このように情報が取得できたので、正しくSNMPの通信が行えていることが分かります。



Cache'用の設定

まずCache'でSNMPサービスを有効にします。
[ホーム] > [セキュリティ管理] > [サービス]から[%Service_Monitor]を開き、[サービス有効]にチェックを入れて[保存]ボタンを押します。


その画面の[モニタ設定を構成]リンクを開き、[システム開始時にSNMPエージェントを開始]を[はい]にして[保存]ボタンを押します。

これでCache'側でSNMPサービスが有効になりました。

次にsnmpdとCache'が通信できるようにします。
snmpdとCache'はAgentXという方法で通信を行います。
そのための設定を/etc/snmp/snmpd.confファイルに追加します。
master agentx
agentxSocket 705

念のためsnmpdサービスを再起動します。
> service snmpd restart
snmpd を停止中: [ OK ]
snmpd を起動中: [ OK ]


Cache'情報の取得

TWSNMPでCache'のSNMP情報を解釈できるようにするため、MIBの取込みを行います。
Cache'のMIBはインストールフォルダ下のSNMPフォルダにISC-CACHE.mibというファイル名で配置してあります。(例: c:\intersystems\cache\snmp\ISC-CACHE.mib )

TWSNMPのメニュー[SNMMP管理]→[MIBツール]で表示された画面から、[追加]ボタンを押しCache'のMIBファイルを指定して[OK]を押します。
[読み込んだMIBファイル]の一覧に ISC-CACHE.txt が追加されていれば、正しく取込みが完了しています。

対象サーバーノードを右クリックし、[SNMP管理]→[MIBブラウザ]を選択します。
intersystems(iso.org.dod.internet.privateintersystems/1.3.6.1.4.1.1.16563)下の情報を取得してみます。


以下のように情報が取得できました。


監視すべき対象としては、cacheSysErrorMsg・cacheSysLicenseUsedなどでしょうか。


ポーリング監視対象に追加

cacheSysErrorMsgをポーリング監視(TWSNMPから定期的にアクセスし、異常な値でないか確認すること)の対象に追加してみます。
先ほどのMIBブラウザ画面からcacheSysErrorMsgの行を選択し、[ポーリング登録]ボタンをクリックします。

ポーリング設定画面で以下のように設定します。


cacheSysErrorMsgはcconsole.logファイルに重大度2以上のエラーが発生した場合にその内容が設定されます。

では試しにエラーを発生させてみます。 重大度2以上のエラーを発生させるのも難しいので、コンソールログに自作のメッセージを出力してみましょう。
USER> Do ##class(%SYS.System).WriteToConsoleLog("Test Error Message",0,2)
エラーを発生させると、まもなくTWSNMPがエラーを検知します。
 

SNMP Trapを送る

SNMP Trapで障害を通知するためには、エージェント側で通知先の設定が必要になります。
以下のように/etc/snmp/snmpd.confファイルを編集しpublic accessをenableにしました。
trapcommunity public
trap2sink 192.168.123.45 public                                    ## TWSNMPが動作しているマシンのIPアドレス
createUser _internal MD5 "the first sign of madness"
iquerySecName _internal
rouser _internal
障害イベントの定義などは特に必要なく、上で設定したagentXの設定が正しく行えていればCache'のイベントは自動的に送られるようです。


以下は、Cache'の再起動を実施した際にcacheStartイベントが発生し、TRAPにて通知された画面です。



SNMP Trapを受信するにはマネージャー側(この例ではwindows)でファイヤーウォールのポート開放が必要になることがあります。
  SNMP Trapの送信テストはLinuxから下のコマンドで行えます。(192.168.123.45がTWSNMPが動作しているマシンのIPアドレスです)
   snmptrap -v 2c -c public 192.168.123.45 '' .1.3.6.1.4.1.8072.99999 .1.3.6.1.4.1.8072.99999.1 s "Test Message"




[an error occurred while processing this directive] [an error occurred while processing this directive]
2014/02/04Update