すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:オープンソース Prometheus を使用した ACK クラスターのモニタリング

最終更新日:Jun 18, 2026

Prometheus はクラウドネイティブアプリケーション向けのオープンソースモニタリングツールです。本トピックでは、ACK クラスターに Prometheus をデプロイする方法について説明します。

背景情報

本トピックでは、Kubernetes クラスター内のシステムコンポーネントおよびリソースエンティティをモニタリングする方法について説明します。モニタリング対象は以下の 2 種類に分類されます。

  • リソースモニタリング:ノード、クラスター、Pod のリソース使用量を追跡します。

  • アプリケーションモニタリング:リアルタイムユーザー数などのアプリケーション内部メトリックを追跡します。アプリケーションレベルでのモニタリングとアラートを有効にするには、ポートを公開する必要があります。

モニタリング対象は以下のとおりです。

  • システムコンポーネント:API Server、cloud-controller-manager、etcd などの Kubernetes 組み込みコンポーネント。それぞれの設定ファイルでモニタリングを構成します。

  • 静的リソースエンティティ:ノードステータスやカーネルイベントなどのリソース。設定ファイルで指定することでモニタリングを有効にします。

  • 動的リソースエンティティ:Deployment、DaemonSet、Pod などの Kubernetes ワークロードオブジェクト。これらをモニタリングするには Prometheus をデプロイします。

  • カスタムアプリケーション:ポートを公開し、Prometheus を使用してアプリケーションからカスタムメトリックを収集します。

ステップ 1:オープンソース Prometheus のデプロイ

  1. [ACK コンソール] にログインします。左側のナビゲーションウィンドウで、[クラスターリスト] をクリックします。

  2. [クラスターリスト] ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウで、[アプリケーション > Helm] をクリックします。

  3. [Helm] ページで、[デプロイ] をクリックします。チャートセクションで、[ack-prometheus-operator] を検索して選択し、デフォルト設定を維持したまま、[次へ] をクリックします。

    • このコンポーネントはデフォルトで monitoring 名前空間に、コンポーネント名と同じ名前でインストールされます。

    • 必要に応じて、アプリケーション名および名前空間をカスタマイズできます。

  4. [パラメーター] ページで、チャートバージョン 12.0.0 を選択し、必要なパラメーターを設定してから [OK] をクリックします。

    バージョン 12.0.0 では、組み込み機能によるアラート設定がサポートされています。

    オプションのパラメーター:

    インストール後は、[Helm] ページの Helm チャートリストでコンポーネントのステータスを確認してください。

ステップ 2: Prometheus 収集タスクの確認

  1. [ACK コンソール] にログインします。左側のナビゲーションウィンドウで、[クラスターリスト] をクリックします。

  2. [クラスターリスト] ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウで、[ネットワーク > サービス] をクリックします。

  3. [サービス] ページで、monitoring 名前空間(ack-prometheus-operator がデプロイされている名前空間)を選択します。ack-prometheus-operator-prometheus の [操作] 列で、[更新] をクリックします。

  4. ダイアログボックスで、タイプを [ロードバランサ (LoadBalancer)] に設定します。[リソースの新規作成] を選択し、[アクセス方式] を [パブリックアクセス] に、[課金方法] を [従量課金 (PayByCLCU)] に設定して、[OK] をクリックします。

    詳細については、「CLB 課金概要」をご参照ください。
  5. 更新後、外部 IP アドレスをコピーします。Prometheus UI を <external_IP_address>:9090(例:47.XX.XX.12:9090)で開きます。

  6. Prometheus UI で、[] に移動し、すべてのデータ収集タスクを確認します。

    すべてのタスクが [UP] と表示されていれば、データ収集が正常に実行されています。

    image

  7. メニューバーで、[Alerts] をクリックし、現在のアラートルールを確認します。

    Alerts

