ログ監視について

はじめまして。zabbixでログ監視をしたいのですが、トリガーのステータスが不明になっていてうまく監視できません。

ディスク容量などの他の監視は正しく行えています。
ステータスが不明になる原因についてご教授頂けますでしょうか。

状況は下記の通りです。
----------------
■やりたいこと
/var/log/messagesを監視し、「error」という文字列があったらアラートを出す

1)「アイテムの設定」で設定項目を入力し、アイテムを登録。
2)「トリガーの設定」で設定項目を入力し、トリガーを登録。
 ※ステータスが不明になっていてうまく監視できない。

■ZABBIXの設定状況
・ZABBIXのバージョン:zabbix-1.4.6-1

・監視したいログ:/var/log/messages
 -パーミッション:640
 
【アイテム設定】
・タイプ: ZABBIX agent (active)
・キー: log[/var/log/messages]
・データ型: ログ
・更新間隔(秒): 30
・ログ時間の形式: 空白
・アプリケーション: Logfiles

【トリガーの設定】
{ホスト名:log[/var/log/messages].str(error)}=1

他に必要な情報などがございましたら、お知らせください。

よろしくお願いします。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー KAZ の写真

KAOさん

/var/log/messagesのuser:groupはroot:rootですか?
また、zabbixの起動アカウントはzabbix:zabbixですか?

その場合/var/log/messagesのパーミッションは640ではなく644じゃないとzabbixの起動アカウントから参照はできないのでitemのstatusはnot supportedになっていると思います。

itemを確認して頂けますか?

ユーザー KAO の写真

KAZさん

コメントありがとうございます。

>/var/log/messagesのuser:groupはroot:rootですか?
>また、zabbixの起動アカウントはzabbix:zabbixですか?

はい、そうです。

また、itemのstatusを確認したところnot suppotedにはなっておりませんでした。(エラー欄には特に何も出ておりません)

/var/log/messagesのパーミッションを640から644に変更し、アイテムを確認しても同じです。

itemのstatusにエラーはないのですが、トリガーのstatusは不明となっています。

お手数ですが、再度ご教授お願いします。

ユーザー KAZ の写真

KAOさん

[Monitoring]-[Latest data]で/var/log/messagesのhistoryは取れていますでしょうか?

■historyが取れていない場合
item設定の何かが誤っています。

■historyが取れている場合
この場合、不明となった気がします。
監視キーワードがログに一度も出力されて無いか確認して下さい。
※:強制的にecho "キーワード" >> /var/log/messagesでキーワードを出力して反応をもても良いかと。

ユーザー TNK の写真

すでにKAZさんが書かれていますが、/var/log/messagesにキーワードを一度出力してみてください。
loggerコマンドを利用してもsyslogに出力することができます。

 logger test error

と実行して/var/log/messagesに「test error」というメッセージが出力されていること、トリガが障害となるかどうかを確認してみてください。
確認できたならば、

 logger test ok

などと実行してerrorという文字列が含まれないログを出力させると、トリガの状態は正常になると思います。

つまり、トリガの状態は、一度条件の当てはまる状態にしないと、状態としては「不明」の状態として管理されているようです。
きちんと監視できる状態に設定されていて、アクションとして障害になったときにメールを送信するなどの設定をしておけば、登録時の「不明」の状態のままでも障害になった時に検知してアクションを実行することはできます。

ただ、本当に設定がうまくいっているか、一度、わざと検知される条件のログを出力させて動作を確認しておくことをお勧めします。

ユーザー KAO の写真

KAZ様、TNK様

ご返答ありがとうございます。

設定状況で伝え漏れがあったのですが、ZABBIXサーバとエージェントは別のマシンにインストールしており、今回はエージェント側のログ監視を行いたいと思っています。

ログ監視はzabbixサーバとは別のマシンでも可能でしょうか。

messageファイルにerrorというキーワードを出力させてみましたが、状態は変わらずでした。

アイテムの設定に問題があるのでしょうか。
それとも別マシンのログ監視には特別な設定が必要なのでしょうか。

