IBM Cloud Docs
Istio トラフィックの監視

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 マネージド・アプリのパフォーマンスと正常性を運用面で可視化することができます。

モニター・エージェントをクラスターにデプロイするには、以下の手順を実行します。

  1. IBM Cloud Monitoringのインスタンスをプロビジョンします

  2. クラスター内でモニター・エージェントを構成します。

  3. モニタリングコンソールで、プロビジョニングしたインスタンスの 「ダッシュボードを開く」 をクリックします。

  4. Monitoring の UI で、**「Add new dashboard」**をクリックします。

  5. Istio を検索し、 Monitoring の事前定義されたIstioダッシュボードから1つを選択します。

メトリックとダッシュボードの参照、Istio 内部コンポーネントの監視、Istio A/B デプロイメントとカナリア デプロイメントの監視の詳細については、 Kubernetes サービス メッシュの Istio を監視する方法に関するブログ投稿をご覧ください。

ControlZ コンポーネント検査ダッシュボードと Envoy サイドカー・ダッシュボードの起動

Istio の特定のコンポーネントを検査するには、 ControlZ および Envoy ダッシュボードを起動します。

ControlZ ダッシュボードは、Istio コンポーネント・ポートにアクセスして、各コンポーネントの内部状態を検査するための対話式ビューを提供します。 Envoy ダッシュボードは、アプリ・ポッドで実行される Envoy サイドカー・プロキシーの構成情報およびメトリックを提供します。

開始前に

ControlZ

  1. 検査する対象の Istio コンポーネントのポッド名を取得します。 istio-citadelistio-galleyistio-pilotistio-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
    
  2. 対象コンポーネントの ControlZ ダッシュボードにアクセスします。

    istioctl dashboard controlz <component_pod_name>.istio-system
    

Envoy

  1. 検査する Envoy サイドカー・コンテナーがあるアプリ・ポッドの名前を取得します。
    kubectl get pods -n <namespace>
    
  2. そのポッドの Envoy ダッシュボードにアクセスします。
    istioctl dashboard envoy <pod-name>.<namespace>