6.2. syslog プロトコルを使用したログの転送
syslog プロトコルを使用して、デフォルトの Elasticsearch ログストアではなく外部の syslog サーバーにログのコピーを送信できます。この syslog プロトコルについては、以下の点に注意してください。
- RFC 5424 ではなく、syslog プロトコル (RFC 3164) を使用する
- TLS に対応していないため、安全ではない
- Kubernetes メタデータ、systemd データその他のメタデータを提供しない
ログ転送のこの方法は OpenShift Container Platform では非推奨となり、今後のリリースではログ転送 API に置き換えられます。
syslog プロトコルには、以下の 2 つのバージョンがあります。
- out_syslog: UDP で通信するバッファーなしの実装は、データをバッファーせずに結果を即時に書き込みます。
- out_syslog_buffered: TCP で通信するバッファーの実装は、データをいくつかのチャンクにバッファーリングします。
syslog プロトコルを使用してログ転送を設定するには、ログを転送するために必要な情報を使って syslog.conf
という設定ファイルを作成します。次に、そのファイルを使用して OpenShift Container Platform がログの転送時に使用する openshift-logging
namespace の syslog
という ConfigMap を作成します。syslog サーバーを OpenShift Container Platform からログを受信するように設定する必要があります。
OpenShift Container Platform 4.3 以降では、syslog プロトコルを使用するプロセスは変更されています。以下で説明されているように ConfigMap を作成する必要があります。
設定ファイルに別個の <store>
スタンザを指定して、ログを複数の syslog サーバーに転送できます。
サンプル syslog.conf
<store> @type syslog_buffered 1 remote_syslog rsyslogserver.openshift-logging.svc.cluster.local 2 port 514 3 hostname ${hostname} 4 remove_tag_prefix tag 5 tag_key ident,systemd.u.SYSLOG_IDENTIFIER 6 facility local0 7 severity info 8 use_record true 9 payload_key message 10 </store>
- 1
- syslog プロトコル (
syslog
またはsyslog_buffered
のいずれか)。 - 2
- syslog サーバーの完全修飾ドメイン名 (FQDN) または IP アドレス。
- 3
- 接続先のポート番号。デフォルトは
514
です。 - 4
- syslog サーバーの名前。
- 5
- タグから接頭辞を削除します。デフォルトは
''
(空) です。 - 6
- syslog キーを設定するためのフィールド。
- 7
- syslog ログファシリティーまたはソース。
- 8
- syslog ログの重大度。
- 9
- レコードの重大度とファシリティーを使用するかどうかを決定する (ある場合)。
- 10
- オプション。syslog メッセージのペイロードを設定するためのキー。デフォルトは
message
に設定されます。注記payload_key
パラメーターを設定すると、他のパラメーターが syslog に転送されなくなります。
サンプル syslog.conf
をベースとするサンプル syslog
ConfigMap
kind: ConfigMap apiVersion: v1 metadata: name: syslog namespace: openshift-logging data: syslog.conf: | <store> @type syslog_buffered remote_syslog syslogserver.openshift-logging.svc.cluster.local port 514 hostname ${hostname} remove_tag_prefix tag tag_key ident,systemd.u.SYSLOG_IDENTIFIER facility local0 severity info use_record true payload_key message </store>
手順
OpenShift Container Platform が syslog プロトコルを使用してログを転送するように設定するには、以下を実行します。
<store>
スタンザ内に以下のパラメーターが含まれるsyslog.conf
という名前の設定ファイルを作成します。syslog プロトコルタイプを指定します。
@type syslog_buffered 1
- 1
- 使用するプロトコル (
syslog
またはsyslog_buffered
のいずれか) を指定します。
外部 syslog サーバーの名前、ホスト、およびポートを設定します。
remote_syslog <remote> 1 port <number> 2 hostname <name> 3
以下は例になります。
出力例
remote_syslog syslogserver.openshift-logging.svc.cluster.local port 514 hostname fluentd-server
必要に応じて他の syslog 変数を設定します。
remove_tag_prefix 1 tag_key <key> 2 facility <value> 3 severity <value> 4 use_record <value> 5 payload_key message 6
- 1
- このパラメーターを追加して、
tag
フィールドを syslog 接頭辞から削除します。 - 2
- syslog キーを設定するためのフィールドを指定します。
- 3
- syslog ログファシリティーまたはソースを指定します。値については、RTF 3164 を参照してください。
- 4
- syslog ログの重大度を指定します。値については、RTF 3164 リンクを参照してください。
- 5
true
を指定して、レコードの重大度およびファシリティーを使用します (ある場合)。true
の場合、container_name
、namespace_name
、およびpod_name
は、出力の内容に組み込まれます。- 6
- syslog メッセージのペイロードを設定するためにキーを指定します。デフォルトは
message
に設定されます。
出力例
facility local0 severity info
設定ファイルは以下のように表示されます。
<store> @type syslog_buffered remote_syslog syslogserver.openshift-logging.svc.cluster.local port 514 hostname ${hostname} tag_key ident,systemd.u.SYSLOG_IDENTIFIER facility local0 severity info use_record false </store>
設定ファイルから
openshift-logging
namespace にsyslog
という名前の ConfigMap を作成します。$ oc create configmap syslog --from-file=syslog.conf -n openshift-logging
Cluster Logging Operator は Fluentd Pod を再デプロイします。Pod が再デプロイされない場合、強制的に再デプロイするために Fluentd Pod を削除できます。
$ oc delete pod --selector logging-infra=fluentd