haproxyログメッセージを/ var / log / syslogに残さない方法


29

この記事のヒントを使用して、rsyslogd経由でhaproxyロギングを設定しましたが、すべて正常に動作しているようです。ログファイルはログメッセージを取得します。

ただし、haproxyからのすべてのログメッセージもに表示され/var/log/syslogます。つまり、サーバーが稼働すると、syslogはhaproxyログメッセージで実行されるため、まったく役に立たなくなります。

からそれらのメッセージを除外したいと思います/var/log/syslog。rsyslogdのドキュメントを確認した後、ファイル/etc/rsyslog.d/50-default.confを次のように変更しようとしました。

*.*;auth,authpriv.none;haproxy.none     -/var/log/syslog

;haproxy.noneパーツを追加しただけです。rsyslogdを再起動した後、変更を元に戻すまで完全に機能しなくなりました。

何が間違っていますか?

回答:


26

また、次のようにして、他のログに記録されないようにすることもできます。

local0.*                        -/var/log/haproxy.log
& ~

これ& ~は、上記の行で一致したものを、残りのルールに対して他の場所に置かないことを意味します。


ありがとう。これは、メイン構成を編集するよりも理にかなっているようです。
itsadok

13
これを行う場合、/ etc / rsyslog.d / 50-default.conf の「」行の前にlocal0。*行を処理する必要があることに注意してください。haproxy固有のロギング設定を含む/etc/rsyslog.d/haproxy.confというファイルを作成しましたが、末尾に「&〜」が付いていてもsyslogに記録されました。これは、(もちろん)haproxy.confの前に50-default.confがロードされるため、「local0。*」行の前にキャッチオール「」が一致したためです。解決策は/etc/rsyslog.d/49-haproxy.confに私のhaproxy固有のファイルの名前を変更することでした
ジャイルズトーマス

1
参考までに小さな更新rsyslogd-2307: warning: ~ action is deprecated, consider using the 'stop' statement instead [try http://www.rsyslog.com/e/2307 ]
KCD

これは、rsyslog.com / doc / v8-stable / compatibility / v7compatibility.html& stop代わりの使用について説明しています。& ~
-slm

14

の使用は& ~rsyslogd v7で非推奨になりました& stop。代わりに使用することをお勧めします。詳細については、v7compatibilityページのこのセクションをご覧ください

omrulesetおよびdiscard(〜)アクションは非推奨です

どちらも機能し続けますが、より良い代替物に置き換えられました。

破棄アクション(チルダ文字)は、「停止」RainerScriptディレクティブに置き換えられました。より直感的であると見なされ、わずかに優れたパフォーマンスを提供します。

omrulesetモジュールは、「call」RainerScriptディレクティブに置き換えられました。呼び出しは、サブルーチンのようなルールセットの実行を許可し、omrulesetよりもはるかに高いパフォーマンスで実行します。omrulesetは非同期キューから実行できることに注意してください。これは望ましい効果というよりも副次的なものであり、callステートメントではサポートされていません。その効果が必要な場合は、呼び出されたルールセットのアクションを非同期で実行することで単純にシミュレートできます(いずれにしても、これを処理する正しい方法です)。

非推奨のモジュールは、使用時に警告メッセージを出力することに注意してください。それらは、構成が非推奨であり、どのステートメントが置換として使用されるかを伝えます。これは操作に影響しません。両方のモジュールはまだ完全に操作可能であり、v7の時間枠では削除されません。

そのため、HAProxyの場合は、代わりに次のようになります。

$ more /etc/rsyslog.d/haproxy.conf
local2.*    /var/log/haproxy.log
& stop

動作については、& stoprsyslogdに、これまでに一致したルールに一致した追加のメッセージをすべて破棄するように指示します。このルールが早期に選択されるようにするには、ファイルの名前をから/etc/rsyslog.d/haproxy.confに変更できます/etc/rsyslog.d/00-haproxy.conf


3

わかった。これは私の/etc/rsyslog.d/20-haproxy.conf見た目です:

$ModLoad imudp
$UDPServerRun 514

local0.* -/var/log/haproxy_0.log
local1.* -/var/log/haproxy_1.log

行を次の50-default.confように変更しました。

*.*;auth,authpriv,local0,local1.none     -/var/log/syslog

そして今、それは私がしたいことをしているようです。


一般に、アップグレード/所有権の問題が発生するため、他のパッケージで作成された構成ファイルを変更しないことをお勧めします。これが1回限りのスノーフレークサーバーである場合は問題ありませんが、自動展開の場合、50-default.confの変更は一般に「悪いこと」です。
ブルースエッジ

2

haproxyロギングにはより良いソリューションがあります。

  • HAproxyはchrootで実行されるため、アクセスできません /dev/log
  • 公式マニュアルによると、ネットワークソケットをリッスンするようにrsyslogを構成する必要があります。

    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    

ただし、そのためにはrsyslogソケットのみを使用できます。

rsyslog.d / haproxy.conf:

    # HAproxy local socket
    $AddUnixListenSocket /var/lib/haproxy/dev/log
    :programname, contains, "haproxy" /var/log/haproxy.log
    & stop

haproxy.cfg:

    global
          log         /dev/log daemon
          chroot      /var/lib/haproxy
          .......

1

私はファイルの順序を混乱させたくないので、代わりにlocal0.noneをに追加します。行エントリ。構成は次のようになります。

*.info;mail.none;authpriv.none;cron.none;local2.none     /var/log/messages

local2.*                                                 /var/log/haproxy.log

(CentOS 7でテスト済み)

お役に立てば幸いです!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.