サーバー監視ツール Judgement

Judgement? bookmark

judgement.jpg
  • Judgementはフリーのサーバー監視プログラムです。
    3種類の設定ファイル(動作/報告/スケジュール)を記述する事で様々な監視を可能にします。
    watcherやswatchと似た様なプログラムでGUIいらなくて
    結果をメールで受け取りたい人向けです。*1
     
     
     
  • 機能
    • 検出機能
      • ログファイルから特定キーワードを含む行の検出
      • コマンド出力から特定キーワードを含む行の検出
      • ping等を利用したNW機器監視
      • ディスク使用率の監視
      • 特定プロセスの監視(+ダウン時の自動起動)
      • コマンドの定時実行
      • メモリ使用量の監視
      • swatchrcの取り込み(1.2.0からの新機能)
      • nagiosのプラグイン対応(1.4.0からの新機能)
      • SNMP Trap V1 or V2c受信機能(1.6.0からの新機能)
      • その他tcpdumpとかと組み合わせて特定パケットの検出等色々可能です。
    • 結果出力機能
      • メールでの出力
      • druby経由でのJudgementWeb?への出力
      • XMLRPCを利用した出力(metaWeblog API使用)(1.7.0からの新機能)
         開発時はtdiaryで動作確認しました。
  • プログラム的特長
    • Rubyで記述されています。
    • 設定ファイルはYAMLを使用しています。

judgementの今後のリリース bookmark

今後はRuby2.1と2.3系で開発を続けて行きます。
*1.8系、1.9系のJudgementはダウンロードは可能にしておきます。
バージョン番号は以下の様に今まで通りとなります。
A.B.C.D.E
A.B = 機能追加時にアップされるバージョン番号
C = バグフィックスのみの場合にアップされるバージョン番号
D.E = 1.8 or 1.9 or 2.1対応するRubyのバージョン番号
例.
  Ruby-1.8.7用 2.1.0.1.8
  Ruby-1.9.1用 2.1.0.1.9
  Ruby-2.1.0用 2.1.0.2.1
  Ruby-2.3.0用 2.1.0.2.3
  Ruby-2.5.0用 2.1.0.2.5

judgement-2.0.0をRuby-1.9.1環境で動作するためには? bookmark

judgement-2.0.0ではメール送信部分がruby-1.9.1ではエラーに
なっちゃいますのでどうしても1.9.1環境で動作させたい場合は、
以下のパッチを適用して下さい。

適用方法
1.上記パッチをダウンロード
2.judgementインストールディレクトリ/lib/coreに移動
3.patch -p0 < パッチファイル

最新の変更点 bookmark

  1. Ruby-2.5向けJudgemebnt
  2.   + Ruby-2.5に対応しました。
  3. Ruby-2.3向けJudgemebnt
  4.   + Ruby-2.3に対応しました。
  5.   * lib/addon/DiffCat.rbでUTF-8の不正バイト文字列に対応しました。
  6. Ruby-2.1向けJudgemebnt
  7.   * lib/addon/DiffCat.rbでUTF-8の不正バイト文字列に対応しました。
  8.   + Ruby-2.1に対応しました。
  9.     (それに合わせてサンプルJConfを一部修正しました。)
  10.   * lib/addon/DiffCat.rbで1回の最大読み込み行数を100000行に制限しました。
  11.   (巨大なファイルを指定した時にメモリを使い切る問題に対応)
  12.   * Noticeファイルのname値に特殊変数「alert1」「alert2」を両方記述して、
  13.   alert2が発生したときに「alert2」で定義した通知先に通知されないのを修正しました。
  14.   * 各ファイル(jconf,notice,schedule)読み込み時のYAML文法エラー例外処理を修正しました。
  15.   * doc/sample/script/ProcessCheck.rbに存在しないプロセス名を指定するとエラーになる問題を修正しました。
  16.   + 独自変数<MACADDR/>追加
  17.   MACアドレスに一致します。
  18.   + サンプルdoc/sample/jconf/Ebtables.yaml追加。
  19.     ebtablesログ内の特定のパケット検出に利用可能です。
  20.   + サンプルdoc/sample/jconf/Inotifywait.yaml追加。
  21.     inotifywaitの出力をファイルに出力させてそれを監視します。
  22. Ruby-1.8向けJudgemebnt
  23.   * lib/addon/DiffCat.rbで1回の最大読み込み行数を100000行に制限しました。
  24.   (巨大なファイルを指定した時にメモリを使い切る問題に対応)
  25.   * Noticeファイルのname値に特殊変数「alert1」「alert2」を両方記述して、
  26.   alert2が発生したときに「alert2」で定義した通知先に通知されないのを修正しました。
  27. Ruby-1.9向けJudgemebnt
  28.   * lib/addon/DiffCat.rbでBASE64デコード処理に抜けがあったので修正。
  29.   * lib/addon/ExternalExec.rbでBASE64デコード処理に抜けがあったので修正。

