7.10.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
remote_syslog rsyslogserver.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>
- 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_buffered1 - 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_prefix1 tag_key <key>2 facility <value>3 severity <value>4 use_record <value>5 payload_key message6 - 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-loggingnamespace にsyslogという名前の ConfigMap を作成します。$ oc create configmap syslog --from-file=syslog.conf -n openshift-loggingCluster Logging Operator は Fluentd Pod を再デプロイします。Pod が再デプロイされない場合、強制的に再デプロイするために Fluentd Pod を削除できます。
$ oc delete pod --selector logging-infra=fluentd