このトピックでは、Container Service for Kubernetes (ACK) クラスターのオープンソースコンポーネントである ack-prometheus-operator を例に、自己管理型 Prometheus を Alibaba Cloud Service Mesh (ASM) インスタンスと連携させてメッシュ監視を行う方法について説明します。
前提条件
-
ACK クラスターが利用可能です。詳細については、「ACK マネージドクラスターを作成する」をご参照ください。
-
ASM インスタンスが利用可能です。詳細については、「ASM インスタンスの作成」をご参照ください。Prometheus と Grafana のインスタンスが ACK クラスターにインストールされています。詳細については、「オープンソースの Prometheus モニタリング」をご参照ください。
ack-prometheus-operator のインストール
このトピックでは、ACK クラスターのオープンソースコンポーネントである ack-prometheus-operator を例に説明します。他の方法でクラスターに自己管理型 Prometheus をインストールする場合は、additionalScrapeConfigs の内容を Prometheus インスタンスのスクレイプ設定に追加する必要があります。スクレイプ設定の詳細については、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 アプリケーションの製品ページに移動し、数回リフレッシュしてメトリックを生成します。ページに、書籍 The Comedy of Errors の詳細として 書籍の詳細 (タイプ、ページ数、出版社、言語、ISBN など) と 書籍レビュー (Reviewer1 による 5 つ星レビューと Reviewer2 による 4 つ星レビュー) が表示された場合、サンプルアプリケーションは正しく実行され、メトリックを生成しています。
結果の検証
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 istio
Prometheus でのメッシュメトリクスの表示
ACK コンソールにログオンします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、お使いのクラスターの名前をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
-
サービス ページで Prometheus サービスを探し、その外部 IP アドレス (External IP) をクリックします。
-
Prometheus ページで、式入力ボックスに
istio_requests_totalを入力し、[実行] をクリックします。 結果テーブルには 2 つのレコードが含まれる場合があります。1 つはresponse_codeが503(値: 1)、source_appがreviews、source_versionがv2、destination_serviceがratings.bookinfo.svc.cluster.localで、もう 1 つはresponse_codeが200(値: 19)、source_appがreviews、source_versionがv2、destination_appがratings、destination_versionがv1のレコードです。
Grafana でのメッシュメトリクスの表示
ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、クラスターの名前をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
-
サービス ページで、Grafana を検索し、その 外部 IP アドレス (External IP) をクリックします。
-
Grafana ページで、[Istio ワークロードダッシュボード] を選択します。
