ログ監視

お世話になります。

zabbixを使用して条件にあった内容のログが出力されたら
zabbixサーバから自端末へメールを飛ばそうとしていますが、
ホストに設定している「アイテム」画面で
ステータス:「取得不可」
情報:「Cannot open file "/var/log/ldap.log": [13] Permission denied」
が表示されています。

過去のフォーラム記事を参照し、「zabbix-agent.conf」やログファイルのパーミッション「644」
は、確認しているのですが解消にいたりまません。

どこか設定その他見直す(設定すべき箇所)ご教示いただけますでしょうか。
・アイテム

名前: ldaplog
キー:log[/var/log/ldap.log,@ldap]
更新間隔:30
ヒストリ :90
トレンド:
タイプ:Zabbixエージェント(アクティブ)

・トリガー

条件式:{test:log[/var/log/ldap.log,@ldap].iregexp(@ldap)}=1
    ※「@ldap」→ 正規表現内容「1 ≫ err=\d{1,3} [結果が真]」
    エラーidを使用して抽出しようと思っています。
    
Zabbixサーバ:2.4.4

Zabbixエージェント:2.4.7

監視したいサーバのOS:CentOS5系、6系

記載の情報に不足がありましたら
お手数ですがご指摘くださいますようお願いいたします。

コメント表示オプション

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

644 でダメなら、SELinux がらみですかね・・・。

ユーザー nora の写真

heyaさん

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

「SELinux」の設定について記事をみつけたので、
下記コマンドを実行してみました。(コマンドと結果は下記のとおりです。)

# sestatus
SELinux status: disabled

エージェント機で実行したものです。
(サーバ側で確認した方がよかったでしょうか。)

ご確認お願いいたします。

ユーザー misaki の写真

zabbixエージェントが読めない権限レベルのログファイルであれば、
エージェントにroot権限を与える以下設定が必要だと思いますが、
設定はどうでしょう?

<zabbix_agentd.conf>
 AllowRoot=1

ユーザー TNK の写真

ログを監視するだけの要件で、安易にAllowRootを有効にすること
は、セキュリティレベルが低下するので強くお勧めしません。

ユーザー misaki の写真

noraさん、TNKさん

安易なコメント失礼しました。。。

ユーザー TNK の写真

横道にそれてしまうかもしれませんが、AllowRootを有効にしてroot
権限でエージェントを起動するということは解決策の1つとなる場
合が多いものの、それを利用することによる問題や課題も十分理解
して頂いた上で利用すべきだと考えています。

某所でもAllowRootを有効にすることを当たり前のように書いてい
る方がいらしたのですが、有効にするなら有効にすることで、どの
ような注意点が発生するかもきちんと伝えて欲しいのです。

某所には、ログを監視するならAllowRootを有効にするのではなく、
このように設定した方が、セキュリティ上問題が発生しにくいとい
う記事を公開しようと準備中です。

ユーザー heya の写真

この場合 SELinux 関連の確認はエージェント側だけでいいはずです。
SELinux でないとすると、644 と思っていたのが実は見間違いだったとか、あとは上のディレクトリの権限ですかね。念のため /var/log/ldap.log の権限を再確認してみてください。
それから、 /var と /var/log は、755 になっていますか?(r と x (特に x )の権限があるか?)

一回 su - zabbix で zabbix ユーザーになってみて cat /var/log/ldap.log できるかどうか試してみるのもいいと思います。

ユーザー nora の写真

皆様

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

まず、「Zabbix_agentd.conf」の「Allow Root=1」の設定は、
セキュリティの観点から、ただ設定をすれば良いといったことはよろしくないと
意見いただいておりますが、今回私の担当しているホストでは
設定「済み」です。

権限についてですが、
これってコマンド間違えていますでしょうか。(すみません...)

sudo -u zabbix cat /var/log/ldap.log

上記では、catできました。

引き続き、ご対応のほどよろしくお願いいたします。

ユーザー TNK の写真

AllowRootを有効にしているのであれば、Zabbixエージェントは
rootユーザーで起動されているはずです。
つまり、rootユーザーの権限でファイルを参照しようとしているは
ずです。

それで「Permission denied」になるということは、SELinuxの影響
を受けている可能性が高いものの、先日頂いた情報からして、すで
にdisabledにされているようなので、これが原因でもないでしょう。

そうすると、以前、「Permission denied」の状態になったのがそ
のまま残っているだけで、現時点での状態が変化しているのかもし
れません。

一応、/var/log/ldap.log のls -lの出力結果と、可能であれば、
DebugLevelをあげた状態でZabbixエージェントを再起動して、
エラーメッセージが出力されていないかを再度ご確認ください。
最低限、Zabbixエージェントの再起動は行ってみてください。

最後に、AllowRootを有効にするのは、しかもSELinuxを無効にされ
ているのであれば特に、Zabbixエージェントを経由してシステムの
変更を受けてしまう可能性があるのでお勧めしません。

ユーザー nora の写真

TNKさん

ありがとうございます。
確認いたします。

念のためお聞きしたいのですが、
通信設定(iptablesやFW)で、今回のログ監視を意識して
設定すべきことはございますでしょうか。
現在は、下記のとおりです

サーバFW:エージェント機のネットワークアドレス:10051
↑エージェント機が複数台あるため、上記設定を適用

エージェント側:サーバ機のIPアドレス:10050,サーバ機2IPアドレス10050

ご対応お願いいたします。

ユーザー TNK の写真

サーバFW:エージェント機のネットワークアドレス:10051
↑エージェント機が複数台あるため、上記設定を適用

各エージェントごとに設定を行われているのですね?