ステップ 3: Grafana での集計データの確認

  1. [ACK コンソール] にログインします。左側のナビゲーションウィンドウで、[クラスターリスト] をクリックします。

  2. [クラスターリスト] ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウで、[ネットワーク > サービス] をクリックします。

  3. [サービス] ページで、ack-prometheus-operator がデプロイされている名前空間(デフォルトは monitoring)を選択します。ack-prometheus-operator-grafana の [操作] 列で、[更新] をクリックします。

  4. ダイアログボックスで、タイプを [ロードバランサ (LoadBalancer)] に設定します。[リソースの新規作成] を選択し、[アクセス方式] を [パブリックアクセス] に、[課金方法] を [従量課金 (PayByCLCU)] に設定して、[OK] をクリックします。

    詳細については、「CLB 課金概要」をご参照ください。
  5. 更新後、外部 IP アドレスをコピーします。Grafana ダッシュボードを <external_IP_address>(デフォルトポート:80、例:47.XX.XX.12)で開きます。

    Dashboard

アラート設定

[ack-prometheus-operator] コンポーネントは、DingTalk およびメールアラートをサポートしています。

  1. [ACK コンソール] にログインします。左側のナビゲーションウィンドウで、[クラスターリスト] をクリックします。

  2. [クラスターリスト] ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウで、[アプリケーション > Helm] をクリックします。

  3. [作成する] をクリックし、ack-prometheus-operator を見つけて [次へ] に進みます。[パラメーター] ページで、チャートバージョンを選択し、以下のようにパラメーターを構成します。

    ack-prometheus-operator がすでにインストール済みの場合は、Helm チャートリストでその名前をクリックし、[パラメーター] をクリックして構成を更新してください。

DingTalk アラートの設定

  1. 設定ファイルで、dingtalk フィールドを見つけ、enabledtrue に設定します。

  2. token フィールドに、DingTalk Webhook URL を入力します。

    Webhook URL の取得方法については、「DingTalk チャットボットを使用した Kubernetes モニタリングとアラート通知」をご参照ください。
  3. alertmanagerconfig フィールドで、receiver 構成を見つけ、receivers で定義した DingTalk アラート名を入力します。デフォルト名は webhook です。

    複数の DingTalk チャットボットを設定する例

    DingTalk チャットボットが 2 つある場合、以下の手順に従います。

    1. DingTalk の token 構成を置き換えます。

      DingTalk チャットボットの設定で、Webhook URL を dingtalk1 および dingtalk2 のアドレスに置き換えます。図中の https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxx を、実際の Webhook URL に置き換えてください。

      Token configuration

    2. receivers を変更します。

      alertmanagerconfig フィールドで、receiver を見つけ、receivers 構成で定義した対応する DingTalk アラート名を入力します。この例では、名前は webhook1 および webhook2 です。

    3. URL 値を変更します。

      URL の値を、対応する DingTalk Webhook 名に置き換えます。この例では、名前は dingtalk1 および dingtalk2 です。

      Webhook configuration

    説明

    DingTalk チャットボットをさらに追加する場合は、各 Webhook 構成を順番に追加してください。

メールアラートの設定

  1. ハイライトされたセクションに、メールの詳細情報を入力します。

  2. alertmanagerconfig フィールドで、receiver を見つけ、receivers で定義したメールアラート名を入力します。デフォルト名は mail です。

Email alerts

アラート受信者テンプレート

alertmanager 構成の templateFiles セクションで、アラートテンプレートをカスタマイズできます。Template settings

Prometheus へのカスタム ConfigMap のマウント

special-config という名前の ConfigMap を使用して、設定ファイルをマウントし、Pod 起動時に --config.file パラメーターとして指定します。

  1. ConfigMap を作成します。

    ConfigMap の例を表示

    1743645540037_107960FD-B9BA-4aa1-8001-7A97ECCE8A65

  2. ConfigMap をマウントします。

    [パラメーター] ページで、configmaps フィールドに以下を追加し、ConfigMap を Prometheus Pod 内の /etc/prometheus/configmaps/ にマウントします。

    Update configuration

    prometheusconfigmaps 構成例:

    39d5cfa9988ab47202e9a160bb890c17

