SysdigでIstioを監視する方法

By 清水 孝郎 - OCTOBER 13, 2022

SHARE:

本文の内容は、2022年10月13日にVictor Hernandoが投稿したブログ(https://sysdig.com/blog/how-to-monitor-istio-with-sysdig/)を元に日本語に翻訳・再構成した内容となっております。

前回の記事では、KubernetesのIstioサービスメッシュを、すぐに使えるobservabilityスタックを使って監視する方法についてお話しました。今回は、Sysdig Monitorを使ったIstioのサービスメッシュの監視と、問題のトラブルシューティングの方法について説明します。

White background, with the Istio and Sysdig logo on top
Istioサービスメッシュは、Kubernetes上で動作するマイクロサービスに対して特別な特徴と機能性を提供します。その機能の一部を紹介します。

  • Kubernetesにおけるカオスエンジニアリングのためのフォールトインジェクション。
  • マイクロサービスのためのネットワーク管理(仮想サービス、ルーティングオプション、ロードバランシング、トラフィックの最適化など)。
  • 透過的なTLS暗号化、認証、認可、監査ツールなどのセキュリティ機能。

これらの機能はすべて、エコシステム全体に複雑なレイヤーを追加し、Kubernetes上で動作するアプリケーションやサービスを監視することをさらに難しくしています。

Sysdig Monitorは、Istioの監視でユーザーを支援し、ユーザーがデータを確認できる包括的で統一されたポータルを提供します。さらに、Sysdig Monitor は、アプリケーションのトラブルシューティングや問題の根本原因を非常に迅速に見つけ出すのに役立つ一連のツールである Advisor や Inspect のような特別な機能を提供します。

これらのSysdig Monitorのユニークな機能についてもっと知りたいと思いますか?あなたはこのサイトにたどり着きました!おめでとうございます。

Sysdig Monitor for Istio サービスメッシュのベネフィット

すでに「KubernetesのサービスメッシュであるIstioを監視する方法」を読まれた方は、すでに自問自答されていることでしょう。

すでにデフォルトのIstio監視スタックを持っているのに、なぜSysdig Monitorを使う必要があるのでしょうか?

このセクションでは、この基本的な質問にお答えします。以下のリストをチェックして、Sysdig Monitor がどのように Istio サービス・メッシュの監視に役立つかを学んでください。

  • Advisorは、Istioサービスメッシュインフラストラクチャーの問題のトラブルシューティングを支援します。
  • Inspectは、Sysdigエージェントが収集したキャプチャーを分析するためのWeb UIを提供します。問題が発生した直後の事後分析が可能です。
  • スケーラビリティは、Sysdig Monitorでアウトオブボックスで提供されます。Sysdig MonitorはSaaS型なので、Prometheusを大規模に利用する場合のような問題に直面することはないでしょう。
  • Sysdig MonitorはLTS(Long-Term Storage)を提供します。時系列データをどこにどのように保存するかについて心配する必要はありません。
  • Sysdig Agentは、あなたが必要とするすべてのIstioのメトリクスを収集します。Istioは既に prometheus.io アノテーションによってPrometheus形式のメトリクスを公開しているので、Istioインフラのメトリクスを収集するためにPrometheusインスタンスをデプロイする必要はありません。Sysdigエージェントがそのタスクを担当します。
  • Sysdig Monitorには、Istio用のアラートテンプレートのセットが用意されています。あなたの好みに合わせて、独自のアラートを作成することも可能です。
  • Istio のコントロールプレーン、サービス、ワークロードのダッシュボードは、Sysdig Monitor にデフォルトで含まれています。プラットフォームが Istio のトラフィックを取り込み始めるとすぐに、ダッシュボードが自動的に有効になります。
  • Metrics explorer を使えば、クラスターで利用可能なすべてのメトリクスを自由に調べることができます。PromQL UI は、独自の PromQL クエリーを実行する機会を提供します。
  • Sysdig Monitorは、あらゆるKubernetesディストリビューションとクラウドプロバイダー向けの統合ポータルです。すべての環境の監視データを一箇所で入手できます。

このように、Sysdig MonitorはIstioの監視でお客様を支援するために多くの専用機能を提供しています。

Sysdig MonitorでIstioを監視する方法

まず、まだSysdig Monitorのユーザーでない場合は、30日間のトライアルアカウントをリクエストしてください。Sysdigポータルで登録後、数分でアクティベートされます。このトライアルアカウントでは、Sysdig Monitorのすべての機能を利用することができ、クレジットカードも必要ありません。

Sysdig Monitorは、Kubernetesクラスターにデプロイされたエージェントを介して、Kubernetesクラスターから情報を取得します。Sysdig エージェントは yaml ファイルにいくつかのマニフェストを適用するか、helm チャートでインストールすることができます。

本記事で使用した環境にデプロイされているエージェントは1.5.21です。これは sysdig-deploy helm chart 1.3.13 の一部です。他のバージョンの説明や、エージェントのデプロイ方法の詳細が必要な場合は、Sysdig Monitorの公式ドキュメントを確認してください。


SysdigエージェントのPodは、sysdig-agentという名前の DaemonSet によって制御されています。 DaemonSet その性質上、すべてのノードがSysdig Agentポッドのコピーを持っていることを保証します。

$ kubectl get daemonset -n sysdig-agent
NAME                         DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
sysdig-agent                 3         3         3       3            3           <none>          5m
sysdig-agent-node-analyzer   3         3         3       3            3           <none>          5m

エージェントをデプロイしたら – マニフェストをマニュアルで適用したのか、helmチャートでインストールしたのかは関係なく – ポッドが立ち上がるまで数秒待ちます。
$ kubectl get pods -n sysdig-agent
NAME                               READY   STATUS    RESTARTS           AGE
sysdig-agent-d987v                 1/1     Running   0                  42s
sysdig-agent-ffr5j                 1/1     Running   0                  42s
sysdig-agent-node-analyzer-jgtbz   2/3     Running   0                  39s
sysdig-agent-node-analyzer-plrfz   2/3     Running   0                  39s
sysdig-agent-node-analyzer-qglg4   2/3     Running   0                  39s
sysdig-agent-s2nwh                 1/1     Running   0                  42s

エージェントの準備が整い、クラスターからSysdig Monitor SaaSポータルに情報を送信していますが、…

Istioのサービスメッシュを監視したいのですが、Sysdig Monitorで他に何をすればいいのでしょうか?

何もありません!🥳

前のセクションで述べたように、Istioのメトリクスはprometheus.io のアノテーションによってPrometheus形式で公開されています。これは、IstioメトリクスをスクレイピングしたいPrometheusインスタンスのタスクを容易にしてくれます。

では、エージェントはPrometheusのメトリクスエンドポイントからメトリクスをスクレイピングできるのでしょうか?

そうです!🙌。

本当に、軽量なPrometheusサーバーがSysdigエージェントに組み込まれていて、Kubernetesクラスターでメトリクスを公開している異なるエンドポイントから、エージェントがメトリクスを収集できるようになっています。例えば、他のPrometheusインスタンス、Prometheus形式でメトリクスを公開するエンドポイント、メトリクスエクスポーターなどです。

Sysdigを使った監視の設定についてより詳しい情報が必要な場合は、役立つ素晴らしいガイドを用意しました。Sysdig Monitor を使って数ステップでフル機能の監視環境を構築する方法をご覧ください!

Istioサービスメッシュのコントロールプレーンを監視する

Sysdig Monitorは、Istioを監視するためのダッシュボードをすぐに利用できるようにしています。このセクションでは、Istioサービスメッシュコントロールプレーンのダッシュボードについて説明します。

これは、Istioのコントロールプレーンですべてが適切に動作していることを確認するために確認したいダッシュボードです。

Pilotのプッシュとエラーのグラフは、Istio(Pilot)が適切に変更を伝播しているかどうかを判断するのに十分な情報を提供します。

Istioは、xDSと呼ばれるディスカバリーAPIのセットで、Envoyプロキシーを動的に構成します。Envoyのセクションをチェックして、これらの動的な設定を適用している間、どのように実行しているのかを確認します。

最後になりますが、WebhookセクションはGalleyが行う検証およびインジェクションの数を表しています。

Image showing the Istio services dashboard, which gives you a complete view of how your services and applications are behaving within the Istio service mesh.
このダッシュボードで使用されるメトリクスについて詳しく知りたい場合は、Istio監視統合のドキュメントを参照してください。

Istioサービスダッシュボード

Istioサービスダッシュボードは、Istioサービスメッシュ内でサービスやアプリケーションがどのように動作しているかを完全に表示することができます。

HTTP接続の場合、クライアントとサーバーのリクエスト量、それらのリクエスト時間、非5xx HTTPコードレスポンスの割合などを確認することができます。

TCP 接続については、Sysdig Monitor はアウトオブボックスで使えるグラフを提供しており、TCP がバイトを受信および送信したことを確認できます。

Sysdig Monitor provides some out-of-the-box dashboards for monitoring Istio. In this gif, we see the Istio service mesh control plane dashboard.
このダッシュボードで使用されるメトリクスについての詳細は、Istio Envoy監視インテグレーションのドキュメントを確認してください。

Istioワークロードを監視する方法

Istio Workloadダッシュボードは、Istioサービスメッシュの接続量を簡単に発見するために設計されたグラフのコレクションを提供しています。

さらに、応答コード、レイテンシー、成功率など、Istioサービスメッシュで実行されているサービスの健全性に関する情報を提供します。

このダッシュボードのおかげで、Istio上で実行されているワークロードの健全性を簡単に見抜くことができます。レイテンシー、4xx、5xx 応答コードに注目してください。これらのグラフは、アプリケーションの健全性についての洞察を与えてくれます。

The Istio Workload dashboard provides a collection of graphs designed to easily spot the amount of connections in your Istio service mesh.

Istioサービスメッシュの問題のトラブルシューティング

Sysdig Monitor が提供するトラブルシューティング機能を試すときが来ました。

Sysdig Monitorのポータルから、SysdigのAdvisorがどのように問題のトラブルシューティングに役立つかを見ていきましょう。

このテストシナリオでは、HTTP と TCP のトラフィックを生成するためにいくつかのワークロードを実行しました。Bookinfo アプリケーションのサンプルをデプロイし、トラフィックを生成するために curl を無限ループで実行すると、同様のユースケースを簡単に再現することができます。

$ export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
$ export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')
$ export INGRESS_HOST=$(kubectl get po -l istio=ingressgateway -n istio-system -o jsonpath='{.items[0].status.hostIP}')
$ export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
$ while true; do curl -s -o /dev/null "http://$GATEWAY_URL/productpage"; done

しばらくすると、Istioサービスのダッシュボードで、ClientとServerのリクエスト量の減少が報告されるようになります。“Server Success Rate” (非5xx応答)に注目すると、reviews-v3が失敗しているようなことがわかります。

Istio service dashboards reporting Client and Server requests volume drops.
Istio サービスダッシュボードで、クライアントとサーバーのリクエスト量減少を報告しています。

Workload Status & Performance ダッシュボードに移動してみましょう。Bookinfoテストアプリケーションを構成するいくつかのワークロードに問題があることを確認するのに超便利でしょう。

The “Workload Status & Performance” dashboard - super useful for confirming there is a problem in some of the workloads that make up the Bookinfo test application.
メモリのグラフに突出したピークがあるわけではありませんが(直線的に常に成長しているように見えますが)、CPUは月へ向かうロケットのように離陸していきました

Workload Status & Performance ダッシュボード – Bookinfoテストアプリケーションを構成するいくつかのワークロードに問題があることを確認するのに超便利です。
要約すると、reviews v3  ワークロードに問題があるということです。確かに、トラフィックの低下、サーバーの応答失敗などの原因である可能性があります。今のところ、いくつかの手がかりがあるようですが…

この問題の根本的な原因を見つけるために、他に何かできることはありますか?

Advisorで遊んでみましょう!

左のバーメニューの一番上のアイコンから、Advisorにアクセスすることができます。

Advisorセクションで、”Containers “タブをチェックすると、このPodについて以前に見たことのあるデータ(メモリとCPUの使用率)が見つかります。

ツリー上でナビゲートすると、他のプロジェクト/ポッド/コンテナを探索することができます。他のサービス/ポッドに問題がないことを確認するのに役立つ可能性があります。

Image showing the Advisor tab on the Sysdig platform
Processes タブは、Podで実行されているコンテナに関連するプロセスの詳細情報を提供します。このケースでは、Java プロセスがメモリと CPU リソースをすべて消費しているようです。

The Processes tab gives more information on the processes involved with containers running in the pods.
最後に、Sysdig の Advisor を使用して、現在のコンテナログを確認してみましょう。

ビンゴ!です。🎉

問題の根本原因を見つけましたね。Javaアプリケーションは、ログでOutOfMemoryエラーを報告しています。

The Java application in Sysdig Advisor reporting an OutOfMemory error in the log.

ボーナストラック

あなたはすでにトラブルの原因を突き止めました。今回は、OutOfMemoryErrorのために特定のアプリケーションが動作しなくなり、サービス全体が正常に動作しなくなったのです。でも…

もし、また同じようなことが起こったときのために、アラートを設定し、アラートがトリガーされるたびにキャプチャーを作成し、事後分析ができるとしたらどうでしょうか。

reviews-v3アプリケーションが100msに達するか超過するたびに発せられるアラートを作成してみよう。

このアラートは、大量のデータ(システムコール、プロセス、ファイル、使用中のCPUとメモリなど)を含むキャプチャーを自動的にトリガーします。このキャプチャーをSysdig Inspectで使用し、その時に何が起こったかを把握します。

An alert that will trigger a capture automatically, which will include tons of data (syscalls, processes, files, CPU and memory in use, etc).
Sysdig Inspectは、Sysdig Monitorに統合されたオープンソースツールです。コンテナ内の特定の時間に何が起こったかを分析することができます。また、その時間にどのプロセスが動いていたのか、メモリやCPUの消費量、ネットワークデータ、ファイルなどを取得することができます。

このキャプチャーファイルがあれば、問題が発生したときにコンテナで何が起こったかを簡単に、素早く把握することができます。Sysdig Monitorポータルからキャプチャーを開くだけで、Inspectorが新しいUIを提供し、コンテナスナップショットをナビゲートしてくれます。

Sysdig Inspect is an open source tool integrated with Sysdig Monitor. It enables you to analyze what happened for a specific time in a container. Also, it allows you to get which processes were running at that time, memory and CPU consumption, network data, files, and more.Sysdig Inspectは、Sysdig Monitorに統合されたオープンソースのツールです。コンテナ内で特定の時間に何が起こったかを分析することができます。また、その時間に実行されていたプロセス、メモリとCPUの消費量、ネットワークデータ、ファイルなどを取得することができます。

まとめ

Istio service mesh for Kubernetesは、ユーザーに多くの素晴らしい機能を提供します。それには、マイクロサービス用のネットワーク管理、セキュリティ機能、さらにはIstioサービスメッシュのインフラストラクチャーを監視するだけでなく、管理することを可能にするobservabilityスタックも含まれます。

これにより、アプリケーションと Kubernetes がさらに複雑になります。 Istio サービス メッシュの監視はオプションではなく、必須です。 Sysdig Monitor は、お客様が Istio コントロール プレーン、サービス、ワークロードを監視し、問題をリアルタイムでトラブルシューティングするのに役立つ追加機能を提供します。

Sysdig Monitor が Kubernetes クラスターの監視とトラブルシューティングにどのように役立つかについてもっと知りたい場合は、Sysdig Monitor のトライアルページにアクセスして、30 日間の無料アカウントをリクエストしてください。数分で使い始めることができます!