2013年2月3日日曜日

【Zabbix】特定の文字列を含むログを監視する方法

0. バージョン情報
CentOS 5.9
Zabbix-JP 1.8.15

1. アイテム作成
今回は例ということで/var/log/messagesを監視したいと思います
以下のように情報を入力してアイテムを作成します
  • 説明:/var/log/messagesログ監視(お好きなように設定)
  • タイプ:Zabbixエージェント(アクティブ)
  • キー:log[/var/log/messages,"error"]
  • データ型:ログ
  • 更新間隔:30秒
キーの2つ目の引数にキーワードを設定するとログにキーワードが含まれる行だけを評価するようになります
アイテム追加の際にZabbixエージェントのタイプを「アクティブ」にする必要があります(WebUI上から可能)

またzabbix_agentd.confに以下の設定を追記します
ServerActive=zabbix_server_hostname
RefreshActiveChecks=120
AllowRoot=1
ServerActiveは自分自身がアクティブモードのエージェントだよというのZabbixサーバに伝えるために設定します
zabbix_serverhostnameにはZabbixサーバのIPアドレスかホスト名を入力して下さい
RefreshActiveChecksはちゃんとアクティブになっているかどうかのチェック間隔を調整します
AllowRootはrootユーザでzabbixエージェントを起動するための設定でrootユーザで起動しておけば監視対象となるどのログファイルにもアクセスできるようになります
上記設定後、zabbix_agentdを再起動し /var/log/zabbix/zabbix_agentd.log に started [active checks] 出ていればOK

2. トリガーの設定
ログ監視用のアイテムを作成するとアイテム一覧のウィザードからトリガーを作成するウィザードを開くことができます
開いたら以下のように情報を入力してトリガーを作成します
  • 名前:/var/log/messagesログ監視(お好きなように設定)
  • アイテム:作成した「/var/log/messagesログ監視」アイテムを選択
  • 条件式:((({yoshi3:log[/var/log/messages,"error"].iregexp(error)})=1)&(({yoshi3:log[/var/log/messages,"error"].nodata(30)})=0))
  • 深刻度:警告(お好きなように設定)
条件式の概要としては
「errorが含まれていてかつ30秒間の間で1つでも該当のデータを受信した」となります

iregexp内では正規表現が使用できるのですが、そのまま正規表現を記載しても有効になりません
ただ文字列を入れば場合には完全一致になるようです(不確か)
正規表現を使いたい場合には
管理→一般設定→正規表現(右上のプルダウンから)→正規表現の作成
から正規表現自体を作成しないと使えません
作成した正規表現は@hogehogeという形で使用できるので「.iregexp(@hogehoge)」とすることで初めて正規表現が使用できます

またトリガーを作成したあとはにイベント生成を「ノーマル」にしておきましょう

3. トリガーの動作確認
logger error

を実行しトリガーが検知するか確認します
監視データのトリガー画面に障害として表示されます
監視データのイベントにも履歴が表示されます
ただ、今回の設定の場合だと.nodate(30)で30秒の間のログでerrorが表示されなかったらすぐに正常に戻ってしまうので
600とかの値にするといいかもしれません
そこは監視したい間隔を調整してもらえればと思います

また、アクティブモードのエージェント場合にはZabbixサーバに対して10051の通信ができないと行けないのでACLの設定も見なおしてください
Zabbixは基本的には
server -> 10050/tcp -> agent
のACLがあれば監視はできるのですが、アクティブモードの場合には上記に追加で
agent -> 10051/tcp -> server
のACLも必要となります

あとは必要に応じてアクションを設定してください

参考サイト

0 件のコメント:

コメントを投稿