Google Cloud コンソールの Anthos Service Mesh ページでは、サマリーと詳細の両方の指標、チャート、グラフを表示し、サービスの挙動をモニタリングできます。サービス全体の状態をモニタリングするだけでなく、特定のサービスをドリルダウンしてサービスレベル目標(SLO)を設定できます。また、問題のトラブルシューティングを行うこともできます。
SLO とサービスのステータス サマリーの表示
Anthos Service Mesh ページが入口になります。ページの上部にアラートと SLO のサマリーが表示されます。
[SLO ステータス] セクションの下に、サービス メッシュ内のサービスの健全性のサマリーが表示されます。
サービス名の横にあるアイコンは、サービスの SLO のステータスを示します。特定のサービスの詳細をモニタリングまたは表示するには、サービス名をクリックします。フィルタを適用すると、テーブルに表示されるサービスを制御できます。
- [SLO ステータス] セクションの [フィルタ条件] リンクをクリックして、テーブルに該当するサービスのみを表示します。たとえば、SLO が設定されていないサービスのみを表示するようにテーブルをフィルタリングできます。
- テーブルの左上隅にある filter_list [フィルタ サービス] をクリックして、追加の条件を適用します。
ウィンドウ右上隅にあるコントロールを使用すると、次の操作を行うことができます。
- [期間] プルダウン リストをクリックすると、特定の期間のステータス情報を表示できます。
- [トポロジ] をクリックすると、サービスグラフが表示されます。
- [テーブル] をクリックすると、テーブルビューに戻ります。
サービスグラフの確認
サービス トポロジのグラフには、次の情報を確認できます。
- メッシュ サービス。
- これらのサービスをサポートする Kubernetes ワークロード。
- サービス間の関係。
以下のスクリーンショットでは、フロントエンド サービスが単一のフロントエンド Kubernetes ワークロードを基盤としています。ワークロードは他の複数のサービスにリクエストを送信します。サービスの横にあるアイコンは SLO のステータスを表しています。これは、テーブルビューに表示されるアイコンと同じです。
サービス アイコンをクリックすると、サービスの詳細と主な指標を示すカードが表示されます。このカードには、特定のサービスの概要ページに移動するリンクも表示されます。
グラフを操作するには、いくつかの方法があります。
- グラフ内を移動するには、クリックして背景をドラッグします。
- グラフを拡大するには、マウスホイールを使用します。
- グラフ内のサービスやワークロードを見やすい位置に移動するには、グラフノードをクリックしてドラッグします。
ワークロード アイコンをポイントし、アイコンの右上に表示されるプラス記号をクリックすると、ワークロードの基盤となるコンポーネントを表示できます。プラス記号をさらに数回クリックすると、ワークロードから Deployment、レプリカセット、Pod、コンテナにドリルダウンできます。
サービスとその通信パターンの変化に合わせてサービスグラフの表示も変わります。ページの下部にあるタイムラインを使用して、グラフの状態を表示する時点を定義できます。凡例にグラフの間隔が表示されます。
通信関係は、観測されたネットワーク トラフィックに基づいて表示されます。指定された時間にサービスが通信を行っていない場合、これらのサービスの間にエッジは存在しません。
右側のタイムラインの上には、[時間差分比較を有効にする] アイコン が表示されます。
このアイコンをクリックすると、グラフが差分モードになり、グラフを 2 つの時点で比較できます。
差分モードで アイコンを使用すると、表示を切り替えることができます。
比較する 2 つの時点は、ウィンドウの下部にあるタイムラインで制御します。この 2 つのスライダーを調整して期間を変更します。
特定のサービスのモニタリング
[サービス メッシュ] ページで、テーブルビューまたはトポロジビューでモニタリングするサービスを選択できます。サービスを選択すると、左側のナビゲーション バーに次のページへのリンクが表示されます。
[概要] ページ。SLO のステータス、主要な指標、サービスの詳細が表示されます。
[健全性] ページ。SLO の詳細が表示されます。
[指標] ページ。トラフィックとインフラストラクチャの主要な指標がグラフで表示されます。クラスタや Pod など、多くの方法で指標を分類できます。
[接続サービス] ページ。受信リクエストと送信リクエストの詳細が表示されます。
[診断] ページ。エラーログが表示されます。
[インフラストラクチャ] ページ。各 Pod の主な指標と詳細が表示されます。Pod 名をクリックすると、Google Cloud コンソールの [ワークロード] ページに移動します。
タイムラインの操作
特定のサービスの各ページの上部で [タイムスパン] プルダウン リストをクリックすると、特定の期間の情報が表示されます。
カスタム時間を指定するには、access_time(タイムラインの表示)をクリックします。
タイムラインを使用すると、ページに適用する時間間隔を絞り込むことができます。タイムラインに表示される合計期間は、[期間] プルダウン リストで指定します。新しい期間を選択すると、ページに表示される期間、タイムラインなどの項目が更新されます。たとえば、[指標] ページのグラフには、選択した期間に対応するデータが表示されます。青いスライダーをドラッグすると、さらに細かく設定できます。
Cloud Logging へのアクセス
Anthos Service Mesh ページには、Cloud Logging への次のリンクがあります。
[指標] ページで、filter_list(フィルタの選択)リンクの下にある [トラフィック ログを表示] をクリックして、サービスの指定期間内のすべてのログを表示します。
[診断] ページのウィンドウの右上隅にある [Logging で開く] リンクをクリックすると、指定した期間内のエラーログを確認できます。
トラフィック ログは server-accesslog-stackdriver という名前で、k8s_container モニタリング対象リソースに接続されます。トラフィック ログには次の情報が記録されます。
ID、URL、サイズ、レイテンシ、共通ヘッダーなどの HTTP リクエスト プロパティ。
ソースと宛先のワークロードの情報(名前、名前空間、ID、共通ラベルなど)。
トレースが有効な場合は、トレース情報(サンプリング、トレース ID、スパン ID など)。
トラフィック ログはさまざまな方法で使用できます。例:
Cloud Trace と統合する。Cloud Trace は、Anthos Service Mesh のオプション機能です。
トラフィック ログを BigQuery にエクスポートします。ここで、
select all requests take more than 5 seconds
のようなクエリを実行できます。ログベースの指標を作成する。
ログエントリは次のようになります。
{ insertId: "1awb4hug5pos2qi" httpRequest: { requestMethod: "GET" requestUrl: "YOUR-INGRESS/productpage" requestSize: "952" status: 200 responseSize: "5875" remoteIp: "10.8.0.44:0" serverIp: "10.56.4.25:9080" latency: "1.587232023s" protocol: "http" } resource: { type: "k8s_container" labels: { location: "us-central1-a" project_id: "YOUR-PROJECT" pod_name: "productpage-v1-76589d9fdc-ptnt9" cluster_name: "YOUR-CLUSTER-NAME" container_name: "productpage" namespace_name: "default" } } timestamp: "2020-04-28T19:55:21.056759Z" severity: "INFO" labels: { destination_principal: "spiffe://cluster.local/ns/default/sa/bookinfo-productpage" response_flag: "-" destination_service_host: "productpage.default.svc.cluster.local" source_app: "istio-ingressgateway" service_authentication_policy: "MUTUAL_TLS" source_name: "istio-ingressgateway-5ff85d8dd8-mwplb" mesh_uid: "YOUR-MESH-UID" request_id: "021ce752-9001-4ac6-b6d6-3b15f5d3632" destination_namespace: "default" source_principal: "spiffe://cluster.local/ns/istio-system/sa/istio-ingressgateway-service-account" destination_workload: "productpage-v1" destination_version: "v1" source_namespace: "istio-system" source_workload: "istio-ingressgateway" destination_name: "productpage-v1-76589d9fdc-ptnt9" destination_app: "productpage" } trace: "projects/YOUR-PROJECT/traces/d4197f59b7a43e3aeff3571bac99d536" receiveTimestamp: "2020-04-29T03:07:14.362416217Z" spanId: "43226343ca2bb2b1" traceSampled: true logName: "projects/YOUR-PROJECT/logs/server-accesslog-stackdriver" receiveTimestamp: "2020-04-28T19:55:32.185229100Z" }