logrtにおいて特定操作にてログの再読み込みが発生
いつもお世話になっております。
タイトルの件について認識違いが無いかご教授頂きたく宜しくお願い致します。
Ver:Zabbix 3.0.13
OS:CentOS 7.1
【前提】
既存アイテムとして以下のアイテムキーを設定しております。
アイテムキー:logrt[/root/^error.log,ERROR]
実際のディレクトリの内容は以下の通りerror.log1つのみ格納されております。
# pwd
/root
# ls
error.log
# cat error.log
ERROR 1
ERROR 2
・・・・
【特定操作】
前提で記載したアイテムキーをテストするため、
以下のコマンドで新規ファイル作成/ログ書き込みを行い、
値を取得出来るか確認を行いました。
#echo "ERROR TEST" >> error.log.TEST
値が取得出来たことを確認したためerror.log.TESTを削除し、
テストを終了しました。
【再読み込み】
この後、error.logに対して書き込みを行うと
error.logが先頭行から再読み込みされる事象が発生致します。
※再読み込み後は通常通り動作する。
抜本的にテスト時にはerror.logには触れておらず、iノード番号がズレたり、
ログファイルサイズが小さくなるような操作は行っておりません。
→少し古いですがZabbix2.2マニュアルの仕様を確認しております
https://www.zabbix.com/documentation/2.2/jp/manual/config/items/itemtype...
これはどういったロジックでerror.logの再読み込みが走ったかご教授頂けると幸いです。
仕様見落とし等ございましたらご指摘をお願い致します。
TNK - 投稿数: 4769
iノードの情報は、現時点で対象となっているログファイルしか保
存していなかったはずです。
よって「error.log.TEST」にログが出力された時に、監視をしてい
る対象のログファイルのiノードの値は、「error.log.TEST」を指
すことになります。
その後、「error.log.TEST」を削除してしまうと、アイテムが、
logrt[/root/^error.log,ERROR]
ですので、logrt[]の引数から/rootディレクトリ内のerror.logで
始まるファイルのリストを作成して、それらのファイルを監視し始
めます。
その後、「error.log」にログが追記されると、監視対象のファイ
ルリストを作成した時に、「error.log」がより新しい監視対象と
なるログファイルであると判断されます。
そこで、実際にファイルの内容を確認しようとするわけですが、
「error.log.TEST」とiノードの値は異なるので、以前保存して置
いたログを読み込んだ最終読み込みの位置は「error.log.TEST」用
のものですから、その値は破棄されます。
また、「error.log.TEST」を監視し始めた時点で、その前に読み込
んでいたログファイルが「error.log」であったという情報はどこ
にもありませんので、「error.log」が新規に作成された新しいロ
グファイルであると判断され、「error.log」の最初から読み込ま
れたのだと思います。
3.0.13とのことですので、ログのローテーション方法としては、古
いログファイルのファイル名を変更し、新しいログファイルを作成
して、その後はログを新しいログファイルに出力するように切り替
えるようなローテーションのみにしか対応していません。
ログのローテーション方法に注意するようにしてください。
TNK - 投稿数: 4769
おまけ:
Zabbix 4.0では、copytruncate(古いログファイルを別のファイル
にコピーして、元のログファイルを空に切り詰める)モードに対応
できるオプションが追加されるようです。
このようなローテーションを行われている方は、logrt[]は使用せ
ずに、Zabbix 4.0の正式リリースまで待たれた方がよいと思います。
https://www.zabbix.com/documentation/4.0/manual/introduction/whatsnew400...
kaeru - 投稿数: 264
>>TNK様
ご回答ありがとうございます
>iノードの情報は、現時点で対象となっているログファイルしか保
>存していなかったはずです。
マニュアルより、
対象ファイル全ての情報を保持していると解釈してしまいましたが、
ここが違ったのですね。
テスト時はテスト用ファイルを作成せず、
既存ログに書き込む方法が安全だと理解しました。
>Zabbix 4.0では、copytruncate(古いログファイルを別のファイル
>にコピーして、元のログファイルを空に切り詰める)モードに対応
>できるオプションが追加されるようです。
conferenceで4.0の話が出たとき、遠い未来のことにように感じたのですが
もうリリース前なんですね…。
リリース後に触ってみたいと思います。