動作環境 bookmark

  • Ruby 2.1.0以上
    *SNMP Trap受信機能を使用する場合はrubygemsが必要です。
    *SNMP Trap受信機能を使用する場合はgem経由でsnmpをインストールする必要があります。
  • Rubyが動作するOS
    *開発環境ではCentOS6.5/Windows8.1で動作確認を行いました。
    *Windowsの場合はrubygemsが必要です。
    *Windowsの場合はgem経由でwin32-serviceをインストールする必要があります。
    (*2014/08/04現在、Windows上でwin32-serviceがインストール出来ていません・・・)

関連リンク bookmark

ライセンス bookmark

BSDライセンス

ダウンロード(ruby-2.5.0用)*現行バージョン bookmark

  • バージョン : 2.2.2.2.5 (2018/12/07)
  • 文字コード/改行 : UTF8N/LF
  • SHA256: fd77aa1b5a2bc076a47fc847b01a735b9200f032d4d71948256a50685c4d0f71

ダウンロード(ruby-2.3.0用)*現行バージョン bookmark

  • バージョン : 2.2.1.2.3 (2016/04/26)
  • 文字コード/改行 : UTF8N/LF
  • MD5: c9901270416be909544b224610f644ed

ダウンロード(ruby-2.1.0用)*旧バージョン bookmark

  • バージョン : 2.2.1.2.1 (2016/04/26)
  • 文字コード/改行 : UTF8N/LF
  • MD5: 6f3a4533185c6e3b2254a7e9f9d70c0a

ダウンロード(ruby-1.8.7用)* 旧バージョン bookmark

  • バージョン : 2.2.1.1.8 (2010/11/09)
  • 文字コード/改行 : UTF8N/LF
  • MD5: f5e8916f9c28add796cbd1f178d85f10
  • Judgementをすぐに使ってみたい人向けの
    最低限の設定パック

ダウンロード(ruby-1.9.1用)* 旧バージョン bookmark

  • バージョン : 2.1.1.1.9 (2009/02/23)
  • 文字コード/改行 : UTF8N/LF
  • MD5: adbb287f6305786c410bdc796a05

*Windows環境では未検証ですのでご注意ください。