Grafana 構成

Grafana へのダッシュボードファイルのマウント

Grafana Pod にダッシュボード ConfigMap をマウントするには、[パラメーター] ウィザードの extraConfigmapMounts フィールドを使用します。Dashboard mount configuration 以下の点を確認してください。

  • ダッシュボードがクラスター内に ConfigMap として存在し、そのラベルが他の ConfigMap の形式と一致していること。

  • Grafana 構成の extraConfigmapMounts フィールドに、ダッシュボードの ConfigMap およびマウント情報が含まれていること。

    • mountPath/tmp/dashboards/ に設定します。

    • ConfigMap: カスタム ConfigMap の名前。

    • name: ダッシュボードの JSON ファイル名。

ダッシュボード永続化の有効化

バックアップのためにダッシュボードを JSON ファイルとしてエクスポートします。「Grafana Export」をご参照ください。

  1. [ACK コンソール] にログインします。左側のナビゲーションウィンドウで、[クラスターリスト] をクリックします。

  2. [クラスターリスト] ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウで、[アプリケーション > Helm] をクリックします。

  3. ack-prometheus-operator を見つけて、[更新] をクリックします。grafana フィールドで、以下のように persistence オプションを構成します。

    Grafana persistence

関連操作

オープンソース Prometheus のアンインストール

残留リソースを防ぐため、お使いの Helm チャートバージョンに応じた手順に従ってください。Helm リリース、名前空間、CRD、kubelet サービスを手動でクリーンアップする必要があります。

