Managed Service for Prometheus では、ACK Edge クラスターの定義済みダッシュボードとパフォーマンスメトリックを表示できます。このトピックでは、Managed Service for Prometheus を ACK Edge クラスターに接続する方法について説明します。
前提条件
バージョン 1.18.8-aliyunedge.1 以降の ACK Edge クラスターが作成されていること。
ACK Edge クラスターにバージョン 1.1.4 以降の ack-arms-prometheus コンポーネントがインストールされていること。コンポーネントがそれより前のバージョンの場合は、ack-arms-prometheus を更新します。
クラスターが Kubernetes バージョン 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 エコシステムと統合された、フルマネージドのモニタリングサービスです。Managed Service for Prometheus は、さまざまなコンポーネントをモニタリングし、すぐに使用できる複数の定義済みダッシュボードを提供し、フルマネージドの Prometheus サービスを提供します。Managed Service for Prometheus を使用すると、Prometheus モニタリングシステムを構築したり、基盤となるデータストレージ、データ表示、または O&M を管理したりする必要がありません。
ACK Edge クラスターは、コンテナーモニタリングの Basic Edition をサポートしています。
Managed Service for Prometheus で Grafana ダッシュボードを表示する
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、クラスターの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
説明初めてログインする場合は、画面の指示に従い、コンポーネントの [インストール] をクリックします。コンソールは自動的にコンポーネントをインストールし、ダッシュボードをチェックします。インストールが完了すると、Prometheus モニタリングの詳細ページにリダイレクトされます。
[Prometheus モニタリング] ページでは、定義済みのダッシュボードでクラスター内のノード、アプリケーション、GPU のモニタリングデータを表示できます。
Prometheus アラートルールを設定する
監視ジョブのアラートルールを作成して、アラートがトリガーされたときにリアルタイム通知を受信できます。電話、メール、ショートメッセージ、DingTalk、WeCom、または Webhook で通知を受信できます。これにより、例外を事前に特定できます。アラートルールがトリガーされると、指定された連絡先グループに通知が送信されます。連絡先グループを作成する前に、連絡先を作成する必要があります。連絡先を作成するときに、携帯電話番号とメールアドレスを指定できます。また、通知ポリシーで受信者グループを指定して、アラートが迅速に管理されるようにすることもできます。
DingTalk ロボットの作成方法の詳細については、「DingTalk ロボット」をご参照ください。
WeCom ロボットの作成方法の詳細については、「WeCom ロボット」をご参照ください。
ステップ 1: 連絡先を作成する
ARMS コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
[連絡先] タブで、[連絡先の作成] をクリックします。
[連絡先の作成] ダイアログボックスで、パラメーターを設定し、[OK] をクリックします。
パラメーター
説明
名前
連絡先の名前。
電話番号
連絡先の携帯電話番号を指定すると、その連絡先は電話とショートメッセージで通知を受け取ることができます。
説明通知ポリシーでは、認証済みの携帯電話番号のみを指定できます。携帯電話番号の認証方法の詳細については、「携帯電話番号を認証する」をご参照ください。
メール
連絡先のメールアドレスを指定すると、その連絡先はメールで通知を受け取ることができます。
重要最大 100 件の連絡先を作成できます。
ステップ 2: Prometheus アラートルールを作成する
静的しきい値に基づいて Prometheus アラートルールを作成する
静的しきい値チェックタイプは、事前設定されたメトリックを提供します。メトリックを選択して、そのメトリックのアラートルールをすばやく作成できます。
ARMS コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
[Prometheus アラートルール] ページで、[Prometheus アラートルールの作成] をクリックします。
[Prometheus アラートルールの作成] ページで、次のアラートパラメーターを設定し、[保存] をクリックします。
パラメーター
説明
例
アラートルール名
アラートルールの名前を入力します。
本番クラスター - コンテナー CPU 使用率アラート
チェックタイプ
静的しきい値を選択します。
静的しきい値
Prometheus インスタンス
Prometheus インスタンスを選択します。
本番クラスター
アラート連絡先グループ
アラート連絡先グループを選択します。
Prometheus インスタンスでサポートされるアラート連絡先グループは、Prometheus インスタンスのタイプによって異なります。
Kubernetes 負荷
アラートメトリック
メトリックを選択します。アラート連絡先グループによって提供されるメトリックは異なります。
コンテナー CPU 使用率
アラート条件
アラートイベントが生成される条件を指定します。
コンテナーの CPU 使用率が
より大きい80% の場合、アラートイベントが生成されます。フィルター条件
アラートルールの適用範囲を指定します。リソースがフィルター条件とアラート条件の両方を満たす場合、アラートイベントが生成されます。
次のタイプのフィルター条件がサポートされています。
走査: アラートルールは、現在の Prometheus インスタンスのすべてのリソースに適用されます。デフォルトでは、[走査] が選択されています。
等しい: このフィルター条件を選択した場合は、リソース名を入力する必要があります。アラートルールは、指定されたリソースにのみ適用されます。複数のリソースを同時に指定することはできません。
等しくない: このフィルター条件を選択した場合は、リソース名を入力する必要があります。アラートルールは、指定されたリソース以外のリソースに適用されます。複数のリソースを同時に指定することはできません。
正規表現一致: このフィルター条件を選択した場合は、リソース名に一致する正規表現を入力する必要があります。テンプレートを使用して作成したアラートルールは、正規表現に一致するすべてのリソースに適用されます。
正規表現不一致: このフィルター条件を選択した場合は、リソース名に一致する正規表現を入力する必要があります。アラートルールは、正規表現に一致しないリソースに適用されます。
説明フィルター条件を設定すると、[データプレビュー] セクションが表示されます。
フィルター条件は 300 文字以内にしてください。
走査
データプレビュー
[データプレビュー] には、アラート条件に対応する PromQL 文が表示されます。このセクションには、指定されたメトリックの値が時系列グラフで表示されます。
デフォルトでは、1 つのリソースのリアルタイム値のみが表示されます。フィルター条件を指定して、さまざまな時間範囲でさまざまなリソースのメトリック値を表示できます。
説明時系列グラフのしきい値は赤い線で表されます。アラート条件を満たす曲線部分は濃い赤で表示され、アラート条件を満たさない曲線部分は青で表示されます。
ポインターを曲線の上に移動すると、特定の時点でのリソースの詳細を表示できます。
時系列曲線で期間を選択して、選択した期間の時系列曲線を表示することもできます。
なし
期間
アラート条件が満たされると、アラートイベントが生成されます: データポイントがしきい値に達すると、アラートイベントが生成されます。
アラート条件が N 分間継続して満たされると、アラートイベントが生成されます: しきい値に達した期間が N 分以上の場合にのみ、アラートイベントが生成されます。
1
アラートレベル
アラートレベルを指定します。デフォルト値: [デフォルト]。有効な値: デフォルト、P4、P3、P2、および P1。デフォルトは最も低い重大度レベルを示し、P1 は最も高い重大度レベルを示します。
デフォルト
アラートメッセージ
エンドユーザーに送信するアラートメッセージを指定します。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 }}%
アラート通知
シンプルモード: [通知オブジェクト]、[通知期間]、[通知を再送信するかどうか] を設定する必要があります。
標準モード:
通知ポリシーを指定しない: このオプションを選択した場合、アラートルールを作成した後に [通知ポリシー] ページで通知ポリシーを作成できます。[通知ポリシー] ページでは、一致ルールと一致条件を指定できます。たとえば、一致条件としてアラートルール名を指定できます。アラートルールがトリガーされると、アラートイベントが生成され、通知ポリシーで指定された連絡先または連絡先グループにアラート通知が送信されます。詳細については、「通知ポリシーの作成と管理」をご参照ください。
ドロップダウンリストから通知ポリシーを選択することもできます。ARMS は、選択した通知ポリシーに一致ルールを自動的に追加し、アラートルールの ID を一致条件として指定します。アラートルール名は、[通知ポリシー] ページに表示されます。これにより、アラートルールに基づいて生成されたアラートイベントが、選択した通知ポリシーによって照合されるようになります。
重要通知ポリシーを選択すると、アラートルールに基づいて生成されたアラートイベントが通知ポリシーによって照合され、アラートが生成される可能性があります。アラートイベントは、あいまい一致を使用する他の通知ポリシーによっても照合され、アラートが生成される場合があります。1 つ以上のアラートイベントが、1 つ以上の通知ポリシーによって照合される可能性があります。
通知ポリシーを指定しない
詳細設定
アラートチェックサイクル
アラートルールは N 分ごとにトリガーされ、アラート条件が満たされているかどうかを確認します。デフォルト値: 1。最小値: 1。
1
データが完了した後にチェック
はい
いいえ
はい
タグ
アラートルールのタグを指定します。指定されたタグは、通知ポリシーを照合するために使用できます。
なし
アノテーション
アラートルールのアノテーションを指定します。
なし
カスタム PromQL 文を使用して Prometheus アラートルールを作成する
静的しきい値に事前設定されていないメトリックをモニタリングするには、カスタム PromQL チェックタイプを使用してアラートルールを作成できます。
[Prometheus アラートルールの作成] ページで、次のアラートパラメーターを設定し、[保存] をクリックします。
パラメーター | 説明 | 例 |
アラートルール名 | アラートルールの名前を入力します。 | Pod の CPU 使用率が 8% を超える |
チェックタイプ | カスタム PromQL を選択します。 | カスタム PromQL |
Prometheus インスタンス | Prometheus インスタンスを選択します。 | なし |
参照アラート連絡先グループ | アラート連絡先グループを選択します。 Prometheus インスタンスでサポートされるアラート連絡先グループは、Prometheus インスタンスのタイプによって異なります。 | Kubernetes 負荷 |
参照メトリック | オプション。[参照メトリック] ドロップダウンリストには、一般的なメトリックが表示されます。メトリックを選択すると、そのメトリックの PromQL 文が [カスタム PromQL 文] フィールドに表示されます。ビジネス要件に基づいて文を変更できます。 [参照メトリック] ドロップダウンリストの値は、Prometheus インスタンスのタイプによって異なります。 | Pod ディスク使用率アラート |
カスタム PromQL 文 | PromQL 文を入力します。 | Namespace: {{$labels.namespace}}/Pod: {{$labels.pod_name}} / The utilization of the {{$labels.device}} disk exceeds 90%. Current value: {{ printf "%.2f" $value }}%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 |
データプレビュー | [データプレビュー] には、アラート条件に対応する PromQL 文が表示されます。このセクションには、指定されたメトリックの値が時系列グラフで表示されます。 デフォルトでは、1 つのリソースのリアルタイム値のみが表示されます。フィルター条件を指定して、さまざまな時間範囲でさまざまなリソースのメトリック値を表示できます。 説明
| なし |
期間 |
| 1 |
アラートレベル | アラートレベルを指定します。デフォルト値: [デフォルト]。有効な値: デフォルト、P4、P3、P2、および P1。デフォルトは最も低い重大度レベルを示し、P1 は最も高い重大度レベルを示します。 | デフォルト |
アラートメッセージ | エンドユーザーに送信するアラートメッセージを指定します。Go テンプレート構文に基づいて、アラートメッセージにカスタム変数を指定できます。 | Namespace: {{$labels.namespace}} / Pod: {{$labels.pod_name}} / The utilization of the {{$labels.device}} disk exceeds 90%. Current value: {{ printf "%.2f" $value }}% |
アラート通知 |
| 通知ポリシーを指定しない |
詳細設定 | ||
アラートチェックサイクル | アラートルールは N 分ごとにトリガーされ、アラート条件が満たされているかどうかを確認します。デフォルト値: 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 クラスターに組み込まれている クラウドネイティブ O&M 通信コンポーネント Tunnel の助けを借りて、ack-arms-prometheus はクラウドとエッジの間でモニタリングデータを収集するためのリンクを自動的に確立できます。
GPU モニタリングをデプロイできないのはなぜですか?
GPU ノードに Taint がある場合、GPU モニタリングのデプロイメントが失敗することがあります。次の手順を実行して、GPU ノードの Taint を表示できます。
次のコマンドを実行して、ターゲット GPU ノードの Taint を表示します。
GPU ノードにカスタム Taint がある場合、Taint 関連のエントリを見つけることができます。このトピックでは、
keyがtest-key、valueがtest-value、effectがNoScheduleの Taint を例として使用します。kubectl describe node cn-beijing.47.100.***.***期待される出力:
Taints:test-key=test-value:NoSchedule次のいずれかの方法で GPU ノードの Taint を処理します。
次のコマンドを実行して、GPU ノードから Taint を削除します。
kubectl taint node cn-beijing.47.100.***.*** test-key=test-value:NoSchedule-GPU ノードの Taint に対して Toleration を宣言し、Pod が Taint のあるノードにスケジュールされることを許可します。
# 1. 次のコマンドを実行して ack-prometheus-gpu-exporter を編集します。 kubectl edit daemonset -n arms-prom ack-prometheus-gpu-exporter # 2. YAML ファイルに次のフィールドを追加して、Taint に対する Toleration を宣言します。 # 他のフィールドは省略されています。 # tolerations フィールドは、containers フィールドの上、かつ 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
ARMS-Prometheus リソースを手動で削除した後、Container Service コンソールに移動し、[オペレーション] > [アドオン] を選択して、ack-arms-prometheus コンポーネントを再インストールします。