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 ロギングシステムが実行されている必要がある。
手順
ClusterLogForwarderCR オブジェクトを定義する YAML ファイルを作成または編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
ClusterLogForwarderCR の名前はinstanceである必要があります。- 2
ClusterLogForwarderCR の namespace はopenshift-loggingである必要があります。- 3
- 出力の名前を指定します。
- 4
- タイプを
lokiとして指定します。 - 5
- Loki システムの URL およびポートを有効な絶対 URL として指定します。
http(セキュアでない) プロトコルまたはhttps(セキュアな HTTP) プロトコルを使用できます。CIDR アノテーションを使用するクラスター全体のプロキシーが有効になっている場合、出力は IP アドレスではなくサーバー名または FQDN である必要があります。 - 6
- セキュアな接続では、
シークレットを指定して、認証するhttpsまたはhttpURL を指定できます。 - 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.foometa-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>.yamlCopy 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 ファイルの例