This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.7.12. ログの Loki への転送
内部のデフォルト OpenShift Container Platform Elasticsearch インスタンスに加えて、またはその代わりに外部の Loki ロギングシステムにログを転送できます。
Loki へのログ転送を設定するには、Loki の出力と、出力を使用するパイプラインで ClusterLogForwarder
カスタムリソース (CR) を作成する必要があります。Loki への出力は HTTP (セキュアでない) または HTTPS (セキュアな HTTP) 接続を使用できます。
前提条件
-
CR の
url
フィールドで指定する URL で Loki ロギングシステムが実行されている必要がある。
手順
ClusterLogForwarder
CR オブジェクトを定義する YAML ファイルを作成または編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
ClusterLogForwarder
CR の名前はinstance
である必要があります。- 2
ClusterLogForwarder
CR の namespace はopenshift-logging
である必要があります。- 3
- 出力の名前を指定します。
- 4
- タイプを
loki
として指定します。 - 5
- Loki システムの URL およびポートを有効な絶対 URL として指定します。
http
(セキュアでない) プロトコルまたはhttps
(セキュアな HTTP) プロトコルを使用できます。CIDR アノテーションを使用するクラスター全体のプロキシーが有効になっている場合、出力は IP アドレスではなくサーバー名または FQDN である必要があります。 - 6
- セキュアな接続では、
シークレット
を指定して、認証するhttps
またはhttp
URL を指定できます。 - 7
https
接頭辞の場合には、TLS 通信のエンドポイントに必要なシークレットの名前を指定します。シークレットはopenshift-logging
プロジェクトに存在し、tls.crt、tls.key および ca-bundle.crt のキーが含まれる必要があります。これらは、それぞれが表す証明書を参照します。それ以外の場合は、http
およびhttps
接頭辞の場合は、ユーザー名とパスワードを含むシークレットを指定できます。詳細は、Example: Setting secret that contains a username and password.を参照してください。- 8
- オプション: パイプラインの名前を指定します。
- 9
- パイプラインを使用して転送するログタイプ (
application
、infrastructure
またはaudit
) を指定します。 - 10
- このパイプラインでログを転送する時に使用する出力の名前を指定します。
- 11
- オプション: メタデータキーフィールドを指定して、Loki の
TenantID
フィールドの値を生成します。たとえば、tenantKey: kubernetes.namespace_name
を設定すると、Kubernetes namespace の名前を Loki のテナント ID の値として使用します。他にどのログレコードフィールドを指定できるかを確認するには、以下の Additional resources セクションの Log Record Fields リンクを参照してください。 - 12
- オプション: デフォルトの Loki ラベルを置き換えるメタデータフィールドキーの一覧を指定します。loki ラベル名は、正規表現
[a-zA-Z_:][a-zA-Z0-9_:]*
と一致する必要があります。ラベル名を形成するため、メタデータキーの無効な文字は_
に置き換えられます。たとえば、kubernetes.labels.foo
meta-data キーは Loki ラベルkubernetes_labels_foo
になります。labelKeys
を設定しないと、デフォルト値は[log_type, kubernetes.namespace_name, kubernetes.pod_name, kubernetes_host]
です。Loki で指定可能なラベルのサイズと数に制限があるため、ラベルのセットを小さくします。Configuring Loki, limits_config を参照してください。クエリーフィルターを使用して、ログレコードフィールドに基づいてクエリーを実行できます。
注記Loki ではログストリームを正しくタイムスタンプで順序付ける必要があるため、
labelKeys
には指定しなくてもkubernetes_host
ラベルセットが常に含まれます。このラベルセットが含まれることで、各ストリームが 1 つのホストから発信されるので、ホストのクロック間の誤差が原因でタイムスタンプの順番が乱れないようになります。CR オブジェクトを作成します。
oc create -f <file-name>.yaml
$ oc create -f <file-name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.12.1. "entry out of order" エラーのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Fluentd がレート制限を超えるサイズの大きいメッセージブロックを Loki ロギングシステムに転送する場合には、Loki は "entry out of order" のエラーを生成します。この問題を修正するには、Loki サーバー設定ファイル loki.yaml
のいくつかの値を更新します。
loki.yaml
は、Grafana がホストする Loki では使用できません。このトピックは、Grafana がホストする Loki サーバーには適用されません。
条件
-
Cluster Log Forwarder
カスタムリソースは、ログを Loki に転送するように設定されています。 システムは、次のような 2MB を超えるメッセージのブロックを Loki に送信します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc logs -c fluentd
と入力すると、OpenShift Logging クラスターの Fluentd ログに次のメッセージが表示されます。429 Too Many Requests Ingestion rate limit exceeded (limit: 8388608 bytes/sec) while attempting to ingest '2140' lines totaling '3285284' bytes 429 Too Many Requests Ingestion rate limit exceeded' or '500 Internal Server Error rpc error: code = ResourceExhausted desc = grpc: received message larger than max (5277702 vs. 4194304)'
429 Too Many Requests Ingestion rate limit exceeded (limit: 8388608 bytes/sec) while attempting to ingest '2140' lines totaling '3285284' bytes 429 Too Many Requests Ingestion rate limit exceeded' or '500 Internal Server Error rpc error: code = ResourceExhausted desc = grpc: received message larger than max (5277702 vs. 4194304)'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Loki サーバーでログを開くと、次のような
entry out of order
メッセージが表示されます。,\nentry with timestamp 2021-08-18 05:58:55.061936 +0000 UTC ignored, reason: 'entry out of order' for stream: {fluentd_thread=\"flush_thread_0\", log_type=\"audit\"},\nentry with timestamp 2021-08-18 06:01:18.290229 +0000 UTC ignored, reason: 'entry out of order' for stream: {fluentd_thread="flush_thread_0", log_type="audit"}
,\nentry with timestamp 2021-08-18 05:58:55.061936 +0000 UTC ignored, reason: 'entry out of order' for stream: {fluentd_thread=\"flush_thread_0\", log_type=\"audit\"},\nentry with timestamp 2021-08-18 06:01:18.290229 +0000 UTC ignored, reason: 'entry out of order' for stream: {fluentd_thread="flush_thread_0", log_type="audit"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
Loki サーバーの
loki.yaml
設定ファイルの次のフィールドを、ここに示す値で更新します。-
grpc_server_max_recv_msg_size: 8388608
-
chunk_target_size: 8388608
-
ingestion_rate_mb: 8
-
ingestion_burst_size_mb: 16
-
-
loki.yaml
の変更を Loki サーバーに適用します。
loki.yaml
ファイルの例