サンプル bookmark

  • 動作設定ファイル例(その1)
    1. #
    2. # JConf File
    3. #
    4.  
    5. # type: jconf
    6. #
    7. type: jconf
    8.  
    9. # enable: true | false
    10. #
    11. enable: true
    12.  
    13. # title: Title String
    14. #
    15. title: /var/log/secure監視
    16.  
    17. # exec :
    18. #        command: CommandString
    19. #        mask: true | false
    20. #        argv: ARGV Array
    21. #
    22. # addon.DiffCat.exec( '監視対象ログファイルパス' , '最終読取位置保存ファイル' )
    23. # *DiffCatはファイルの最終読取位置からの増分を出力するクラスです。
    24. exec:
    25.       command: addon.DiffCat.exec( '/var/log/secure' , '<CURRENTDIR/>/tmp/IndexDB.yaml' )
    26.       mask:    false
    27.       argv:
    28.  
    29. # keyword: Keyword Array
    30. #
    31. keyword:
    32.          - error
    33.          - refused
    34.          - warning
    35.          - fail
    36.          - denied
    37.  
    38. # skipword: skipword Array
    39. #
    40. skipword:
  • 動作設定ファイル例(その2)
    1. #
    2. # JConf File
    3. #
    4.  
    5. #
    6. #
    7. #
    8. type: jconf
    9.  
    10. # enable: 本ファイルの有効/無効
    11. #
    12. #
    13. enable: true
    14.  
    15. # title: 本ファイルの名称
    16. #
    17. #
    18. title: NW機器監視(TCPレベル)
    19.  
    20. #
    21. #
    22. #
    23. exec:
    24.       command: addon.PortPing.exec( "<ARGV/>" )
    25.       mask:    false
    26.       argv:
    27.             - '172.16.1.10:80'
    28.             - '172.16.1.20:8080'
    29.  
    30. keyword:
    31.          - no answer<A+2/>
    32.  
    33. #
    34. #
    35. #
    36. skipword:
  • 動作設定ファイル例(その3)
    1. #
    2. # JConf File
    3. #
    4.  
    5. # type: jconf
    6. #
    7. type: jconf
    8.  
    9. # enable: 本ファイルの有効/無効
    10. #
    11. #
    12. enable: true
    13.  
    14. # title: 本ファイルの名称
    15. #
    16. #
    17. title: HD使用率監視
    18.  
    19. #
    20. #
    21. #
    22. exec:
    23.       command: df
    24.       mask:    false
    25.       argv:
    26.  
    27. #
    28. #
    29. #
    30. keyword:
    31.          - <RB> <I/> >= 90 </RB>%<A+1/>
    32.  
    33. #
    34. #
    35. #
    36. skipword:
    37.          - /cdrom
    38.          - /floopy
    39.          - /tmp
  • 報告設定ファイル例(メール出力)
    1. #
    2. # Notice File
    3. #
    4.  
    5. ---
    6. type: notice.mail
    7. name: administrator
    8. url: smtp://127.0.0.1:25
    9. to: hogehoge@anys.ne.jp
    10. from: judgement@anys.ne.jp
    11. reply-to: hogehoge@anys.ne.jp
  • スケジュール設定ファイル例
    1. #
    2. # Schedule File
    3. #
    4.  
    5. ---
    6. # 1/日(土)実行
    7. type: schedule
    8. date:
    9.       - ****/**/** 04:00:00 6
    10. jconf:  week
    11. notice:
    12.         - administrator
    13. ---
    14. # 平日実行(10分毎)
    15. type: schedule
    16. date:
    17.       - '****/**/** **:*0:00 1'
    18.       - '****/**/** **:*0:00 2'
    19.       - '****/**/** **:*0:00 3'
    20.       - '****/**/** **:*0:00 4'
    21.       - '****/**/** **:*0:00 5'
    22. jconf:  minute
    23. notice:
    24.         - administrator
    25. ---
    26. # 休日実行(半日毎)
    27. type: schedule
    28. date:
    29.       - '****/**/** 01:05:00 0'
    30.       - '****/**/** 13:05:00 0'
    31.       - '****/**/** 01:05:00 6'
    32.       - '****/**/** 13:05:00 6'
    33. jconf:  minute
    34. notice:
    35.         - administrator
  • メールでの出力例
    1. Judgement Report
    2. +--------------------------------------------------------------------+
    3. maillogログ監視(2007/05/24 10:50:00)
    4. [Command]
    5. addon.DiffCat.exec( '/var/log/maillog' , '/usr/local/judgement/tmp/IndexDB.yaml' )
    6. [Keyword]
    7. fail
    8. [Result]
    9. May 24 10:47:40 localhost popper[31888]: [AUTH] "Fail"ed attempted login to XXXX from host
    10.  (XXX.XXX.XXX.XXX) XXX.XXX.XXX.XXX [pop_pass.c:1265]
    11. May 24 10:47:50 localhost popper[31895]: [AUTH] "Fail"ed attempted login to XXXX from host
    12.  (XXX.XXX.XXX.XXX) XXX.XXX.XXX.XXX [pop_pass.c:1265]
    13.  
    14. +--------------------------------------------------------------------+
    15.  
    16. Judgement 1.1.1 (2007/06/26)

バグ・要望連絡先 bookmark

 ・共有可能なJConfの提供
 ・共有可能なaddonクラスの提供
 ・機能追加の要望
 ・バグの報告
 等ありましたら下記メールアドレスまでご一報お願い致します。

連絡先