8.9. OpenShift Container Platform ログの外部デバイスへの送信
Elasticsearch ログを、外部でホストされた Elasticsearch インスタンスまたは外部 syslog サーバーなどの外部デバイスに送信することができます。また、ログを外部ログアグリゲーターに送信するように Fluentd を設定することもできます。
特に指示がない場合は、これらの設定を実行する前にクラスターロギングを管理外の状態に設定する必要があります。詳細は、「クラスターロギングの管理状態の変更」を参照してください。
8.9.1. ログコレクターを設定してログを外部 Elasticsearch インスタンスに送信する リンクのコピーリンクがクリップボードにコピーされました!
ログコレクターは、Elasticsearch デプロイメント設定の ES_HOST、ES_PORT、OPS_HOST、および OPS_PORT 環境変数の値にログを送信します。アプリケーションログは ES_HOST の宛先に、操作ログは OPS_HOST の宛先に送信されます。
AWS Elasticsearch インスタンスへのログの直接送信はサポートされていません。Fluentd Secure Forward を使用して、fluent-plugin-aws-elasticsearch-service プラグインで設定した制御対象の Fluentd のインスタンスにログを送信してください。
前提条件
- クラスターロギングおよび Elasticsearch がインストールされていること。
- クラスターロギングを管理外の状態に設定する。
手順
ログを特定の Elasticsearch インスタンスに送信するには、以下を実行します。
openshift-logging プロジェクトで
fluentddaemonset を編集します。$ oc edit ds/fluentd spec: template: spec: containers: env: - name: ES_HOST value: elasticsearch - name: ES_PORT value: '9200' - name: ES_CLIENT_CERT value: /etc/fluent/keys/app-cert - name: ES_CLIENT_KEY value: /etc/fluent/keys/app-key - name: ES_CA value: /etc/fluent/keys/app-ca - name: OPS_HOST value: elasticsearch - name: OPS_PORT value: '9200' - name: OPS_CLIENT_CERT value: /etc/fluent/keys/infra-cert - name: OPS_CLIENT_KEY value: /etc/fluent/keys/infra-key - name: OPS_CA value: /etc/fluent/keys/infra-ca-
外部 Elasticsearch インスタンスにアプリケーションログと操作ログの両方を含めるには、
ES_HOSTとOPS_HOSTを同じ宛先に設定し、ES_PORTとOPS_PORTが同一の値を持つことを確認します。 - TLS の外部でホストされる Elasticsearch インスタンスを設定します。相互 TLS を使用する外部でホストされた Elasticsearch インスタンスのみが許可されます。
指定された Kibana と Elasticsearch イメージを使用していない場合、同じマルチテナント機能は利用できず、データは特定プロジェクトへのユーザーアクセスによる制限を受けません。
8.9.2. ログコレクターを設定してログを外部 syslog サーバーに送信する リンクのコピーリンクがクリップボードにコピーされました!
fluent-plugin-remote-syslog プラグインをホストで使用して、ログを外部 syslog サーバーに送信します。
前提条件
クラスターロギングを管理外の状態に設定する。
手順
openshift-loggingプロジェクトのfluentddaemonset で環境変数を設定します。spec: template: spec: containers: - name: fluentd image: 'registry.redhat.io/openshift4/ose-logging-fluentd:v4.2' env: - name: REMOTE_SYSLOG_HOST1 value: host1 - name: REMOTE_SYSLOG_HOST_BACKUP value: host2 - name: REMOTE_SYSLOG_PORT_BACKUP value: 5555- 1
- 必要なリモート syslog ホスト。各ホストで必須です。
これによって 2 つの宛先が作成されます。
host1の syslog サーバーはデフォルトポート514でメッセージを受信し、host2は同じメッセージをポート5555で受信します。または、
openshift-loggingプロジェクトに独自のfluentddaemonset を設定できます。Fluentd 環境変数
Expand パラメーター 説明 USE_REMOTE_SYSLOGデフォルトは
falseです。fluent-plugin-remote-sysloggem を使用できるようにするには、trueに設定します。REMOTE_SYSLOG_HOST(必須) リモート syslog サーバーのホスト名または IP アドレス。
REMOTE_SYSLOG_PORT接続先のポート番号。デフォルトは
514です。REMOTE_SYSLOG_SEVERITYsyslog の重大度を設定します。デフォルトは
debugです。REMOTE_SYSLOG_FACILITYsyslog ファシリティーを設定します。デフォルトは
local0です。REMOTE_SYSLOG_USE_RECORDデフォルトは
falseです。レコードの重大度フィールドおよびファシリティーフィールドを使用して syslog メッセージに設定するには、trueに設定します。REMOTE_SYSLOG_REMOVE_TAG_PREFIXタグからプレフィックスを削除します。デフォルトは
''(空) です。REMOTE_SYSLOG_TAG_KEYこれが指定されている場合、このフィールドをキーとして使用してレコードを検索し、syslog メッセージにタグを設定します。
REMOTE_SYSLOG_PAYLOAD_KEYこれが指定されている場合、このフィールドをキーとして使用してレコードを検索し、syslog メッセージにペイロードを設定します。
REMOTE_SYSLOG_TYPEトランスポート層プロトコルタイプを設定します。デフォルトは
syslog_bufferedになり、これにより、TCP プロトコルが設定されます。UDP に切り替えるには、これをsyslogに設定します。警告この実装は安全ではないため、接続にスヌーピングがないことを保証できる環境でのみ使用してください。
8.9.3. ログを外部ログアグリゲーターに送信するように Fluentd を設定する リンクのコピーリンクがクリップボードにコピーされました!
out_forward プラグインを使用して、デフォルトの Elasticsearch ではなく外部のログアグリゲーターにログのコピーを送信するように Fluentd を設定することができます。ローカルにホストされている Fluentd による処理の後に、ログレコードをさらに処理することができます。
forward プラグインは Fluentd によってのみサポートされます。out_forward プラグインはクライアント側 (センダー) を実装し、in_forward プラグインはサーバー側 (レシーバー) を実装します。
Out_forward を使用してログを送信するように OpenShift Container Platform を設定するには、受信側を参照する openshift という ConfigMap を作成します。レシーバーで、in_forward プラグインを OpenShift Container Platform からログを受信するように設定します。in_forward プラグインの使用方法についての詳細は、 Fluentd ドキュメントを参照してください。
-logging namespace に secure- forward
デフォルトの secure-forward.conf セクション
# <store>
# @type forward
# <security>
# self_hostname ${hostname} # ${hostname} is a placeholder.
# shared_key <shared_key_between_forwarder_and_forwardee>
# </security>
# transport tls
# tls_verify_hostname true # Set false to ignore server cert hostname.
# tls_cert_path /path/for/certificate/ca_cert.pem
# <buffer>
# @type file
# path '/var/lib/fluentd/forward'
# queued_chunks_limit_size "#{ENV['BUFFER_QUEUE_LIMIT'] || '1024' }"
# chunk_limit_size "#{ENV['BUFFER_SIZE_LIMIT'] || '1m' }"
# flush_interval "#{ENV['FORWARD_FLUSH_INTERVAL'] || '5s'}"
# flush_at_shutdown "#{ENV['FLUSH_AT_SHUTDOWN'] || 'false'}"
# flush_thread_count "#{ENV['FLUSH_THREAD_COUNT'] || 2}"
# retry_max_interval "#{ENV['FORWARD_RETRY_WAIT'] || '300'}"
# retry_forever true
# # the systemd journald 0.0.8 input plugin will just throw away records if the buffer
# # queue limit is hit - 'block' will halt further reads and keep retrying to flush the
# # buffer to the remote - default is 'exception' because in_tail handles that case
# overflow_action "#{ENV['BUFFER_QUEUE_FULL_ACTION'] || 'exception'}"
# </buffer>
# <server>
# host server.fqdn.example.com # or IP
# port 24284
# </server>
# <server>
# host 203.0.113.8 # ip address to connect
# name server.fqdn.example.com # The name of the server. Used for logging and certificate verification in TLS transport (when host is address).
# </server>
# </store>
手順
Fluentd ログのコピーを外部ログアグリゲーターに送信するには、以下を実行します。
Fluentd 設定マップの
secure-forward.confセクションを編集します。$ oc edit configmap/fluentd -n openshift-logging外部 Fluentd サーバーの名前、ホスト、およびポートを入力します。
# <server> # host server.fqdn.example.com # or IP # port 24284 # </server> # <server> # host 203.0.113.8 # ip address to connect # name server.fqdn.example.com # The name of the server. Used for logging and certificate verification in TLS transport (when host is address). # </server>以下は例になります。
<server> name externalserver11 host 192.168.1.12 port 242243 </server> <server>4 name externalserver1 host 192.168.1.2 port 24224 </server> </store>CA 証明書とプライベートキーへのパスを
secure-forward.confセクションに追加します。# <security> # self_hostname ${hostname} # ${hostname} is a placeholder.1 # shared_key <shared_key_between_forwarder_and_forwardee>2 # </security> # tls_cert_path /path/for/certificate/ca_cert.pem3 以下は例になります。
<security> self_hostname client.fqdn.local shared_key cluster_logging_key </security> tls_cert_path /etc/fluent/keys/ca.crtmTLS を使用するには、クライアント証明書およびキーパラメーターなどの設定に関する情報として Fluentd のドキュメント を参照してください。
secure-forward.confで使用される証明書を Fluentd Pod にマウントされる既存のシークレットに追加します。your_ca_certおよびyour_private_keyの値は、configmap/fluentdのsecure-forward.confで指定されている値と一致している必要があります。$ oc patch secrets/fluentd --type=json \ --patch "[{'op':'add','path':'/data/your_ca_cert','value':'$(base64 -w0 /path/to/your_ca_cert.pem)'}]" $ oc patch secrets/fluentd --type=json \ --patch "[{'op':'add','path':'/data/your_private_key','value':'$(base64 -w0 /path/to/your_private_key.pem)'}]"注記your_private_keyは、汎用的な名前に置き換えます。これは、JSON パスへのリンクであり、使用しているホストシステムのパスではありません。以下は例になります。
$ oc patch secrets/fluentd --type=json \ --patch "[{'op':'add','path':'/data/ca.crt','value':'$(base64 -w0 /etc/fluent/keys/ca.crt)'}]" $ oc patch secrets/fluentd --type=json \ --patch "[{'op':'add','path':'/data/ext-agg','value':'$(base64 -w0 /etc/fluent/keys/ext-agg.pem)'}]"外部アグリゲーターで
secure-forward.confファイルを設定し、Fluentd からのメッセージを安全に受け入れられるようにします。外部アグリゲーターを設定する際は、Fluentd からのメッセージを安全に受信できる必要があります。
詳細情報は、inforward プラグインのセットアップ方法について、および out_forward プラグインを参照してください。