TKEは、CLSとの統合により、フルセットかつパーフェクトな製品化機能を提供し、Nginx-ingressログの収集および消費機能を実装します。詳細については、Nginx-ingressログの設定をご参照ください。デフォルトのログインデックスではログのニーズを満たせない場合、ログインデックスをカスタマイズすることができます。ここでは、Nginx Ingressのログインデックスの更新方法についてご説明します。 前提条件
1. Nginx Ingressはv1.1.0以上のバージョンとします。TKEコンソールにログインし、クラスターの詳細 > コンポーネント管理でNginx Ingressのコンポーネントバージョンをご確認ください。 注意:
Nginx Ingress v1.1.0以上のバージョンのみがこの機能をサポートしています。v1.0.0など、v1.1.0以下のバージョンでは、ユーザーによるログインデックスの変更は、コンポーネントのロールバックによって上書きされます。
2. Nginx Ingressインスタンスはv0.49.3以上のバージョンとします。TKEコンソールにログインし、クラスターの詳細 > サービスとルートからNginxIngressを選択してインスタンスの右側にあるYAMLの確認をクリックします。YAMLでは、イメージccr.ccs.tencentyun.com/paas/nginx-ingress-controllerのバージョンはv0.49.3以上である必要があります。 操作手順
注意
ログ構造を変更するには、ログ出力、ログ収集、ログインデックスの設定など、Nginx Ingressのログフローを理解する必要があります。中でもログ出力やログ収集が不十分であったり、設定が間違っていたりすると、ログの変更に失敗してしまいます。
ステップ1:Nginx Ingressインスタンスのログ出力形式の変更
Nginx Ingressインスタンスのログ設定は、そのインスタンスのメイン設定ConfigMapにあります。ConfigMapの名前は、インスタンス名-ingress-nginx-controllerとします。変更するKeyはlog-format-upstreamです。下図に示すとおりです。 事例
ログに$namespaceと$service_name`という2つの連続する文字列を追加し、ログ内容の末尾に配置します。追加する場所は、下図に示すとおりです。
Nginx Ingressログフィールドの詳細については、ドキュメントをご参照ください。 ステップ2:クラスター内ログ収集とレポートAgent形式の変更
クラスター内ログ収集のルールは、logconfigs.cls.cloud.tencent.comタイプのリソースオブジェクトにあります。TKEコンソールにログインし、クラスターの詳細 > リソースオブジェクトブラウザでこのリソースオブジェクトを見つけられます。名前はインスタンス名-ingress-nginx-controllerです。YAMLの編集で変更することができます。 変更するフィールドは以下のとおりです。
beginningRegex:ログ開始の正規表現
keys:ログのフィールド
logRegex:ログ終了の正規表現
正規表現は、Nginxのログ行形式とマッチします。Nginxの既存のログ形式の後にフィールドを追加するとともに、keysの末尾で宣言することをお勧めします。また、このフィールドの正規解析をbeginningRegex、logRegexの末尾に追加します。
事例
keysの後にステップ1の2つのフィールドを追加した後、beginningRegexとlogRegexの末尾にそれぞれ正規表現文字列を追加します。下図に示すとおりです。 (オプション)ステップ3:CLSのログインデックス形式の変更
このフィールドを検索する機能が必要な場合は、対応するログトピックに新しいフィールドのインデックスを追加する必要があります。これはCLSコンソールで行うことができ、操作を完了すると、収集されたすべてのログがインデックスを介して検索できるようになります。操作の詳細については、インデックスの設定。 初期設定への復元
ログルールの変更に関する手順が複雑で正規表現にも影響を与えるため、操作手順に何らかの誤りがあると、ログ収集が失敗することがあります。ログ収集エラーが報告された場合、元のログ収集機能を復元することをお勧めします。ログ収集機能をオフにしてから、再度ログ収集のオンを行う必要があります。