別のログの内容を収集してしまう原因について
いつもお世話になっております。
掲題の件について質問させてください。
使用環境
Zabbix server:3.0.7
OS:CentOS 7.3
Zabbix agent:3.0.7
OS:CentOS 7.3
以下の2つのログを収集アイテムをそれぞれ1つずつ作成しました。
※格納されているディレクトリは同じです。
対象ログ1
/xx/xx/access.log
対象ログ2
/xx/xx/xxxx.xxxx.xxxx_access.log
アイテム1
logrt["/xx/xx/(access.log|access.log-[0-9]{8})"]
アイテム2
logrt["/xx/xx/(xxxx.xxxx.xxxx_access.log|xxxx.xxxx.xxxx_access.log-[0-9]{8})"]
現象
対象ログ1にログが出力されると、アイテム1のみで収集する(正しい動作)。
対象ログ2にログが出力されると、アイテム1とアイテム2の両方で収集されてしまう。
対象ログ1にログが出力されアイテム1で収集後に対象ログ2が出力されると、アイテム1では対象ログ1の差分と対象ログ2を頭から収集する。
両ログ名に「access.log」が含まれてはいますが、指定しているファイル名は異なります。
なお、アイテム1を「logrt[/var/uk/^access\.log.*]」とすることで現象を回避できています。
必要な情報があれば追加します。
上記現象が発生する原因をご教示いただけないでしょうか。
TNK - 投稿数: 4769
logrt[]を使用しているのであれば、引数のログファイルのファイ
ルパスの最後のファイル名の部分は正規表現での指定になります。
すでに回避策で確認されている通り、「access」で始まるファイル
名のログファイルに絞るためには、明示的に頭に「^」を付ける必
要があります。
指定しないとaccessで始まらなくても、access.logが含まれていた
ら条件に合致してしまうので、対象ログ2も読み込まれてしまうで
しょう。
そして、読み込むログファイルが
「access.log」
から
「xxxx.xxxx.xxxx_access.log」
に切り替わった段階で、「xxxx.xxxx.xxxx_access.log」が新しい
ログファイルだと判断されるので、「xxxx.xxxx.xxxx_access.log」
の最初から読み込まれたのだと思います。
dondoc - 投稿数: 86
TNK様
回答ありがとうございます。
仕様を勘違いしておりました。
初歩的なミスでした。。。
該当ログ以外にも設定に不備がないか確認し、
明示的に「^」を使用して、ファイル名を指定します。
ご対応いただきありがとうございました。