大量のログ処理時における監視データの欠損発生について
zabbixserver
Zabbix:2.4.3
OS : linux CentOS 6.2
CPU:2.0GHz
RAM:3.4GB
DISK:10GB
DB(master)
OS : linux CentOS 6.2
CPU:1.0GHz
RAM:1.7GB
DISK:10GB+200GB
myswlデータサイズ:約 90 GB
DB(slave)
OS : linux CentOS 6.2
CPU:1.0GHz
RAM:1.7GB
DISK:10GB+200GB
myswlデータサイズ:約 90 GB
ログ監視にて、監視対象の文字列を含むログが大量(150万件)に発生。
最新データにて確認したところ、対象ログの処理遅延が発生していることを確認。
(タイムスタンプの時刻と、ログの出力時間が 2 時間程乖離していた。)
上記の状態にて、監視データの欠損が発生。
主にリソースのデータが不定期に欠損していた。
本事象の対応策として zabbix-server のプロセスを再起動。
データの欠損が生じなくなり、ログの処理速度が向上しておよそ 20 分後に
ログの処理遅延が解消されました。
本事象について、ご存知の方がいらっしゃいましたらご教示願います。
TNK - 投稿数: 4753
ZabbixサーバとMySQLサーバのチューニングはどの程度されていま
すか?
デフォルトの設定では、大量のログが発生した場合、ログデータの
収集に大きなタイムラグが発生する場合があります。
また、それらのログの処理などの処理にCPU負荷が高まってしまう
と、値を取得する際にデフォルトのタイムアウト時間を超えてしま
って、各アイテムの値が取得できなくなる場合があります。
他の各アイテムの値がタイムアウトで取得できなかったのであれば、
Zabbixサーバ側、Zabbixエージェント側ともにTimeoutの設定を伸
ばすことで改善できる場合があります。
Zabbixを利用されているのであれば、それぞれのサーバの負荷状況
を確認してみてください。
ただし、150万件というレベルですと、チューニングを行ってもあ
まり改善できないかもしれません。
アイテムでのデータ収集時に、パターンを指定して監視するログを
絞り込んだ方が良いでしょう。
ログの分析を行われたいのであれば、Zabbixではなく、別途、ログ
分析用の仕組みを用意された方が良いと思います。
ご参考:Zabbixで10,000台のサーバーを監視する
http://kodai74.blogspot.jp/2013/11/zabbix10000.html
ご参考:ログ監視で大量のログが出るとヒストリの追加が遅くなる
http://www.zabbix.jp/node/2966
KAZ - 投稿数: 1085
ひろしさん
ログ監視ですが、キーワードで絞込等行われてますか?
短期間に大量のログを取り込むと、Zabbixパフォーマンス劣化して固まるかもしれません。
Zabbixですが、
取得したデータは時系列等整合性守るためにDB登録時に
キャッシュのロックが行われます。
その為、DBに登録するプロセス以外にデータを受け取るプロセスとか
キャッシュロックされているので排他待ちが起きます。
データが受け取れないとデータの欠損が起きます。
TNKさんが言われているようにMySQLへの書き込み速度が上がると改善しますし、
取り込むログの絞り込みが一番の対応になるかと思います。
ひろし - 投稿数: 11
TNKさん KAZさん
返信が遅くなり申し訳ありません。
お二人の意見を参考に以下の中から対策を実施しようと思います。
1.Zabbixサーバ側、Zabbixエージェント側ともにTimeoutの設定を伸ばす。
2.監視文字列の絞込み。
(既にキーワードで絞込みを実施しているが、更に絞込み可能か検討)
3.zabbix 側の設定で監視対象の大量のログが発生した場合、データを読み込みを中止させる。
(zabbix の標準機能では不可能だと思われるので api での実施となる?)
4.ログを出力しているミドル側の設定で大量のログが発生しないように制御を行う。
5.zabbix サーバのスケールアップ
ご回答ありがとうございました。
KAZ - 投稿数: 1085
ひろしんさん
下記設定ファイルの値がログ監視に関係する項目なはずです。
■zabbix_agentd.conf
BufferSend
BufferSize
MaxLinesPerSecond