このトピックでは、Ingress Log Centerを有効にして、Ingressログをリアルタイムで収集する方法について説明します。
前提条件
Logtailコンポーネントがインストールされます。 詳細については、「ACKクラスターへのLogtailコンポーネントのインストール」をご参照ください。
デフォルトでは、LogtailコンポーネントはKubernetesクラスターの作成中に自動的にインストールされます。
手順1: Ingressコレクション設定のデプロイ
ACKは、AliyunLogConfigという名前のCustomResourceDefinition (CRD) のタイプを定義します。AliyunLogConfigを作成して、ログ収集を設定できます。 alibaba-log-controllerは、Simple Log Serviceの設定を自動的に生成して、ログデータを収集し、関連するダッシュボードのデータを更新します。
KubernetesクラスターでAliyunLogConfig CRD設定を定義します。
説明alibaba-log-controllerコンポーネントのバージョンが0.2.0.0-76648ee-aliyun以降であることを確認します。
CRD設定の適用後にコンポーネントバージョンを更新する場合は、CRD設定を削除し、コンポーネントバージョンの更新後に再適用します。
CRD設定は、Container Service for Kubernetes (ACK) のデフォルトのIngress Controllerのアクセスログ形式に対してのみ有効です。 Ingress Controllerのアクセスログ形式を変更した場合は、それに応じてCRD設定のprocessor_regex部分を更新します。 詳細については、「DaemonSetモードでのKubernetesコンテナーからのテキストログの収集」のCRD設定をご参照ください。
現在、アクセスログに依存する他のシステムがない場合は、Simple Log Serviceの推奨アクセスログ形式の採用を検討してください。 これを行うには、kubectl edit configmap -n kube-system nginx-configurationコマンドを実行してconfigmapを変更し、log-format-upstreamフィールドを次のように更新します。
log-format-upstream: $the_real_ip - [$the_real_ip] - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_length $request_time [$proxy_upstream_name] $upstream_addr $upstream_response_length $upstream_response_time $upstream_status $req_id $host
apiVersion: log.alibabacloud.com/v1alpha1 kind: AliyunLogConfig metadata: # your config name, must be unique in you k8s cluster name: k8s-nginx-ingress spec: # logstore name to upload log logstore: nginx-ingress # product code, only for k8s nginx ingress productCode: k8s-nginx-ingress # logtail config detail logtailConfig: inputType: plugin # logtail config name, should be same with [metadata.name] configName: k8s-nginx-ingress inputDetail: plugin: inputs: - type: service_docker_stdout detail: IncludeLabel: io.kubernetes.container.name: nginx-ingress-controller Stderr: false Stdout: true processors: - type: processor_regex detail: KeepSource: false Keys: - client_ip - x_forward_for - remote_user - time - method - url - version - status - body_bytes_sent - http_referer - http_user_agent - request_length - request_time - proxy_upstream_name - upstream_addr - upstream_response_length - upstream_response_time - upstream_status - req_id - host - proxy_alternative_upstream_name NoKeyError: true NoMatchError: true Regex: ^(\S+)\s-\s\[([^]]+)]\s-\s(\S+)\s\[(\S+)\s\S+\s"(\w+)\s(\S+)\s([^"]+)"\s(\d+)\s(\d+)\s"([^"]*)"\s"([^"]*)"\s(\S+)\s(\S+)+\s\[([^]]*)]\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s*(\S*)\s*\[*([^]]*)\]*.* SourceKey: contentIngressコレクション構成をデプロイします。
次のいずれかの配置方法を選択します。
方法1: デプロイ用にkubectlコマンドを実行します。
方法2: ステップ1のAliyunLogConfig CRD設定をnginx-ingress.yamlファイルとして保存し、展開用にkubectl apply -n kube-system -fコマンドを実行します。
方法3: デプロイにオーケストレーションテンプレートを使用します。
ACKコンソールにログインします。
手順1のAliyunLogConfig CRD構成をオーケストレーションテンプレートとして保存します。 詳細については、「オーケストレーションテンプレートの管理」をご参照ください。
テンプレートからアプリケーションを作成します。 詳細については、「オーケストレーションテンプレートを使用したLinuxアプリケーションの作成」をご参照ください。 この手順で、クラスターのデフォルトの名前空間を選択します。
ステップ2: ログセンターを追加する
Simple Log Serviceコンソールにログインします。
ログ申請セクションをクリックし、インテリジェントO&Mタブをクリックし、Ingressログセンター.
追加.
ログセンターの追加パネル、次のパラメータを設定し、OK.
パラメーター
説明
ログセンター名
ログセンターの名前を入力します。
プロジェクト
プロジェクトを選択してください。
ログストア
ログストアを選択します。 手順1: Ingressコレクション構成のデプロイで指定されたログストアと一致することを確認します。
次のステップ
設定が完了したら、Ingress Log Centerで関連レポートを表示し、ログクエリ分析、ダウンロード、出荷、変換、アラートなどのタスクを実行できます。 詳細については、「Alibaba Cloudサービスのログに対する一般的な操作」をご参照ください。 クエリ分析とモニタリングデータのアラートを管理することもできます。 詳細については、「メトリックデータの照会と分析」をご参照ください。