ログ監視¶
Zabbix-Agentを利用して、ログファイルの監視を行う。
前提条件¶
- Zabbix-Agentのインストールを行っていること
- ログファイルおよび監視仕様は以下の仕様であること
- 「/var/log/messages」を監視する
- ログファイルは週次でローテーションされる
- 1分ごとに監視を行う
- 5分間再度キーワードマッチングがなければ復旧と判断する
- 特定のキーワード(エラーコード)の有無を監視する
- 警告のトリガーのみ発生させ、通知メールは別途アクションで送信する
Zabbix-Agentの設定¶
- ログの読み取りに際しroot権限が必要となるため、以下の設定と再読み込みを行う。
# vi /etc/zabbix/zabbix_agentd.conf # AllowRoot=0 ↓ AllowRoot=1 # systemctl restart zabbix-agent
設定¶
正規表現プリセットの設定¶
複数の文字列をマッチングする場合に作成する。
単一の文字列とのマッチングのみでいい場合はスキップする。
- WebUIにログインする
- 「管理」をひらく
- 「一般設定」をひらく
- 右上のプルダウンメニューから「正規表現」を選択する
- 「正規表現の作成」ボタンを押す
- 以下の内容を設定する
- 名前「log-error」
- 条件式の形式「いずれかの文字が含まれる」
- 条件式「error,warn,fail,fatal,ERROR,WARN,FAIL,FATAL」
- 区切り文字「,」
- 大文字小文字を区別「チェックしない」
- 「テスト」リンクをクリックし、「テスト文字列」に入力した文字列が正しくマッチするか確認する。
「テスト条件式」ボタンを押し、未検出時が「偽(false)」、検出時が「真(true)」となるように設定する。 - 「追加」ボタンを押す
アイテムの作成¶
任意のテンプレートまたはホストに新規「アイテム」を作成する。
- 任意のテンプレートまたはホストの「アイテム」ページを表示する。
- 「アイテムの作成」ボタンを押す
- 以下の内容を設定する
- 名前「messagesログ監視」
- タイプ「Zabbixエージェント(アクティブ)」
- キー「log[/var/log/messages,@log-error]」
- 単一の文字列でいい場合「log[/var/log/messages].str(error)」
- データ型「ログ」
- 更新間隔「60s」
- ヒストリ保存期間「90d」
- ログの時間の形式「%b dd hh:mm:ss」
- アプリケーションの作成「log-messages」
- アプリケーション「-なし-」
- 説明「」
- 有効「チェック」
トリガーの作成¶
- 上記アイテムを追加したテンプレートまたはホストの「トリガー」ページを表示する
- 「トリガーの作成」ボタンを押す
- 以下の内容を設定する
- 名前「messagesログ監視 {HOST.NAME}」
- 深刻度「重度の障害」
- 条件式
({テンプレート名:log[/var/log/messages,@log-error].iregexp(@log-error)})<>0 and ({テンプレート名:log[/var/log/messages,@log-error].nodata(300)})=0
- 単一の文字列でいい場合「{テンプレート名:log[/var/log/messages].str(error)}=1」
- 正常イベントの生成「条件式」
- 障害イベントの生成モード「単一」
- 正常時のイベントクローズ「すべての生涯」
- タグ「」
- 手動でのクローズ許可「チェック」
- URL「」
- 説明「」
- 有効「チェック」
- 「追加」ボタンを押す
動作確認¶
- 監視対象のサーバで次のコマンドを発行し、意図的に警告ログを検知させる
logger -p user.warn -t [ZABBIX] "zabbix test \"warn\""
- /var/log/messagesに上記のログが発生したことを確認し、監視のタイミングまで待つ
- 障害を検知すれば成功
- 監視対象のサーバで次のコマンドを発行し、意図的にログレベルのみ警告でマッチしないログを出力する
logger -p user.warn -t [ZABBIX] "zabbix test \"test\""
- /var/log/messagesに上記のログが発生したことを確認し、監視のタイミングまで待つ
- 障害を検知しなければ成功