kubelet サービスはアンインストール時に自動的に削除されません。これはコミュニティで知られている問題 (#1523) です。以下に示すように手動で削除してください。

Chart v12.0.0

コンソール

  1. [ACK コンソール] にログインします。左側のナビゲーションウィンドウで、[クラスターリスト] をクリックします。

  2. [クラスターリスト] ページで、ご利用のクラスター名をクリックし、左側のナビゲーションウィンドウから以下の操作を実行します。

    • Helm リリースのアンインストール: [アプリケーション > Helm] を選択します。Helm リリースリストで ack-prometheus-operator エントリを見つけ、[削除] を [アクション] 列でクリックし、削除を完了します。リリースレコードをクリアしてください。

    • 名前空間の削除: [名前空間とクォータ] をクリックします。名前空間リストで monitoring を見つけて選択し、削除します。

    • CustomResourceDefinitions (CRD) の削除: [ワークロード > カスタムリソース] に移動し、[CRD] タブをクリックします。monitoring.coreos.com API グループの以下の CRD リソースをすべて削除します。

      • AlertmanagerConfig

      • Alertmanager

      • PodMonitor

      • Probe

      • Prometheus

      • PrometheusRule

      • ServiceMonitor

      • ThanosRuler

    • kubelet サービスの削除: [ネットワーク > サービス] を選択します。kube-system 名前空間で ack-prometheus-operator-kubelet を見つけて削除します。

Kubectl

  • Helm リリースのアンインストール

    helm uninstall ack-prometheus-operator -n monitoring
  • 名前空間の削除

    kubectl delete namespace monitoring
  • CRD の削除

    kubectl delete crd alertmanagerconfigs.monitoring.coreos.com
    kubectl delete crd alertmanagers.monitoring.coreos.com
    kubectl delete crd podmonitors.monitoring.coreos.com
    kubectl delete crd probes.monitoring.coreos.com
    kubectl delete crd prometheuses.monitoring.coreos.com
    kubectl delete crd prometheusrules.monitoring.coreos.com
    kubectl delete crd servicemonitors.monitoring.coreos.com
    kubectl delete crd thanosrulers.monitoring.coreos.com
  • kubelet サービスの削除

    kubectl delete service ack-prometheus-operator-kubelet -n kube-system

Chart v65.1.1

コンソール

  1. [ACK コンソール] にログインします。左側のナビゲーションウィンドウで、[クラスターリスト] をクリックします。

  2. [クラスターリスト] ページで、ご利用のクラスター名をクリックし、左側のナビゲーションウィンドウから以下の操作を実行します。

    • Helm リリースのアンインストール: [アプリケーション > Helm] を選択します。Helm リリースリストで ack-prometheus-operator エントリを見つけ、[削除] を [アクション] 列でクリックし、削除を完了します。リリースレコードをクリアしてください。

    • 名前空間の削除: [名前空間とクォータ] をクリックします。名前空間リストで monitoring を見つけて選択し、削除します。

    • CustomResourceDefinitions (CRD) の削除: [ワークロード > カスタムリソース] に移動し、[CRD] タブをクリックします。monitoring.coreos.com API グループの以下の CRD リソースをすべて削除します。

      • AlertmanagerConfig

      • Alertmanager

      • PodMonitor

      • Probe

      • PrometheusAgent

      • Prometheus

      • PrometheusRule

      • ScrapeConfig

      • ServiceMonitor

      • ThanosRuler

    • kubelet サービスの削除: [ネットワーク > サービス] を選択します。kube-system 名前空間で ack-prometheus-operator-kubelet を見つけて削除します。

Kubectl

  • Helm リリースのアンインストール

    helm uninstall ack-prometheus-operator -n monitoring
  • 名前空間の削除

    kubectl delete namespace monitoring
  • CRD の削除

    kubectl delete crd alertmanagerconfigs.monitoring.coreos.com
    kubectl delete crd alertmanagers.monitoring.coreos.com
    kubectl delete crd podmonitors.monitoring.coreos.com
    kubectl delete crd probes.monitoring.coreos.com
    kubectl delete crd prometheusagents.monitoring.coreos.com
    kubectl delete crd prometheuses.monitoring.coreos.com
    kubectl delete crd prometheusrules.monitoring.coreos.com
    kubectl delete crd scrapeconfigs.monitoring.coreos.com
    kubectl delete crd servicemonitors.monitoring.coreos.com
    kubectl delete crd thanosrulers.monitoring.coreos.com
  • kubelet サービスの削除

    kubectl delete service ack-prometheus-operator-kubelet -n kube-system

アラートサイレンスの設定

サイレンスルールは、サイレンス期間が終了するか、ルールが削除されるまで、一致するアラート通知を抑制します。

  1. Alertmanager をローカルポート 9093 で公開します。

    kubectl --address 0.0.0.0 port-forward svc/alertmanager-operated 9093 -n monitoring
  2. ECS インスタンスに Elastic IP アドレス (EIP) を関連付け<EIP>:9093 で Alertmanager にアクセスします。

    セキュリティグループで、ポート 9093 に対するローカル IP からのトラフィックを許可していることを確認してください。「セキュリティグループルールの追加」をご参照ください。
  3. [Silence] をクリックし、アラートサイレンスを設定します。

    image

よくある質問

DingTalk 設定後にアラートが届かない

  1. DingTalk チャットボットの Webhook URL を取得します。「イベントモニタリング」をご参照ください。

  2. dingtalk フィールドを見つけ、enabled を true に設定し、Token フィールドに DingTalk Webhook URL を入力します。「アラート設定」の「DingTalk アラートの設定」をご参照ください。

prometheus-operator デプロイ時のエラー

以下のエラーメッセージが表示されます。

Can't install release with errors: rpc error: code = Unknown desc = object is being deleted: customresourcedefinitions.apiextensions.k8s.io "xxxxxxxx.monitoring.coreos.com" already exists

このエラーは、以前のデプロイメントの CRD がクリーンアップされていないために発生します。CRD を削除してからコンポーネントを再デプロイしてください。

kubectl delete crd prometheuses.monitoring.coreos.com
kubectl delete crd prometheusrules.monitoring.coreos.com
kubectl delete crd servicemonitors.monitoring.coreos.com
kubectl delete crd alertmanagers.monitoring.coreos.com

メールアラートが機能しない

メールアラートは、smtp_auth_password にログインパスワードではなく認証コードを入力していない場合や、SMTP サーバーアドレスにポート番号が含まれていない場合に失敗することがあります。

YAML 更新をクリックするとエラーが発生する: 現在クラスターは一時的に利用できません。後でもう一度お試しください。

これは Tiller 構成ファイルが大きすぎてクラスターにアクセスできなくなるために発生します。コメントを削除してファイルサイズを小さくし、ConfigMap としてマウントしてください。prometheus-operator は prometheus および alertmanager Pod のみ ConfigMap マウントをサポートしています。「Prometheus へのカスタム ConfigMap のマウント」をご参照ください。

デプロイ後に機能を有効化する方法

prometheus-operator デプロイ後に機能を有効化できます。クラスター詳細ページで、[アプリケーション > Helm] を選択します。[ack-prometheus-operator] を見つけて、[操作] 列の [更新] をクリックします。有効化する機能を見つけ、構成してから [OK] をクリックします。

TSDB と Alibaba Cloud ディスクの選択

TSDB は Alibaba Cloud ディスクよりも少ないリージョンで利用可能です。データ保持ポリシー:Data retention policy

Grafana ダッシュボードの表示に関する問題

クラスター詳細ページで、[アプリケーション > Helm] を選択します。[ack-prometheus-operator] を見つけて、[操作] 列の [更新] をクリックします。clusterVersion がご利用のクラスターバージョンと一致していることを確認してください。v1.16 より前のクラスターの場合は 1.14.8-aliyun.1 を、v1.16 以降の場合は 1.16.6-aliyun.1 を入力します。

名前空間を削除した後の再インストールが失敗する

名前空間のみを削除しても、構成が残留することがあります。以下のリソースをクリーンアップしてください。

  1. RBAC 権限の削除。

    1. ClusterRole の削除。

      kubectl delete ClusterRole ack-prometheus-operator-grafana-clusterrole
      kubectl delete ClusterRole ack-prometheus-operator-kube-state-metrics
      kubectl delete ClusterRole psp-ack-prometheus-operator-kube-state-metrics
      kubectl delete ClusterRole psp-ack-prometheus-operator-prometheus-node-exporter
      kubectl delete ClusterRole ack-prometheus-operator-operator
      kubectl delete ClusterRole ack-prometheus-operator-operator-psp
      kubectl delete ClusterRole ack-prometheus-operator-prometheus
      kubectl delete ClusterRole ack-prometheus-operator-prometheus-psp
    2. ClusterRoleBinding の削除。

      kubectl delete ClusterRoleBinding ack-prometheus-operator-grafana-clusterrolebinding
      kubectl delete ClusterRoleBinding ack-prometheus-operator-kube-state-metrics
      kubectl delete ClusterRoleBinding psp-ack-prometheus-operator-kube-state-metrics
      kubectl delete ClusterRoleBinding psp-ack-prometheus-operator-prometheus-node-exporter
      kubectl delete ClusterRoleBinding ack-prometheus-operator-operator
      kubectl delete ClusterRoleBinding ack-prometheus-operator-operator-psp
      kubectl delete ClusterRoleBinding ack-prometheus-operator-prometheus
      kubectl delete ClusterRoleBinding ack-prometheus-operator-prometheus-psp
  2. CRD の削除。

    kubectl delete crd alertmanagerconfigs.monitoring.coreos.com
    kubectl delete crd alertmanagers.monitoring.coreos.com
    kubectl delete crd podmonitors.monitoring.coreos.com
    kubectl delete crd probes.monitoring.coreos.com
    kubectl delete crd prometheuses.monitoring.coreos.com
    kubectl delete crd prometheusrules.monitoring.coreos.com
    kubectl delete crd servicemonitors.monitoring.coreos.com
    kubectl delete crd thanosrulers.monitoring.coreos.com