このトピックでは、Ingress がログを収集できるようにする方法、さまざまなタイプのログレポートを分析する方法、アラーム設定とレポートサブスクリプションで、レポートを使用する方法について説明します。 Alibaba Cloud Container Service for Kubernetes (ACK) は、すべての HTTP リクエストを収集して標準出力する Ingress を提供します。 Log Service (ACK と連携) を使用してダッシュボードを作成し、Ingress のログを分析して Ingress へのアクセスをモニターできます。
始める前に
- ログコンポーネントを Kubernetes クラスターにインストールします。
注 新しい Kubernetes クラスターを作成する場合、またはログコンポーネントがインストールされていない既存の Kubernetes クラスターを使用する場合は、次の手順に従います。
- クラスターの作成時に Kubernetes クラスターにログコンポーネントをインストールする方法については、「Kubernetes クラスターの作成」をご参照ください。
- クラスターの作成後に Kubernetes クラスターにログコンポーネントをインストールする方法については、「Log Service を使用した Kubernetes クラスターログの収集」をご参照ください。
- ターゲット Kubernetes クラスターのログコンポーネント
alibaba-log-controller
をアップグレードします。ログコンポーネントalibaba-log-controller
は、ターゲット Kubernetes クラスターの kube-system 名前空間にある、デプロイメントアプリケーションです。 アップグレードするには、次の 2 つのパラメーターを変更する必要があります。- イメージ名 :イメージ名 " registry-vpc.{region-id}.aliyuncs.com/acs/log-controller " の
{region-id}
をターゲット Kubernetes クラスターが属するリージョンの ID に置き換えます。 たとえば、{region-id}
は、cn-hangzhou、cn-beijing、または ap-southeast-1 に置き換えることができます。 - イメージバージョン :
0.2.0.0-76648ee-aliyun
バージョン以降。
次の 2 つのアップグレード方法のいずれかを選択できます。- kubectl edit deployment alibaba-log-controller -n kube-system コマンドを実行します。
- Container Service コンソールを使用して更新します。
次の手順に従います。
- Container Service コンソールにログインします。
- Container Service-Kubernetes の左側のナビゲーションウィンドウで、 をクリックします。
- 対象となる Kubernetes クラスターと kube-system 名前空間を選択し、 alibaba-log-controller を検索します。次に、[操作] 列で、 [編集] をクリックします。
- イメージ名 :イメージ名 " registry-vpc.{region-id}.aliyuncs.com/acs/log-controller " の
ログを収集するために Ingress の設定をデプロイします。
概要
以下は、ログを収集する Ingress の設定です。 設定は、拡張された Kubernetes Custom Resource Definition (CRD) として表示できます。
したがって、このトピックでは、設定を CRD 設定と呼びます。 CRD 設定がデプロイされると、ログコンポーネントは自動的にパラメーターを作成し、Log Service
に関連するリソースをレポートします。
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
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*).*
SourceKey: content
- ログコンポーネント alibaba-log-controller を
0.2.0.0-76648ee-aliyun
バージョンにアップグレードする前に CRD 設定をデプロイした場合、まずデプロイされた CRD 設定を削除し、アップグレード後に CRD 設定を再デプロイする必要があります。 - 前述の CRD 設定は、ACK のデフォルトの Ingress コントローラーのログ形式に対してのみ有効です。 ログ形式が変更された場合、CRD 設定の正規表現 (
processor_regex
の部分) を、CRD での Kubernetes ログ収集の設定 で説明されている手順に従って変更する必要があります。
手順
次の 2 つの方法のいずれかを使用して、CRD 設定をデプロイできます。
- kubectl コマンドの使用
上記の CRD 設定を nginx-ingress.yaml ファイルとして保存し、 kubectl apply -f コマンドを実行します。
- オーケストレーションテンプレートの使用
- Container Service コンソール にログインします。
- 前述の CRD 設定をオーケストレーションテンプレートとして保存します。 詳細は、「オーケストレーションテンプレートの作成」をご参照ください。
- 対象となる Kubernetes クラスターのデフォルトの名前空間で、このテンプレートを使用して、アプリケーションを作成します。
Ingress のログとレポートを表示する
- Log Service コンソールにログインします。
- 対象となる Kubernetes クラスターに関連付けられているプロジェクトをクリックします。
注 プロジェクトのデフォルト名は、 k8s-log- {cluster-id} です。
- 左側のナビゲーションウィンドウで、[ダッシュボード] をクリックして、Ingress のすべてのレポートを表示します。
注 Ingress ログのレポートは次のとおりです。Ingress 概要、Ingress アクセスセンター、Ingress モニタリングセンター、ブルーまたはグリーンデプロイメントの Ingress モニタリングセンター、および Ingress 例外センター。
Ingress 概要レポート
Ingress 概要レポートには、 Ingress の全体的なステータスと次の情報が表示されます。
- 全体的なステータス (毎日):PV、UV、トラフィック、リクエストレイテンシ、およびモバイル端末ユーザー数と全ユーザー数の比率。
- リアルタイムの Web サイトステータス (毎分):PV、UV、アクセス成功率、すべてのエラーにおける 5XX エラーの割合、平均レイテンシ、P95 レイテンシ、および P99 レイテンシ。
- ユーザーリクエストの統計 (毎日):今日と 7 日間の PV、エリア別の訪問分布、リクエスト別上位 10 県と都市、モバイル端末のシェア、Android および IOS 端末のシェア。
- 上位 URL の統計 (毎時間):リクエスト別上位 10 URL、レイテンシ別上位 10 URL、上位 10 5XX URL、上位 10 404 URL。
Ingress アクセスセンター
Ingress アクセスセンターは、操作ステータスの分析に使用できるアクセスリクエストの統計を提供します。 このレポートには次の情報が含まれます。
- 当日の UV と PV
- UV および PV 分布
- UV および PV の傾向
- リクエスト別上位 10 エリアと都市
- 上位ブラウザ
- アクセスの上位 IP アドレス
- モバイル端末のシェア
- Android と IOS のシェア
Ingress モニタリングセンター
Ingress モニタリングセンターは、Web サイトのリアルタイムモニタリング統計を提供します。 このレポートには次の統計が含まれます。
- リクエストの成功率
- 404 ステータスコード率
- 5XX ステータスコード率
- リクエストの非転送率
- 平均レイテンシ
- P95、P99、および P9999 レイテンシ
- リクエスト別上位 10 サービス
- 障害別上位 10 サービス
- レイテンシ別上位 10 サービス
- トラフィック別上位 10 サービス
ブルーまたはグリーンデプロイメントの Ingress モニタリングセンター
このレポートは、バージョンリリースをモニターし、ブルーバージョンとグリーンバージョンを比較するために使用されます。 これにより、リリースの例外をすばやく見つけて、元のバージョンをロールバックすることができます。
このレポートでは、ブルーバージョンとグリーンバージョン (たとえば、サービス A とサービス B) を選択する必要があります。 レポートには、PV、すべてのエラーに対する
5XX エラーの比率、成功率、平均レイテンシ、トラフィック、P5、P99、P9999 のレイテンシなど、2 つのバージョンに関する統計が動的に表示されます。
Ingress 例外センター
Ingress 例外センターは、Log Service が提供する機械学習のアルゴリズムに基づいて動作します。 複数のタイミング分析アルゴリズムを使用して、Ingress
メトリックから例外を自動的に検出します。
アラームの設定
上記の各レポートにアラームを設定できます。 詳細は、「アラームの設定」をご参照ください。
以下は、5xx ステータスコードの割合の統計のアラームを設定する方法を示しています。
- Ingress モニタリングセンターレポートを開き、ポインターを 5XX 割合チャートの右上隅に移動します。次に、表示されたボックスで、[アラームの作成] をクリックします。
- アラーム名、検索間隔を設定し、トリガー条件
total > 1
を入力します。 - 必要に応じて通知方法を設定します。
スケジュールされたレポートをサブスクライブする
Log Service をスケジュールして、レポートを図に表示できます。また、その図を E メールで送信するか、図を特定の DingTalk グループに送信できます。 詳細については、「ダッシュボードスナップショットのサブスクライブ」をご参照ください。
以下は、スケジュールされた Ingress 概要レポートをサブスクライブする方法を示しています (レポートのレンダリングによって生成された図が、毎日 10:00 に指定された
DingTalk グループに送信されます)。
- Ingress 概要 レポートを開きます。 次に、右上隅で、[サブスクライブ] をクリックします。
- 表示されたページで、[頻度] の 2 つのドロップダウンリストから [毎日] と、 [10:00] を選択し、[ウォーターマークの追加] を無効にします。
- [通知リスト] ドロップダウンリストから [WebHook-DingTalk ボット] を選択し、リクエスト URL を入力します。