度々の質問で申し訳ありませんが、ご返答よろしくお願いします。

ユーザー KAZ の写真

KAOさん

設定状況で伝え漏れがあったのですが、ZABBIXサーバとエージェントは別のマシンにインストールしており、今回はエージェント側のログ監視を行いたいと思っています。

ログ監視はzabbixエージェントが入っているマシンなら監視が可能です。zabbixサーバはエージェントからの情報をDBにため込んだりする機能です。実際情報を取るのはエージェントです。

ログ監視はzabbixエージェント無しではできません。

messageファイルにerrorというキーワードを出力させてみましたが、状態は変わらずでした。

itemのhistoryは取れていますか?そこ重要なので…
取れていなかったら、item設定の可能性が高いです。

ユーザー KAO の写真

KAZさん

ご返答ありがとうございます。

itemのhistoryは取れておりません。

以下にitemの設定を記入します。
(設定はtemplate_OS_Linuxから引き継いでます。)

名前:Log of /var/log/messages
タイプ:zabbixエージェント(アクティブ)
キー:log[/var/log/messages]
データ型:ログ
更新間隔:30
例外の更新間隔:なし
例外の更新間隔の作成:間隔50 期間1-7,00:00-23:59
ヒストリの保存期間:90
トレンドの保存期間:365
ステータス:有効
ログの時間の形成:なし
アプリケーション:Log files

【監視対象サーバのzabbix_agentd.confの設定】

Server=<zabbixサーバのIP>
ServerPort=10051←コメントアウト
Hostname=<監視対象のサーバ名>
ListenIP=<監視対象のサーバのIP>
※DisableActiveはコメントアウト
他の値はデフォルト値のままです。

よろしくお願い致します。

ユーザー KAZ の写真

KAOさん

Hostname=<監視対象のサーバ名>

となっているそうですが、zabbix webフロントエンドのホスト名と同じでしょうか?

違う場合、log監視は動かないことがあります。

ユーザー TNK の写真

既にKAZさんからも確認の返信がついていますが、

[Monitoring]-[Latest data]で/var/log/messagesのhistoryは取れていますでしょうか?

の部分のご確認をお願いします。

Historyが取れていない場合、再度、確認ポイントを挙げるとしたら、以下のようなポイントが挙げられると思います。

1.エージェント側の設定ファイルでServerが正しく設定されている
2.エージェント側でアクティブチェックが有効になっている
  (設定ファイル内のDisableActiveがコメントアウトされているか0に設定)
3.エージェント側からサーバ側にポート番号10051で接続可能
  (Firewall等で制限していないか?)
4.エージェント側の対象となるログファイルがzabbixアカウントで読み取り可能
5.アイテムの設定でタイプがZABBIXエージェントのアクティブになっている

1と4と5に関しては、既に問題が無いようですので、2と3のあたりに問題があるように思われます。
エージェント側のログに何らかのメッセージがでていませんか?
例えば、ZABBIX Serverに接続できないというようなメッセージです。

ユーザー KAO の写真

TNKさん

ご返答ありがとうございます。

1.エージェント側の設定ファイルでServerが正しく設定されている→正しく設定されています。

2.エージェント側でアクティブチェックが有効になっている
  (設定ファイル内のDisableActiveがコメントアウトされているか0に設定)→DisableActiveがコメントアウトされています。

3.エージェント側からサーバ側にポート番号10051で接続可能
  (Firewall等で制限していないか?)→確認方法などがあったらご教授頂けますか?

4.エージェント側の対象となるログファイルがzabbixアカウントで読み取り可能→パーミッションを777にしています。

5.アイテムの設定でタイプがZABBIXエージェントのアクティブになっている→zabbixエージェント(アクティブ)に設定されています。

エージェント側のエラーログには以下が出ていました。
Getting list of active checks failed. Will retry after 60 seconds

他にはそれらしくエラーメッセージは出ていないようでした。

以上、お手数ですがご返答よろしくお願いします。

ユーザー TNK の写真

3.エージェント側からサーバ側にポート番号10051で接続可能
  (Firewall等で制限していないか?)→確認方法などがあったらご教授頂けますか?

