web-dev-qa-db-ja.com

haproxyログメッセージを/ var / log / syslogから除外する方法

この記事 のヒントを使用して、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.nonepartを追加しただけです。 rsyslogdを再起動すると、変更を元に戻すまで完全に機能しなくなりました。

何が悪いのですか?

30
itsadok

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

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

& ~は、上記の行で一致したものを残りのルールに配置しないことを意味します。

28
Kyle Brandt

& ~の使用はrsyslogdのv7で廃止されました。代わりに& stopを使用することをお勧めします。詳細は v7互換性ページ のこのセクションを参照してください。

omrulesetおよびdiscard(〜)アクションは廃止予定

どちらも引き続き機能しますが、より優れた代替手段に置き換えられています。

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

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

非推奨のモジュールを使用すると、警告メッセージが表示されることに注意してください。それらは、構成が非推奨であり、どのステートメントが置換として使用されるかを伝えます。これは操作には影響しません。両方のモジュールは引き続き完全に機能しており、v7のタイムフレームでは削除されません。

したがって、HAProxyの場合は、次のようになります。

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

それがどのように機能するかについては、& stopはrsyslogdに、この時点までに以前に一致したルールに一致した追加のメッセージを破棄するように指示します。このルールが早期に適用されることを保証するために、ファイルの名前を/etc/rsyslog.d/haproxy.confから/etc/rsyslog.d/00-haproxy.confに変更できます。

14
slm

わかりました。これは、私の/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

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

3
itsadok

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
          .......
2
user320813

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

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

local2.*                                                 /var/log/haproxy.log

(CentOS 7でテスト済み)

お役に立てば幸いです。

1
mgna20