[ English | Deutsch | 日本語 | Indonesia ]

rsyslog

多くのオペレーティングシステムは、rsyslog をデフォルトのロギングサービスとして利用します。rsyslog は、リモートにログを送信する機能を持っているので、何かを追加でインストールする必要がなく、設定ファイルを変更するだけです。リモート転送を実施する際は、盗聴を防ぐためにログが自身の管理ネットワーク上を通る、もしくは暗号化VPNを利用することを考慮する必要があります。

rsyslog クライアント設定

まず始めに、全ての OpenStack コンポーネントのログを標準ログに加えて syslog のログファイルに出力するように設定します。また、各コンポーネントが異なる syslog ファシリティーになるように設定します。これによりログサーバー上で、個々のコンポーネントのログを分離しやすくなります。

nova.conf:

use_syslog=True
syslog_log_facility=LOG_LOCAL0

glance-api.confglance-registry.conf:

use_syslog=True
syslog_log_facility=LOG_LOCAL1

cinder.conf:

use_syslog=True
syslog_log_facility=LOG_LOCAL2

keystone.conf:

use_syslog=True
syslog_log_facility=LOG_LOCAL3

デフォルトで Object Storage は syslog にログを出力します。

次に、 /etc/rsyslog.d/client.conf を作成して、以下の行を書き込みます。

*.* @192.168.1.10

これは、rsyslogに全てのログを指定したIPアドレスに送るように命令しています。この例では、IPアドレスはクラウドコントローラーを指しています。

rsyslog サーバー設定

集中ログサーバーとして使用するサーバーを決めます。ログ専用のサーバーを利用するのが最も良いです。 /etc/rsyslog.d/server.conf を次のように作成します。

# Enable UDP
$ModLoad imudp
# Listen on 192.168.1.10 only
$UDPServerAddress 192.168.1.10
# Port 514
$UDPServerRun 514

# Create logging templates for nova
$template NovaFile,"/var/log/rsyslog/%HOSTNAME%/nova.log"
$template NovaAll,"/var/log/rsyslog/nova.log"

# Log everything else to syslog.log
$template DynFile,"/var/log/rsyslog/%HOSTNAME%/syslog.log"
*.* ?DynFile

# Log various openstack components to their own individual file
local0.* ?NovaFile
local0.* ?NovaAll
& ~

これはnovaサービスのみを扱っています。はじめに rsyslog を UDP 514番ポートで動作するサーバーとして設定します。次に一連のログテンプレートを作成します。ログテンプレートは受け取ったログをどこに保管するかを指定します。最後の例を用いると、c01.example.comから送られるnovaのログは次の場所に保管されます。

  • /var/log/rsyslog/c01.example.com/nova.log

  • /var/log/rsyslog/nova.log

c02.example.comから送られたログはこちらに保管されます。

  • /var/log/rsyslog/c02.example.com/nova.log

  • /var/log/rsyslog/nova.log

この設定により、全ノードからの nova のログを含む集約されたログだけでなく、個々のコンピュートノードのログも持つことになります。