簡単な確認方法は、telnetコマンドを利用して接続できるかを確認します。

例えば、エージェント側のサーバ上で、

 telnet サーバのIPアドレス 10051

を実行します。
接続できない場合は、

 telnet: Unable to connect to remote host: Connection refused

などのエラーメッセージが出力されると思います。
接続できたら、そのままEnterを押すと切断されます。

エージェント側のエラーログには以下が出ていました。
Getting list of active checks failed. Will retry after 60 seconds

これが出ている場合は、サーバからアクティブチェックを行うリストが取得できていません。
つまり、アクティブチェックを利用するログの監視ができません。

上記のtelnetを利用する方法でサーバとのネットワーク的な接続を確認してください。
また、KAZさんからご指摘のあった件(Hostnameの合致)も合わせてご確認下さい。

ユーザー KAO の写真

KAZさん、TNKさん

zabbix_agentd.confのHOSTnameが
Webフロントエンドのホスト名と違っていたので
名前を揃えたところログ監視が正常に行われるようになりました。

ご回答ありがとうございました。

ユーザー KAO の写真

KAZさん、TNKさん

度々の質問で申し訳ありません。

再度、ログの監視について質問なのですが以下のような設定は
可能でしょうか。

◆やりたいこと
/var/log/messagesを監視し、「error」という文字列があったらアラートを出す。ただし「error」があっても、特定の文字列が
入っていたら警告しない。

トリガーの設定でこういったことは可能でしょうか。

よろしくお願いします。

ユーザー TNK の写真

◆やりたいこと
/var/log/messagesを監視し、「error」という文字列があったらアラートを出す。ただし「error」があっても、特定の文字列が
入っていたら警告しない。

トリガーの設定でこういったことは可能でしょうか。

可能です。
条件式に、以下のようなものを指定すれば良いと思います。
<code>
({ホスト名:log[/var/log/messages].str(error)}=1) & ({ホスト名:log[/var/log/messages].str(test)}=0)
</code>
つまり、

 ・ログに「error」という文字列がある
 ・ログに「test」という文字列が無い

という条件のAND条件を指定します。

条件式には色々な条件を書けますので、詳細はマニュアルなどをご参照ください。

ユーザー KAO の写真

TNKさん

ご回答ありがとうございました。
条件式に設定して試してみます。

ユーザー KAO の写真

お世話になっております。

試しに/var/log/messagesにキーワードをloggerコマンドを利用して出力させてみたところ、メールが1分に20通以上延々と送信され続けてしまいます。

アクションの設定は以下のようになっています。

【アクション設定】
・イベントソース:トリガー
・計算のタイプ:AND (A)and(B)
・(A)トリガー = "log error"
(B)トリガーの値 = "障害"

メールは一通でいいのですが、アクションの設定方法に問題があるのでしょうか。

しかも、最新データのトリガーのステータスを見ると
正常で点滅した状態になっていました。
アクションにはステータスが障害となった時に送信すると設定しているのですが・・・

トリガーの設定は以下です。

【トリガーの設定】
{ホスト名:log[/var/log/messages].str(error)}=1

勉強不足で申し訳ありませんが、ご教授よろしくお願いします。

ユーザー TNK の写真

/var/log/messagesにトリガーに合致しないログが出力されたら、トリガーのステータスは「正常」に戻ります。
ですので、/var/log/messagesに出力されている内容をまずはご確認下さい。
「error」が含まれないログが出力されていませんか?

20通以上もメールが送信される原因は、現時点ではわかりません。
もう少し考えてみます。

ユーザー KAZ の写真

KAOさん

できれば、1スレッド1質問でお願いします。m(__)m

試しに/var/log/messagesにキーワードをloggerコマンドを利用して出力させてみたところ、メールが1分に20通以上延々と送信され続けてしまいます。

トリガーの設定で「Event genetation/イベント生成」はどうなっていますか?
「Normal/ノーマル」以外で、「Normal+Multiple TRUE events/ノーマル+障害イベントを継続して生成」になっていると連続してイベントを生成します。