ログファイル名の指定について

お世話になります。

以下のようなログ監視を想定しています。

①aaa@<ホスト名>.log                ⇒監視対象
②aaa@<ホスト名>yyyymmdd.log         ⇒監視対象外
③aaa@<ホスト名>_auth.log            ⇒監視対象
④aaa@<ホスト名>_auth_yyyymmdd.log    ⇒監視対象外

上記ケースにて、log[ ]あるいはlogrt[ ]でファイル名を指定する際にどのように指定すれば、
良いのでしょうか?

同様の運用をされている方、お教え願います。

コメント表示オプション

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

ホスト名に何らかの命名規則はありますか?
あと、どのように日付付きのファイルが生成されるかもお教えください。

----- 追記 -----
頂いている情報の範囲で改めて考えてみたのですが、まず、ログ監
視の設定として、1つのアイテムで監視できるのは1つのファイルの
みです。
なので、監視したいファイルとして挙げられていたログファイルは、
恐らく2つのアイテムで、

 ①aaa@<ホスト名>.log

用と

 ③aaa@<ホスト名>_auth.log

用の2つのアイテムの設定が必要になります。
これらを1つにまとめることはできません。
もちろん、アイテム1つで1つのファイルですから、ホストごとにア
イテムを分けることも必須です。

ということで、ホスト名も固定になりますので、結局のところファ
イルごとにアイテムを作成するだけになると思います。
ログのローテーションにも対応しないのであれば、log[]を使えば
良いと思います。

もしも、ログのローテーションに対応することが必要で、日付の付
いたファイル名がそのローテーションされたログであるとしたなら
ば、logrt[]では対応できません。

Zabbixのlogrt[]を利用したログ監視の機能では、ファイル名の最
後に番号や日付が付加されるようなファイル名に対応しています。

例えば、元のログファイル名が、

 aaa@<ホスト名>.log

だったとすると、

 aaa@<ホスト名>.log.1
 aaa@<ホスト名>.log.2
 aaa@<ホスト名>.log.3

 aaa@<ホスト名>.log-20160401
 aaa@<ホスト名>.log-20160402
 aaa@<ホスト名>.log-20160403

といったパターンです。

対応しているパターンではないので、logrt[]は使えないでしょう。

ただし、ログローテーションが行われているファイルをlog[]で監
視する場合、Zabbixエージェントがログの情報を読み取ったあとに、
何らかのログが出力され、その出力されたログをZabbixエージェン
トが読み込む前にログファイルのローテーションが行われてしまう
と、Zabbixエージェントが以前読み込んだ位置よりも後ろのログは
Zabbixエージェントが取得できないので監視できないこととなりま
す。

ご注意ください。

ユーザー Didier0802 の写真

TNK様

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

>ホスト名に何らかの命名規則はありますか?
⇒「srv-」から始まる文字列です。

>あと、どのように日付付きのファイルが生成されるかもお教えください。
⇒毎週日曜日 or 容量が5MBとなった場合に当該日付を付与します。

>アイテム1つで1つのファイルですから、ホストごとにアイテムを分けることも必須です。
⇒了解しました。
 各サーバ共通のアイテムができればと思っていましたが、地道にアイテムを作成しようと
 思います。

ユーザー TNK の写真

 各サーバ共通のアイテムができればと思っていましたが、地道にアイテムを作成しようと
 思います。

監視対象のホスト上で、各監視対象のホストの名前と同じ名前でフ
ァイル名が決まるのであれば、テンプレートとしてマクロを利用し
てアイテムのキーにホストの名前をパスに含むよう指定することは
できたと思います。

しかし、特定のログ収集用サーバに、複数のサーバー用のログが集
まってきているような環境では、個別にアイテムを作成するしかあ
りません。

というのも、log[]、logrt[]、eventlog[]などのログ監視用のアイ
テムは、Zabbixサーバーや監視対象のホストを再起動した時なども
考慮して、ログファイル内の何行目まで読み込んだかをアイテムの
情報として保存し管理しています。
つまり、ログ監視を再開したときに、ファイルのどこから読み込む
かが保存されているので、続きのログから読み取れるようになって
いるのです。

1つのアイテムで複数のファイルが候補になってしまうと、ファイ
ルを検索してそのファイルからログを取得しようとしたときに、別
のファイルが対象になってしまうと、ファイルごとに読み込み済の
行は異なるでしょうから、本来取得すべき行から読み取ることがで
きなくなってしまうでしょう。

ユーザー Didier0802 の写真

TNK様

何度も回答頂き、恐縮です。

>特定のログ収集用サーバに、複数のサーバー用のログが集
>まってきているような環境では、個別にアイテムを作成するしかあ
>りません。

⇒収集サーバではないので、
 Aサーバでは、「aaa_srv-A.log」「aaa_srv-A-auth.log」
 Bサーバでは、「aaa_srv-B.log」「aaa_srv-B-auth.log」
    :
 というようになります。

>監視対象のホスト上で、各監視対象のホストの名前と同じ名前でフ
>ァイル名が決まるのであれば、テンプレートとしてマクロを利用し
>てアイテムのキーにホストの名前をパスに含むよう指定することは
>できたと思います。

⇒「aaa_{HOST.NAME}.log」
 「aaa_{HOST.NAME}-auth.log」
 のような感じで捉えていますが、間違えてないですかね?

※都合により検証できる環境がないため、くどくどと聞いてしまい
 すみません。。。m(_ _)m

ユーザー TNK の写真

利用されているZabbixの詳細なバージョンをお教えください。

ユーザー Didier0802 の写真

TNK様

お世話お掛けします。

>利用されているZabbixの詳細なバージョンをお教えください。

⇒Server、Agent共に「2.4.6」となります。

ユーザー TNK の写真

⇒「aaa_{HOST.NAME}.log」
 「aaa_{HOST.NAME}-auth.log」
 のような感じで捉えていますが、間違えてないですかね?

実際に2.4系の環境を構築して試してみましたが、log[]の引数とし
て「{HOST.NAME}」のマクロを使用することができました。

ですので、各ホスト上でそのホスト名を含むパスを指定するという
パターンであれば、マクロを利用してテンプレート化できると思い
ます。

最後に、他の方への回答でも書かせて頂いていますが、2.4系は
サポートが終了してしまいましたので、バージョンアップを検討
されることをお勧めします。