Managed Service for Prometheus を使用して、ACK Edge クラスター の定義済みダッシュボードとパフォーマンスメトリックを表示できます。 このトピックでは、ACK Edge クラスター を Managed Service for Prometheus に接続する方法について説明します。
前提条件
バージョン 1.18.8-aliyunedge.1 以降の ACK Edge クラスター。
ACK Edge クラスター の ack-arms-prometheus コンポーネントがバージョン 1.1.4 以降であることを確認してください。 そうでない場合は、ack-arms-prometheus コンポーネントをアップグレードしてください。
クラスターのバージョンが 1.26 より前の場合は、
kube-system/edge-tunnel-server-cfgConfigMap で Node Exporter のポート 9100 と GPU Exporter のポート 9445 のポートフォワーディングが有効になっていることを確認してください。 次の設定が必要です。http-proxy-ports: 9445 https-proxy-ports: 9100
Managed Service for Prometheus 監視の概要
Managed Service for Prometheus は、オープンソースの Prometheus エコシステムと完全に統合されています。 幅広いコンポーネントの監視をサポートし、さまざまな定義済みダッシュボードとフルマネージドの Prometheus サービスを提供します。 Managed Service for Prometheus を使用すると、独自の監視システムを構築したり、データストレージ、データ視覚化、運用保守などの根本的な問題を管理したりする必要がありません。
ACK Edge クラスターはコンテナモニタリング ベーシック版をサポートしています。
Managed Service for Prometheus での Grafana ダッシュボードの表示
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスターリスト ページで、対象のクラスターの名前をクリックします。 左側メニューで、 を選択します。
説明初めてログインする場合は、画面の指示に従い、コンポーネントの下にある インストール をクリックします。 コンソールは自動的にアドオンをインストールし、ダッシュボードをチェックします。 インストールが完了すると、コンソールは Prometheus モニタリングの詳細ページにリダイレクトします。
Prometheus 監視 ページでは、[ノードモニタリング]、[アプリケーションモニタリング]、[GPU モニタリング] などの組み込みダッシュボードを使用して、クラスター内のノード、アプリケーション、GPU のモニタリングデータを表示できます。
Prometheus アラートルールの設定
アラートルールを作成すると、特定のイベントに関するリアルタイム通知を受信できます。 電話、メール、テキストメッセージ、DingTalk、WeCom、Webhook などのさまざまなチャネルを通じて通知を送信できるため、例外を事前に特定するのに役立ちます。 アラートは通知ポリシーを介して適切な連絡先または連絡先グループにルーティングされます。
DingTalk ロボットの作成方法の詳細については、「DingTalk ロボット」をご参照ください。
WeCom ロボットの作成方法の詳細については、「WeCom ロボット」をご参照ください。
ステップ 1:連絡先の作成
ARMS コンソール にログオンします。左側のナビゲーションウィンドウで、 を選択します。
連絡先 タブで、連絡先の新規作成 をクリックします。
連絡先の新規作成 ダイアログボックスで、パラメーターを設定し、OK をクリックします。
パラメーター
説明
名前
連絡先の名前。
電話番号
連絡先が電話とテキストメッセージでアラート通知を受信できるようになります。
説明通知ポリシーの電話通知には、認証済みの電話番号のみを使用できます。 電話番号の認証方法については、「電話番号の認証」をご参照ください。
メール
連絡先がメールでアラート通知を受信できるようになります。
重要最大 100 件の連絡先を作成できます。
ステップ 2:Prometheus アラートルールの作成
静的しきい値アラートルールの作成
静的しきい値チェックタイプには、事前定義されたメトリックが用意されています。 既存のメトリックを選択することで、アラートルールを迅速に作成できます。
にログインします。 ARMSコンソールを使用します。
左側のナビゲーションペインで、 を選択します。
Prometheus アラートルール ページで、Prometheus アラートルールの作成 をクリックします。
Prometheus アラートルールの作成 ページで、アラートパラメーターを設定し、保存 をクリックします。
パラメーター
説明
例
アラート名
アラートの名前。
prod-cluster-container-cpu-alert
チェックタイプ
[静的しきい値] を選択します。
静的しきい値
Prometheus インスタンス
アラートを作成するPrometheus インスタンスを選択します。
Production Cluster
アラートグループ
アラートグループを選択します。
Prometheus のタイプによってサポートされるアラートグループは異なります。選択可能なアラートグループのオプションは、選択したPrometheus インスタンスのタイプに基づいて異なります。
Kubernetes Workloads
アラートメトリクス
アラートを設定するメトリクスを選択します。各アラートグループは異なるメトリクスに対応しています。
Container CPU utilization
アラート条件
事前定義されたアラートメトリクスに基づいて、アラートをトリガーする条件を設定します。
コンテナの CPU 使用率が
greater than80% の場合にアラート条件が満たされます。フィルター条件
アラートメトリクスに基づいてアラートルールの範囲を定義します。フィルター条件に一致するいずれかのリソースでアラートルールが満たされた場合に、アラートがトリガーされます。
次のフィルター条件を使用できます。
[トラバーサル]:アラートルールは、現在の Prometheus インスタンス内のすべてのリソースに適用されます。走査はデフォルトのフィルター条件です。
[等しい]:この条件を選択した後、特定のリソース名を入力します。アラートルールはそのリソースにのみ適用されます。複数のリソース名を入力することはできません。
[次の値に等しくない:]:この条件を選択した後、特定のリソース名を入力します。アラートルールは指定されたリソースを除くすべてのリソースに適用されます。複数のリソース名を入力することはできません。
[正規表現に一致]:この条件を選択した後、必要に応じてリソース名を照合するための正規表現を入力します。アラートルールは正規表現に一致するすべてのリソースに適用されます。
[正規表現と一致しない]:この条件を選択した後、必要に応じてリソース名を照合するための正規表現を入力します。アラートルールは正規表現に一致するすべてのリソースを除外します。
説明フィルター条件を設定すると、データプレビュー エリアが表示されます。
フィルター条件は 300 文字を超えることはできません。
走査
データプレビュー
データプレビュー エリアには、アラート条件に対応する Prometheus クエリ言語 (PromQL) 文が表示されます。また、監視メトリクスの値を時系列曲線で表示します。
デフォルトでは、1つのリソースのリアルタイム値のみが表示されます。このエリアのフィルターボックスでターゲットリソースと時間範囲を選択すると、異なるリソースと時間範囲の値を表示できます。
説明アラートのしきい値は、時系列曲線上に赤い実線として表示されます。しきい値を超えた部分は濃い赤色で、超えていない部分は青色で表示されます。
時系列曲線にカーソルを合わせると、特定の時点でのリソースの詳細を表示できます。
時系列曲線で時間範囲を選択すると、その期間の曲線を表示できます。
なし
継続期間
アラート条件が満たされた場合、アラートは即時にトリガーされます。いずれかのデータポイントがしきい値に達すると、アラートがトリガーされます。
アラート条件が N 分間継続した場合にのみアラートがトリガーされます。しきい値に達した状態が N 分以上続いた場合に、アラートがトリガーされます。
秒単位での継続期間の設定はサポートされていません。これは製品の仕様です。
1
アラートレベル
アラートレベルをカスタマイズします。デフォルトのアラートレベルはDefault です。重要度は Default、P4、P3、P2、P1 の順に高くなります。
Default
アラート内容
ユーザーが受信するアラート通知の内容です。Goテンプレート構文を使用して、アラート内容のパラメーター変数をカスタマイズできます。
Namespace: {{$labels.namespace}} / Pod: {{$labels.pod_name}} / Container: {{$labels.container}} CPU utilization {{$labels.metrics_params_opt_label_value}} {{$labels.metrics_params_value}}%, Current value: {{ printf "%.2f" $value }}%
アラート通知
[シンプルモード]:Notification Receiver、[Notification Period]、繰り返しポリシー を設定できます。
[通常モード]:
通知ポリシーを指定しない:このオプションを選択した場合、アラートルールを作成した後、通知ポリシー ページで新しい通知ポリシーを作成し、アラートルール名などの一致条件を指定して、アラートルールを関連付けることができます。アラートルールがトリガーされてアラートが生成されると、アラート情報は通知ポリシーで指定された連絡先または連絡先グループに送信されます。詳細については、「通知ポリシー」をご参照ください。
通知ポリシーを指定する:このオプションを選択すると、ARMS は対応する通知ポリシーに一致ルールを自動的に追加します。一致ルールの内容はアラートルール ID で、アラートルール名として表示されます。これにより、現在のアラートルールによって生成されたアラートが、選択された通知ポリシーに一致することが保証されます。
重要通知ポリシーをここで指定しても、現在のアラートルールからのアラートがそのポリシーに一致し、対応するアラートが生成されることが保証されるだけです。ただし、現在のアラートルールからのアラートは、あいまい一致で設定された他の通知ポリシーにも一致する可能性があり、その結果アラートが生成されることがあります。アラートと通知ポリシーは多対多の関係です。
通知ルールを指定しない
[詳細設定]
アラートチェック間隔
システムがアラートルールをチェックし、データがアラート条件を満たしているか判断する間隔です。デフォルトは 1 分、最小は 1 分です。15 秒など、1 分未満の値を入力した場合でも、システムは 1 分ごとにチェックを実行します。これは製品の仕様です。
1
データが完全になった後にチェック
はい
いいえ
はい
タグ
アラートにタグを設定します。タグは通知ポリシーの一致条件として使用できます。
なし
アノテーション
アラートにアノテーションを設定します。
なし
カスタム PromQL を使用したアラートルールの作成
静的しきい値リストで利用できないメトリックを監視するには、カスタム PromQL チェックタイプを使用してアラートルールを作成します。
Prometheus アラートルールの作成 ページで、次のアラートパラメーターを設定し、保存 をクリックします。
パラメーター | 説明 | 例 |
アラート名 | アラートの名前。 | Pod CPU usage is greater than 8% |
チェックタイプ | [カスタム PromQL クエリ] に設定します。 | カスタム PromQL クエリ |
Prometheus インスタンス | アラートを作成するPrometheus インスタンスを選択します。 | なし |
参照アラートグループ | アラートグループを選択します。 Prometheus のタイプによってサポートされるアラートグループは異なります。選択可能なアラートグループのオプションは、選択したPrometheus インスタンスのタイプに基づいて異なります。 | Kubernetes Workload |
参照アラートメトリクス | オプション。一般的なメトリクス用のカスタム PromQL 設定が参照用として提供されています。類似のメトリクスを選択して各フィールドに値を事前入力し、必要に応じて設定を変更できます。 [参照アラートメトリクス] パラメーターでは、選択されたPrometheus インスタンスタイプに基づいて、サポートされているアラートメトリクスが自動的にフィルタリングされます。 | Pod disk usage alert |
カスタム PromQL 文 | PromQL 文を使用して、アラートルールの式を設定します。 | max(container_fs_usage_bytes{pod!="", namespace!="arms-prom",namespace!="monitoring"}) by (pod_name, namespace, device)/max(container_fs_limit_bytes{pod!=""}) by (pod_name,namespace, device) * 100 > 90 |
データプレビュー | データプレビュー エリアには、アラート条件に対応する Prometheus クエリ言語 (PromQL) 文が表示されます。また、監視メトリクスの値を時系列曲線で表示します。 デフォルトでは、1つのリソースのリアルタイム値のみが表示されます。このエリアのフィルターボックスでターゲットリソースと時間範囲を選択すると、異なるリソースと時間範囲の値を表示できます。 説明
| なし |
継続期間 |
秒単位での継続期間の設定はサポートされていません。これは製品の仕様です。 | 1 |
アラートレベル | アラートレベルをカスタマイズします。デフォルトのアラートレベルはDefault です。重要度は Default、P4、P3、P2、P1 の順に高くなります。 | Default |
アラート内容 | ユーザーが受信するアラート通知の内容です。Goテンプレート構文を使用して、アラート内容のパラメーター変数をカスタマイズできます。 以下の例は、Pod の再起動アラートのテンプレートです。これにより、読みやすい通知内容を設定するのに役立ちます。 Namespace: {{$labels.namespace}}/Pod: {{$labels.pod_name}} restarted more than {{ $labels.metrics_params_value}} times in {{$labels.metrics_params_time}} minutes. Current restarts: {{ $value }} | Namespace: {{$labels.namespace}}/Pod: {{$labels.pod_name}}/Disk device: {{$labels.device}} usage exceeds 90%, current value {{ printf "%.2f" $value }}% |
アラート通知 |
| 通知ルールを指定しない |
詳細設定 | ||
アラートチェック間隔 | アラートルールをチェックする間隔 (分) です。最小値は 1 分です。15 秒など、1 分未満の値を入力した場合でも、システムは 1 分ごとにチェックを実行します。これは製品の仕様です。 | 1 |
データが完全になった後にチェック |
| はい |
タグ | アラートにタグを設定します。タグは通知ポリシーの一致条件として使用できます。 | なし |
アノテーション | アラートにアノテーションを設定します。 | なし |
よくある質問
ack-arms-prometheus アドオンのバージョンの確認方法
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
アドオン管理 ページで、ログとモニタリング タブをクリックし、[ack-arms-prometheus] アドオンを見つけます。
現在のバージョンがコンポーネントカードに表示されます。 新しいバージョンが利用可能な場合は、アップグレード をクリックしてコンポーネントを更新してください。
説明アップグレード ボタンは、インストールされているコンポーネントが最新バージョンでない場合にのみ表示されます。
ACK Edge クラスター:監視データの取得方法
エッジコンピューティングシナリオでは、エッジノードは通常、比較的隔離されたオンプレミスデータセンター環境にあります。 これは、クラウドベースの VPC とエッジノードが別々のネットワークで動作することを意味します。 クラウドにデプロイされた Prometheus Agent は、Node Exporter や GPU Exporter などのエッジ側コンポーネントのエンドポイントに直接アクセスしてメトリックを収集することはできません。 ack-arms-prometheus バージョン 1.1.4 から、ACK Edge クラスター に組み込まれているクラウドネイティブ運用保守通信コンポーネント Tunnel により、ack-arms-prometheus はクラウドとエッジの間にデータ収集チャネルを自動的に確立できます。
GPU 監視のデプロイが失敗する理由
GPU 監視のデプロイは、GPU ノードに Taint がある場合に失敗する可能性があります。 この問題を解決するには、まずノードの Taint を確認します。
次のコマンドを実行して、ターゲット GPU ノードの Taint を確認します。
GPU ノードにカスタム Taint がある場合は、関連するエントリを見つけることができます。 この例では、
keyがtest-key、valueがtest-value、effectがNoScheduleの Taint を使用します。kubectl describe node cn-beijing.47.100.***.***想定される出力:
Taints:test-key=test-value:NoSchedule次の 2 つの方法のいずれかで GPU ノードの Taint を処理してください。
次のコマンドを実行して、GPU ノードから Taint を削除してください。
kubectl taint node cn-beijing.47.100.***.*** test-key=test-value:NoSchedule-Taint の Toleration を宣言して、Pod がノードにスケジュールされるようにしてください。
# 1. 次のコマンドを実行して、ack-prometheus-gpu-exporter DaemonSet を編集してください。 kubectl edit daemonset -n arms-prom ack-prometheus-gpu-exporter # 2. 次のフィールドを YAML ファイルに追加して、Taint の Toleration を宣言してください。 # 他のフィールドは省略されます。 # `tolerations` フィールドは `containers` フィールドの上で同じレベルに追加されます。 tolerations: - key: "test-key" operator: "Equal" value: "test-value" effect: "NoSchedule" containers: # 他のフィールドは省略されます。
ARMS-Prometheus リソースの完全な削除方法
Managed Service for Prometheus の名前空間のみを削除すると、リソースが削除された後に設定が残ってしまいます。 これは再インストールに影響します。 次の操作を実行して、残りの ARMS-Prometheus 設定を完全に手動で削除できます。
arms-prom 名前空間を削除してください。
kubectl delete namespace arms-promClusterRole を削除してください。
kubectl delete ClusterRole arms-kube-state-metrics kubectl delete ClusterRole arms-node-exporter kubectl delete ClusterRole arms-prom-ack-arms-prometheus-role kubectl delete ClusterRole arms-prometheus-oper3 kubectl delete ClusterRole arms-prometheus-ack-arms-prometheus-role kubectl delete ClusterRole arms-pilot-prom-k8s kubectl delete ClusterRole gpu-prometheus-exporter kubectl delete ClusterRole o11y:addon-controller:role kubectl delete ClusterRole arms-aliyunserviceroleforarms-clusterroleClusterRoleBinding を削除してください。
kubectl delete ClusterRoleBinding arms-node-exporter kubectl delete ClusterRoleBinding arms-prom-ack-arms-prometheus-role-binding kubectl delete ClusterRoleBinding arms-prometheus-oper-bind2 kubectl delete ClusterRoleBinding arms-kube-state-metrics kubectl delete ClusterRoleBinding arms-pilot-prom-k8s kubectl delete ClusterRoleBinding arms-prometheus-ack-arms-prometheus-role-binding kubectl delete ClusterRoleBinding gpu-prometheus-exporter kubectl delete ClusterRoleBinding o11y:addon-controller:rolebinding kubectl delete ClusterRoleBinding arms-kube-state-metrics-agent kubectl delete ClusterRoleBinding arms-node-exporter-agent kubectl delete ClusterRoleBinding arms-aliyunserviceroleforarms-clusterrolebindingRole と RoleBinding を削除してください。
kubectl delete Role arms-pilot-prom-spec-ns-k8s kubectl delete Role arms-pilot-prom-spec-ns-k8s -n kube-system kubectl delete RoleBinding arms-pilot-prom-spec-ns-k8s kubectl delete RoleBinding arms-pilot-prom-spec-ns-k8s -n kube-system
リソースを削除したら、ACK コンソールに戻り、操作 > アドオン管理 を選択し、[ack-arms-prometheus] アドオンを再インストールしてください。