aeMonitor /GWMonitor-Japaneseコミュニティーサイト

Register Now | Log in | Lost Password

フォーラム

フォーラム一覧   -   トピック一覧
   GroundWork Monitor の設定について
     mib値による監視の際の設定について
投稿するにはまず登録を

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
marimo
投稿日時: 2012-7-11 12:51
新米
登録日: 2012-7-9
居住地:
投稿: 3
Re: mib値による監視の際の設定について
hiroさん、こんにちは

助言を頂いているうちに、今更ながら私の『やりたいこと』というのが
nagios側の話であることに気付きました。

まずは、先に助言頂いたperlの内容と、Nagiosプラグインの作成ガイド
プリインストールされているプラグインを元に自作プラグインにて
実装を目指してみようと思います。
hiro
投稿日時: 2012-7-11 9:39
一人前
登録日: 2008-6-5
居住地:
投稿: 75
Re: mib値による監視の際の設定について
重要なことを忘れていましたので、蛇足ながら追記します。
それは、作成するプラグインスクリプトの結果出力と、戻り値の値についてです。

詳しくは、Nagiosプラグインの作成ガイドを参照してください。
http://nagiosplug.sourceforge.net/developer-guidelines.html

簡単に説明しておくと、
結果の出力は、標準出力(stdout)への文字列出力で、その内容は監視結果メッセージと性能データの組み合わせです。
(結果メッセージと性能データの文字列はパイプ文字(|)で区切ります)

GroundWork Monitor ではこの形式を守って置きさえすれば、コンフィグレーションで「パフォーマンスデータ処理を行なう」のチェックをするだけでグラフが自動的に作成されます。

戻り値は0〜3の値で、それぞれOK,Warning,Critical,Unknownです。






hiro
投稿日時: 2012-7-10 16:39
一人前
登録日: 2008-6-5
居住地:
投稿: 75
Re: mib値による監視の際の設定について
GroundWork Monitorのフォーラムのテーマとしては逸脱してしまいそうですが....乗りかかった船なので、、、、、


Perlスクリプトだと文字列操作が簡単ですので、Perlを使用するイメージで説明します。

1)snmpgetコマンドを実行する。

  $return_value = `snmpget........`

2)応答メッセージからTimeTicksの数字を取り出します

  snmpget コマンドの応答文字列が、下記のような場合:
    .1.3.6.1.2.1.25.1.1.0 = Timeticks: (231789) 0:38:37.89

  a) まずは、空白をデリミタ(セパレータ)として文字列を分割します。(文字列操作:split)
    下記のようになると思います。

    0番目 .1.3.6.1.2.1.25.1.1.0
    1番目 =
    2番目 Timeticks:
    3番目 (231789)
    4番目 0:38:37.89

    起動後経過時間の比較するのには、3番目か4番目を利用すると良いでしょう。
    3番目の方がより比較し易いと思います。

  b) 3番目の文字列から括弧を外します。(文字列操作:s)

    231789

    これで、起動後経過時間の数値は取れました。

3)前の数値保存ファイルの存在を確認し、存在すれば開いて読み出します。

  *注1:ファイル名は"ホスト名-OID"くらいがでよいでしょう...
   注2:ディレクトリは /usr/groundwork/ 以下がよいでしょう。


4)2で生成した起動後経過時間の数値を、保存ファイルに書き込みます。
  注:ファイルの存在確認や書き込み方法はPerlの使い方を調べてくださいね。

5)2と3のデータを比較します。
  2より3が大きければOK。3よりも2が大きければアラートとなります。
  (3で、ファイルが存在しなければ、OKとなります。)

marimo
投稿日時: 2012-7-10 10:48
新米
登録日: 2012-7-9
居住地:
投稿: 3
Re: mib値による監視の際の設定について
hiroさん、こんにちは

早速のご回答有難うございました。

後だしの情報となり申し訳御座いません。
事前に以下のことを試しており、コマンドの結果のみは取得できておりました。

■実施した内容
※下記OIDは、事前に対象ホストよりsnmpwalkコマンドにて取得したsysUpTimeInstance

操作.1コマンドの作成
    check_snmpをテンプレートとして複製し、以下コマンドラインを作成
    コマンドライン:$USER1$/check_snmp -H $HOSTADDRESS$ -o ".1.3.6.1.2.1.25.1.1.0" -C '$USER32$'

操作.2サービスの作成
    サービス詳細:デフォルト(generic_service)のまま
    サービスチェック:チェックコマンドに(1)作成したものを指定
    コマンドラインにcheck_snmp_test_sysuptime を指定

操作.3監視対象ホストに、サービスを割り当て


