CLOVER🍀

That was when it all began.

Consulでsyslog出力設定

Consulで遊んでいるわけですが、ログが標準出力に出ているだけなのでこれはちょっと気になるところです。

起動オプションや設定を見ていると、syslogへの出力が可能みたいなので設定してみました。
※Windowsはどうしたという話はさておき

Configuration

起動オプションと設定ファイルで、微妙に設定できる項目が違いそうですね。

rsyslogのインストール

では、今回はrsyslogを使ってログ出力をすることにしましょう。対象の環境は、Ubuntu Linux 14.04 LTSとします。

インストール。

$ sudo apt-get install rsyslog

デフォルトでインストールされる設定ファイルは、以下の2つとなります。

/etc/rsyslog.conf
/etc/rsyslog.d/50-default.conf

rsyslogの設定

Consulでsyslog出力を有効にした場合、デフォルトではlocal0ファシリティを使用します。

local0の出力先を、「/var/log/consul/consul.log」とするように設定してみましょう。

ログ出力先を作成します。また、ディレクトリのオーナーはsyslogユーザーにしておきます。

$ sudo mkdir /var/log/consul
$ sudo chown -R syslog.syslog /var/log/consul

rsyslogの設定ファイルに、Consul用のログ出力設定を追加します。
/etc/rsyslog.d/consul.conf

local0.*			/var/log/consul/consul.log

また、local0のログが重複して出力されないように、「*.*」の部分からは落としておきます。
/etc/rsyslog.d/50-default.conf

## 変更前
*.*;auth,authpriv.none          -/var/log/syslog

## 変更後
*.*;auth,authpriv.none,local0.none          -/var/log/syslog

ここまでで、準備完了です。

起動オプションでログ出力

では、Consulを起動してみます。

$ ./consul agent -server -bootstrap -syslog -data-dir=data

「-syslog」オプションを付与することで、syslogへのログ出力が行われるようになります。

確認。
/var/log/consul/consul.log

Jan 15 10:04:08 47d9dbb93395 consul[468]: raft: Initial configuration (index=1): [{Suffrage:Voter ID:172.17.0.3:8300 Address:172.17.0.3:8300}]
Jan 15 10:04:08 47d9dbb93395 consul[468]: raft: Node at 172.17.0.3:8300 [Follower] entering Follower state (Leader: "")
Jan 15 10:04:08 47d9dbb93395 consul[468]: serf: EventMemberJoin: 47d9dbb93395 172.17.0.3
Jan 15 10:04:08 47d9dbb93395 consul[468]: serf: EventMemberJoin: 47d9dbb93395.dc1 172.17.0.3
Jan 15 10:04:08 47d9dbb93395 consul[468]: consul: Adding LAN server 47d9dbb93395 (Addr: tcp/172.17.0.3:8300) (DC: dc1)
Jan 15 10:04:08 47d9dbb93395 consul[468]: serf: Failed to re-join any previously known node
Jan 15 10:04:08 47d9dbb93395 consul[468]: consul: Adding WAN server 47d9dbb93395.dc1 (Addr: tcp/172.17.0.3:8300) (DC: dc1)
Jan 15 10:04:14 47d9dbb93395 consul[468]: raft: Heartbeat timeout from "" reached, starting election
Jan 15 10:04:14 47d9dbb93395 consul[468]: raft: Node at 172.17.0.3:8300 [Candidate] entering Candidate state in term 3
Jan 15 10:04:14 47d9dbb93395 consul[468]: raft: Election won. Tally: 1
Jan 15 10:04:14 47d9dbb93395 consul[468]: raft: Node at 172.17.0.3:8300 [Leader] entering Leader state
Jan 15 10:04:14 47d9dbb93395 consul[468]: consul: cluster leadership acquired
Jan 15 10:04:14 47d9dbb93395 consul[468]: consul: New leader elected: 47d9dbb93395
Jan 15 10:04:14 47d9dbb93395 consul[468]: agent: Synced node info

OKそうです。

なお、ログレベルは「-log-level」で変更できるそうな。

設定ファイルでログ出力

今度は、設定ファイルでログ出力を行ってみます。

こんな設定ファイルを用意。
server.json

{
  "bootstrap": true,
  "data_dir": "data",
  "server": true,
  "enable_syslog": true,
  "syslog_facility": "LOCAL0"
}

これで、先ほどの起動オプションとほぼ同等の設定になっています。

$ ./consul agent -config-file=server.json

と、よくよく見ると「syslog_facility」なる設定が増えているのですが、設定ファイルの場合はこちらでsyslogファシリティの設定を
することができます。

省略した場合、「LOCAL0」が指定されます。こちらを他のファシリティに変更することで、syslog送信時のファシリティを変更することが
できます。

こんなところで。