Prometheus は、クラウドネイティブアプリケーション向けのオープンソースのモニタリングツールです。このトピックでは、自社管理の Prometheus インスタンスを Alibaba Cloud Service Mesh (ASM) と統合してメッシュをモニタリングする方法について説明します。Alibaba Cloud の Container Service for Kubernetes (ACK) のオープンソースである ack-prometheus-operator を例として使用します。
前提条件
Container Service for Kubernetes (ACK) クラスターが作成済みであること。詳細については、「ACK マネージドクラスターの作成」をご参照ください。
ASM インスタンスが作成済みであること。詳細については、「ASM インスタンスの作成」をご参照ください。ACK クラスターに Prometheus インスタンスと Grafana インスタンスが作成済みであること。詳細については、「オープンソースの Prometheus を使用したモニタリング」をご参照ください。
ack-prometheus-operator のインストール
このトピックでは、ACK のオープンソースである ack-prometheus-operator を構成例として使用します。別の方法で自社管理の Prometheus インスタンスをクラスターにインストールする場合は、additionalScrapeConfigs フィールドの内容を Prometheus インスタンスの scrape 設定に追加してください。scrape 設定の詳細については、「prometheus_scrape_config」をご参照ください。
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、対象のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
Helm ページで ack-prometheus-operator を見つけ、[操作] 列の 更新 をクリックします。
リリースのアップデート パネルで、YAML テキストボックス内の
additionalScrapeConfigsフィールドを変更し、OK をクリックします。YAML ファイルは長いため、Ctrl+F を押して
additionalScrapeConfigsフィールドを検索できます。変更後のadditionalScrapeConfigsフィールドは次のとおりです:additionalScrapeConfigs: # Scrape config for envoy stats - job_name: 'envoy-stats' metrics_path: /stats/prometheus kubernetes_sd_configs: - role: pod relabel_configs: - source_labels: [__meta_kubernetes_pod_container_port_name] action: keep regex: '.*-envoy-prom' - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port] action: replace regex: ([^:]+)(?::\d+)?;(\d+) replacement: $1:15090 target_label: __address__ - action: labeldrop regex: __meta_kubernetes_pod_label_(.+) - source_labels: [__meta_kubernetes_namespace] action: replace target_label: namespace - source_labels: [__meta_kubernetes_pod_name] action: replace target_label: pod_name
モニタリングデータの生成
データプレーン上のサービスにリクエストを送信します。この例では、Bookinfo アプリケーションを使用します。詳細については、「クイックスタート」をご参照ください。Bookinfo の Productpage ページに移動します。ページを複数回更新します。
結果の確認
Envoy プロキシが指定されたメトリックを収集しているかの確認
次のコマンドを実行します。出力にモニタリングデータが含まれている場合、Envoy プロキシは指定されたメトリックを収集しています。出力が空の場合、Envoy プロキシは指定されたメトリックを収集していません。
details=$(kubectl get pod -l app=details -o jsonpath={.items..metadata.name})
kubectl exec $details -c istio-proxy -- curl -s localhost:15090/stats/prometheus |grep istioPrometheus によってモニタリングされるメトリックの表示
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、対象のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
サービス ページで Prometheus を見つけ、外部 IP アドレス (External IP) 列にあるその IP アドレスをクリックします。
[Prometheus] ページで、検索ボックスに istio_requests_total と入力し、[実行] をクリックします。Prometheus によってモニタリングされるメトリックが表示されます。

メトリックデータの Grafana ダッシュボードの表示
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、対象のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
サービス ページで Grafana を見つけ、外部 IP アドレス (External IP) 列にあるその IP アドレスをクリックします。
Grafana ページで、左上隅にある [Istio Workload Dashboard] を選択します。表示される Grafana ダッシュボードは次の図のとおりです。