■やりたいこと について
(1)と(2)について、snmpgetによりコマンド結果の値を取得することはできました。
前回取得値とを比較するに当たり、どうプラグイン(スクリプト)を作成すれば良いか
悩んでおり他事例があればサンプル等ないかと思案に暮れておりました。

※シェルスクリプトくらいは弄れます、perlについては学習中です。

■補足
・sysUpTimeInstanceとhrSystemUptime.0の違いについて
→違いについてのご指摘有難う御座いました。
・取得したデータのグラフ化について
→本件では、特にグラフ化の必要性はないのですが今後、サービスを追加した際に
グラフ化は必要となることを考慮し、本件で実装しておこうと考えておりました。
hiro
投稿日時: 2012-7-9 17:26
一人前
登録日: 2008-6-5
居住地:
投稿: 75
Re: mib値による監視の際の設定について
marimoさん、こんにちは。

『やりたいこと』を読みますと、要はシステムの再起動を監視し、再起動されたらアラートを上げたいということですね。原因不明のリブートを見張りたい場合などには、よく希望があります。(なぜグラフ化までしたいのかの理由は分かりませんが)

そういった管理内容でよいのであれば、オンラインマニュアル(ブックシェルフ)の GROUNDWORKプロファイル --> SNMPプロファイル --> SNMP Network を参照してみてください。

そこでSNMP Networkに含まれているサービスとされている snmp_uptime を使えば『やりたいこと』ができるとおもいます。
ただ、残念ながら少なくともGWMCEでは snmp_uptime は同プロファイルに含まれておらず、サービス登録もされておりません。ですので、マニュアルで記述されているような形式でサービス登録をする必要があります。

これで実現できない場合、あるいは中身の見えるもので実施したい場合は、Nagios Exchangeで公開されている check_snmp_uptime が使用できるでしょう。

http://exchange.nagios.org/directory/Plugins/System-Metrics/Uptime/check_uptime--2F-check_snmp_uptime/details

なお、『やりたいこと』(1)〜(3)についてコメントをしましたので、各個別に実施されたい場合、参考にしてください。

注意点として、sysUpTimeInstance と hrSystemUptime では意味が異なるので、何をしたいのかを明確にして置いたほうが良いでしょう。
たとえば、sysUpTimeInstance がリセットされるのは、システムの再起動だけでなく、SNMPプロセスの再起動(初期化)でも発生するようです。(snmpdの再起動を監視したいのならばよいのですが、そうでない場合 hrSystemUptime を使うべきでしょう。)


----------------------
(1) sysUpTimeInstance、またはhrSystemUptime.0を取得したい
  
  Ans. snmpの値を取得する方法はいろいろとありますが、最も手軽で使いやすい方法として、snmpgetコマンドを利用して取得する方法があります。

   具体的には、sysUpTimeInstanceのOIDは 1.3.6.1.2.1.1.3.0 ですので、たとえば
   
   $ snmpget -On -c <コミュニティ名> -v <SMNPのバージョン> <ターゲットホスト名かIPアドレス> .1.3.6.1.2.1.1.3.0

   で取得できると思いますので、まずコマンドラインで実行してみてください。

   この snmpget を使用してスクリプトを作成すれば、いろいろな機能を付加することができます。


(2) 前回取得した値(Timeticks)と最新の値を比較し、値が現象していたら異常(リセット)と判定し通知メールを送りたい
   ※異常の状態は継続ではなく、即時復旧としたい

  Ans. snmgetの後に取得した値をテンポラリファイルに保存し、 次回のsnmpget時に比較して、値が変化(減少)していたらアラート(WarningかCritical)となるようなプラグイン(スクリプト)を作成してコマンド登録、サービス登録をすればOKです。

(3) 取得したデータをグラフ化して表示したい

  Ans. 2で作成した(プラグインのコマンドを使用した)サービスを登録する際に、グラフ作成のための登録をします。(手順はマニュアルを参照してください。)
marimo
投稿日時: 2012-7-9 15:46
新米
登録日: 2012-7-9
居住地:
投稿: 3
mib値による監視の際の設定について
snmpで取得したmib値を使って監視を行いたいと考えております。
具体的には以下の『やりたいこと』に羅列した内容が実現できず悩んでおりますので助言頂けますと幸いです。

■やりたいこと
(1) sysUpTimeInstance、またはhrSystemUptime.0を取得したい
※Timeticks
(2) 前回取得した値(Timeticks)と最新の値を比較し、
値が現象していたら異常(リセット)と判定し通知メール
を送りたい
   ※異常の状態は継続ではなく、即時復旧としたい
(3) 取得したデータをグラフ化して表示したい

スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を