Istio トラフィックの監視
IBM Cloud Kubernetes Service 上の Istio によって管理されているアプリのログを記録し、モニターします。
メッシュ全体のアクセス・ログの有効化
メッシュ全体に対して Envoy アクセス・ログを有効にするには、Istio アドオンによって提供される ibm-operators
名前空間にある managed-istio-custom
ConfigMap リソースを使用できます。 Envoy アクセス・ログを有効にするには、 managed-istio-custom
ConfigMap リソースを編集して、キーと値のペア istio-global-proxy-accessLogFile: "dev/stdout"
を追加します。 詳しくは、 Istio インストール済み環境のカスタマイズ を参照してください。
個々のコンテナーのアクセス・ログの有効化
バージョン 1.18以降、Istio アドオンには、テレメトリー CR を使用して個々のコンテナーの Envoy アクセス・ログを有効にするオプションが用意されています。 テレメトリー CR をセットアップするには、以下のテレメトリー定義を使用します。
apiVersion: telemetry.istio.io/v1alpha1
kind: Telemetry
metadata:
name: example-telemetry-enabling-envoy-access-logs
namespace: <namespace> # Pod's namespace
spec:
selector:
matchLabels:
<key>: <value> # Pod's label
accessLogging:
- providers:
- name: enable-targeted-envoy-access-logs
前の例の定義を変更して、ポッドの名前空間とラベルを含めます。 テレメトリー定義が適用されると、 istio-proxy
コンテナーを介して Envoy アクセス・ログを確認できます。
IBM Cloud Logs を使用するロギングのセットアップ
各ポッド内のアプリコンテナとEnvoyプロキシサイドカーコンテナのログをシームレスに管理するには、ログ転送エージェントをワーカーノードにデプロイして、ログを IBM Cloud Logs に転送します。
IBM Cloud Logs を使用するには、クラスタ内のすべてのワーカーノードにロギングエージェントを展開します。 このエージェントは、*.log
などのすべての名前空間から、ポッドの /var/log
ディレクトリーに保管されている拡張子のないファイルと拡張子が kube-system
のログを収集します。 これらのログには、各ポッド内のアプリ・コンテナーと Envoy プロキシー・サイドカー・コンテナーからのログが含まれます。
そして、それらのログを IBM Cloud Logs サービスに転送します。
始めに、IBM Cloud Logs による Kubernetes クラスター・ログの管理の手順に従って、クラスターのロギングをセットアップします。
IBM Cloud Monitoring を使用するモニタリングのセットアップ
Monitoring エージェントをワーカー・ノードにデプロイしてメトリックを IBM Cloud® Monitoring に転送することによって、Istio マネージド・アプリのパフォーマンスと正常性を運用面で可視化することができます。
モニター・エージェントをクラスターにデプロイするには、以下の手順を実行します。
-
モニタリングコンソールで、プロビジョニングしたインスタンスの 「ダッシュボードを開く」 をクリックします。
-
Monitoring の UI で、**「Add new dashboard」**をクリックします。
-
Istio
を検索し、 Monitoring の事前定義されたIstioダッシュボードから1つを選択します。
メトリックとダッシュボードの参照、Istio 内部コンポーネントの監視、Istio A/B デプロイメントとカナリア デプロイメントの監視の詳細については、 Kubernetes サービス メッシュの Istio を監視する方法に関するブログ投稿をご覧ください。
ControlZ コンポーネント検査ダッシュボードと Envoy サイドカー・ダッシュボードの起動
Istio の特定のコンポーネントを検査するには、 ControlZ および Envoy ダッシュボードを起動します。
ControlZ ダッシュボードは、Istio コンポーネント・ポートにアクセスして、各コンポーネントの内部状態を検査するための対話式ビューを提供します。 Envoy ダッシュボードは、アプリ・ポッドで実行される Envoy サイドカー・プロキシーの構成情報およびメトリックを提供します。
開始前に
- クラスターに
istio
マネージド・アドオンをインストールします。 istioctl
CLI をインストールします。
ControlZ
-
検査する対象の Istio コンポーネントのポッド名を取得します。
istio-citadel
、istio-galley
、istio-pilot
、istio-policy
、およびistio-telemetry
のコンポーネント・ポッドを検査することができます。kubectl get pods -n istio-system | grep istio
出力例
NAME READY STATUS RESTARTS AGE istio-citadel-869c7f9498-wtldz 1/1 Running 0 2m istio-egressgateway-69bb5d4585-qxxbp 1/1 Running 0 2m istio-galley-75d7b5bdb9-c9d9n 1/1 Running 0 2m istio-ingressgateway-5c8764db74-gh8xg 1/1 Running 0 2m istio-pilot-55fd7d886f-vv6fb 2/2 Running 0 2m istio-policy-6bb6f6ddb9-s4c8t 2/2 Running 0 2m istio-sidecar-injector-7d9845dbb7-r8nq5 1/1 Running 0 2m istio-telemetry-7695b4c4d4-tlvn8 2/2 Running 0 2m istio-tracing-55bbf55878-z4rd2 1/1 Running 0 2m
-
対象コンポーネントの ControlZ ダッシュボードにアクセスします。
istioctl dashboard controlz <component_pod_name>.istio-system
Envoy
- 検査する Envoy サイドカー・コンテナーがあるアプリ・ポッドの名前を取得します。
kubectl get pods -n <namespace>
- そのポッドの Envoy ダッシュボードにアクセスします。
istioctl dashboard envoy <pod-name>.<namespace>