はじめに
HA Proxy のログは syslog を経由して下記のように一つの haproxy.log ファイルに出力していますが…
frontend セクションを複数設定している場合には frontend 毎にログを異なるファイルに分けれれば色々と嬉しいような気がしたので試してみようと思い fluentd を使って出し分け出来たのは前回。今回は rsyslog でサクッと試してみます。
やること
frontend の設定
以下のような感じで frontend 毎に rsyslog のファシリティを変えておきます。
frontend の一つ目
log-format %{+Q}o %{-Q}ci - - [%T] %r %ST %B "" "" %cp %ms %ft %b %s log 127.0.0.1 local1
frontend の二つ目
log-format %{+Q}o %{-Q}ci - - [%T] %r %ST %B "" "" %cp %ms %ft %b %s log 127.0.0.1 local2
設定したら haproxy を再起動しておきます。
rsyslog の設定
以下のように設定しておきます。
$ModLoad imudp $UDPServerRun 514 $template Haproxy,"%msg%n" local0.=info -/var/log/haproxy/haproxy.log;Haproxy local1.=info -/var/log/haproxy/haproxy-frontend1.log;Haproxy local2.=info -/var/log/haproxy/haproxy-frontend2.log;Haproxy ## don't log anywhere else local0.* ~
設定したら rsyslog を再起動しておきます。
ログはどうなってるん?
ログ、見てみます。
# cat haproxy-frontend1.log xxx.xxx.xxx.xxx - - [28/Jul/2014:15:44:18 +0000] "GET /check HTTP/1.1" 200 293 "" "" 51149 048 "cluster1" "backend" "web1" xxx.xxx.xxx.xxx - - [28/Jul/2014:15:44:20 +0000] "GET /check HTTP/1.1" 200 293 "" "" 51151 597 "cluster1" "backend" "web1"
もう一個。
# cat haproxy-frontend2.log xxx.xxx.xxx.xxx - - [28/Jul/2014:15:44:50 +0000] "GET /check HTTP/1.1" 200 293 "" "" 51155 275 "cluster2" "application-backend" "web1" xxx.xxx.xxx.xxx - - [28/Jul/2014:15:44:50 +0000] "GET /check HTTP/1.1" 200 293 "" "" 51155 739 "cluster2" "application-backend" "web1"
ちゃんと frontend 毎に出力分けが出来ています。
rsyslog でも
意外と簡単に出来ましたが…local0 から local7 を使いきったらどうするんだっけって気になります。
元記事はこちらです。