サイドカーであるプロキシ(Envoy)が様々なメトリクスを ⾃動的にエクスポート • Prometheus/Grafanaを利⽤してメトリクスを即時 に可視化 • Envoyが15090ポートで公開 • EnvoyFilterを利⽤して独⾃のメトリクスを定義す ることも可能(本⽇は割愛) トレーシング • プロキシ(Envoy)が⾃動的にヘッダー (b3-propagation) の付与とスパン(トレース間隔)作成を実施 • Jaegerなどでトレーシング情報を即時に可視化 • システム全体のトレースするにはアプリケーション 側でHTTPヘッダーの伝播が必須 Istioを利⽤してできること $ kubectl exec -it deploy/webapp -c istio-proxy -- curl ¥ localhost:15090/stats/prometheus ... envoy_cluster_assignment_stale{cluster_name=" outbound|80||catalog.istioinaction.svc.cluster.local"} 0 envoy_cluster_assignment_stale{cluster_name="xds-grpc"} 0 envoy_cluster_assignment_timeout_received{cluster_name=" outbound|80||catalog.istioinaction.svc.cluster.local"} 0 envoy_cluster_assignment_timeout_received{cluster_name="xds-grpc"} … $ curl -H "Host: httpbin.io" http://localhost/headers …. "X-B3-Sampled": "1", # トレーシングヘッダー “X-B3-Spanid”: “17ed6f800f125ecb”, # トレーシングヘッダー "X-B3-Traceid": "05516f0b84c9de6817ed6f800f125ecb", # トレーシングヘッダー "X-Envoy-Attempt-Count": "1", ” "X-Envoy-Decorator-Operation": "<omitted>” …. Envoyのメトリクスエンドポイントにアクセスした場合のイメージ 任意のサービスにアクセスした場合のHTTPヘッダー Observability 参考:https://istio.io/latest/docs/tasks/observability/distributed-tracing/overview/