Istioの可観測性をPrometheusを使用して紹介
Istioサービスメッシュは、サイドカープロキシを使用してアプリケーション層からネットワークを抽象化します。Istioを使用することで、インフラストラクチャ全体での通信に対してセキュリティと高度なネットワーキングポリシーを実装できます。
しかし、Istioのもう一つの重要な機能は可観測性です。Istioを使用して、インフラストラクチャ内のすべてのマイクロサービスのパフォーマンスと動作を観察できます(下の画像を参照)。大規模組織におけるサイト信頼性エンジニア(SRE)の主な責任の一つは、CPU使用率、メモリ使用率、レイテンシ、スループットなどのアプリケーションのゴールデンメトリックを監視することです。
本記事では、SREがIstio、Prometheus、Grafanaの3つのオープンソースソフトウェアを統合することでどのような利点を得られるかについて説明します。Istioは最も有名なサービスソフトウェアであり、Prometheusは最も広く使用されている監視ソフトウェアであり、Grafanaは最も有名な可視化ツールです。
注意: 手順はIstio 1.17.Xでテストされています
Istio、Prometheus、Grafanaの設定のビデオを視聴
ビデオの手順に従いたい場合は、ビデオを視聴してください:
ステップ1: Istioのアドオンに移動し、PrometheusおよびGrafanaのYAMLファイルを適用
まず、コマンドを使用してIstioディレクトリのアドオンフォルダーに移動します。私は1.17.1を使用しているため、私のパスはistio-1.17.1/samples/addons
です。
Istioでは、Grafana、Prometheus、Jaeger、Kialiなどを設定するためのいくつかのYAMLファイルが既に提供されています。以下のコマンドを使用してPrometheusを設定できます。
kubectl apply -f prometheus.yaml
kubectl apply -f grafana.yaml
これらのアドオンYAMLはデフォルトでistio-system
名前空間に適用されます。

ステップ2: 新しいサービスをデプロイし、Istio Ingress Gatewayをポートフォワードする
動作モデルを試すために、httpbin
サービスをIstio対応の名前空間にデプロイします。サービスからのトラフィックを受け取るためにIstio ingress gatewayのオブジェクトを作成します。
また、Istio ingress gatewayを特定のポート7777にポートフォワードします。

localhost:7777
で以下の画面が表示されるはずです。

ステップ3: PrometheusとGrafanaダッシュボードを開く
以下のコマンドを使用してPrometheusダッシュボードを開くことができます。
istioctl dashboard prometheus
istioctl dashboard grafana
GrafanaとPrometheusの両方がローカルホストで開きます。

ステップ4: PostmanからHTTPリクエストを作成する
httpbin
サービスがトラフィック負荷時にCPUやメモリをどのように消費するかを確認します。Postmanアプリからlocalhost:7777
に対していくつかのGET
およびPOST
リクエストを作成します。

一度GET
またはPOST
リクエストをhttpbin
サービスに複数回送信すると、リソースの利用が発生し、Grafanaでそれらを確認できます。しかし最初に、PrometheusとGrafanaでhttpbin
サービスのメトリクスを設定する必要があります。
ステップ5: Prometheusでのメトリクス設定
Kubernetesリソースに関連する様々なメトリクスを選択できます。例えばAPIサーバー、アプリケーション、ワークロード、envoyなどです。ここでは、container_memory_working_set_bytes
メトリクスを設定に選択します。
Prometheusアプリケーションで、次の検索語句を使用してメトリクスをスクレイプする名前空間を選択します: container_memory_working_set_bytes { namespace= “istio-telemetry”}
(istio-telemetry
はhttpbin
サービスがデプロイされているIstio対応の名前空間名です)
このクエリを実行するだけで、名前空間のメモリが取得できます。ポッドのメモリ使用量を分析したいので、各ポッドのメモリ使用量を合計して、ポッドごとにグループ化することができます。次のクエリで目的の結果を得ることができます: sum(container_memory_working_set_bytes{namespace=”istio-telemetry”}) by (pod)

注意: Prometheusはメトリックデータのフィルタリング、スライシング、ダイシングに多くの柔軟性を提供します。この記事の中心的なアイデアは、IstioがメトリクスをエミットしてPrometheusに送信する能力を示すことでした
ステップ6: GrafanaでのIstioメトリクスグラフの設定
こんにちは、Prometheusでクエリsum(container_memory_working_set_bytes{namespace="istio-telemetry"}) by (pod)
を簡単に取り込んで、時間の経過に沿ってグラフを描画できます。Grafanaで新しいダッシュボードを作成し、クエリをメトリクスブラウザに貼り付けるだけです。Grafanaは時系列グラフを描画します。適切な名前、凡例、タイトルでグラフを編集して、Opsチームの他の関係者と共有できます。

PrometheusメトリクスをGrafanaで表示するためのデータの調整やカスタマイズ方法はいくつかあります。企業のニーズに基づいてすべてのカスタマイズを選択できます。動画でいくつかの実験を行いましたので、ご覧ください。
結論
Istioサービスメッシュは、インフラ全体のオブザベリビリティを提供するのに非常に強力です。この記事では、Istio、Prometheus、Grafanaを使用したメトリクススクレイピングと可視化の小さなユースケースを紹介しました。Istioを使用してログのロギングやトレース、リアルタイムトラフィックを実行できます。それらのトピックについては、次のブログで説明します。
Source:
https://dzone.com/articles/how-to-configure-istio-prometheus-and-grafana-for-monitoring