そうであるならば、Zabbixエージェント側からポート番号10051で
接続できるようになっていればOKです。

ログ監視は、この接続を利用して、Zabbixエージェント側からサー
バーに接続して、アクティブにチェックする項目があるかを問合せ
て、その結果をもとに、アイテムに指定されていた更新間隔で処理
を行うようになります。

Zabbixサーバー側からは、Zabbixエージェントに対してポート番号
10050で接続して値を取得しますが、こちらは、アイテムのタイプ
が「Zabbixエージェント」のものですので、ログ監視とは直接関係
ありません。

あと注意しなければならないのは、zabbix_agentd.conf内に設定す
る「ServerActive」の値です。

複数台のZabbixサーバーから監視していて、それぞれのZabbixサー
バーからログ監視などのタイプが「Zabbixエージェント(アクティ
ブ)」のアイテムを監視するのであれば、Serverと同様にServerActive
にもカンマ区切りで複数台のZabbixサーバーを記述しておく必要が
あることにご注意ください。

ユーザー nora の写真

皆様

いつもお世話になっております。

「/var/log」・「/var/log/ldap.log」についてです。

# ls -l /var/

drwxr-xr-x 16 root root 4096 4月 25 15:59 log

# ls -l /var/log/messages

-rw-r--r-- 1 root root 213596 4月 25 15:59 /var/log/ldap.log

ご確認お願いいたします。

※サービス再起動も実施いたしました。

# service zabbix-agent restart
Shutting down Zabbix agent: [ OK ]
Starting Zabbix agent: [ OK ]

変わりありません...。

ユーザー TNK の写真

ServerActiveの設定は確認されましたか?

ユーザー nora の写真

TNKさん

失礼いたしました。

「Zabbix_agentd.conf」内の設定を確認いたしました。
設定内容は下記のとおりです。

「ServerActive=111.222.333.444:10050,444.333.222.111:10050」
となっています。

引き続き、ご対応のほどよろしくお願いいたします。

ユーザー TNK の写真

なぜポート番号が10050なのですか?
デフォルトなら10051で、先ほどのFirewallの設定でも10051を許可
されていたはずです。

デフォルトのポート番号(10051)を利用されているのであれば、
ServerActiveではポート番号を指定する必要はありません。
デフォルトから変更されているのであれば、Firewallの設定と
合わせて設定を行うようにしてください。

ユーザー nora の写真

TNKさん

ありがとうございます。

設定を再度確認いたしまして
「ServerActive=111.222.333.444,444.333.222.111」

へと、変更いたしました。

エージェントの再起動も実施済みです。

# service zabbix-agent restart
Shutting down Zabbix agent: [ OK ]
Starting Zabbix agent: [ OK ]

変化ないです...。

ユーザー kaeru の写真

>>nora様
まったく見当違いかもしれませんが、
私も似たような状況になりフォーラムでkaz様に回答を頂いたことがあります。
http://www.zabbix.jp/node/3303

ステータスが取得不可になっているアイテムを修正しても、
値を拾うまではステータスの変更がかからないようです。

上記心当たりがありましたら、
アイテムキーlog[/var/log/ldap.log,@ldap]で取得するべきログ書き込んでみるか、
アイテムそのものを再設定し、ステータスが更新されるか確認してください。
 ※すでにお試しになっている場合は無視してください。

ユーザー nora の写真

kaeruさん

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

いただいた内容確認してみます。

ユーザー nora の写真

皆様

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

お陰さまで
本件、アイテムを再作成してみたところ
「アイテム」・「トリガー」のステータスが「有効」となりました。

もう1点ご教示いただきたいのですが、
この作成時に「取得不可」であったとき「調査」+「対処」を
してからはステータスが「有効」とならず
「アイテム」の再作成が「必須」となる仕様と認識しておいたほうが
よいのでしょうか。

今回のような「再作成」は、ケースとして稀であり
通常は、エージェント等の再起動など実施することで
有効となるものなのでしょうか。

ユーザー TNK の写真

アイテムの再作成は必須ではありません。
通常であれば、再度取得にリトライする間隔はアイテムの更新間隔
よりも長いものの、取得できるようになれば自動的に回復し、監視
が再開されます。

ただし、正規表現でログをフィルタリングしている場合は、kaeru
さんが書かれていたように、条件に合致しないとZabbixサーバー側
に値が来ないので状態が変化しなかったということも考えられます。

あと、利用されているZabbixサーバーのバージョンが2.4.4と古い
のも影響がある可能性があります。

基本的には、2.2系なら2.2系の最新、3.0系なら3.0系の最新を利用
されることをお勧めします。

ユーザー nora の写真

TNK さん

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

ユーザー nora の写真

あと、すみません、ご教示いただける方がいらっしゃいましたら
もう1点ご教示お願いいたします。

「/var/log/ldap.log」等のログファイルをログローテートの設定がある場合、
パーミッション「644」の設定は、「ldap.log.a」といったファイルにも
必要になりますでしょうか。

初歩的な質問かも知れませんが、ご対応いただけると助かります。

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

ユーザー kaeru の写真

>>nora様
644はAllowRootを設定せず、
ZabbixAgentの起動アカウントをzabbix:zabbixにしているケースで必要な権限であり、
今回は「AllowRoot=1」を設定しrootで起動しているため考慮する必要はありません。

また、ご記載頂いたアイテムキーを見ますと、
logキーを使用して単一のログ(ldap.log)を指定しており、
ローテされた過去ログは監視対象含まれないため、
AllowRootを設定していない場合でも考慮不要かと思います。

ユーザー nora の写真

Kaeruさん 

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

またご丁寧にありがとうございます。

>皆様

今後ともよろしくお願いいたします。