このトピックでは、レコーディングルールを設定し、レコーディングルールメトリックの詳細を表示する方法について説明します。
背景情報
レコーディングルールは、メトリックデータのカスタム開発に使用できます。一部のクエリでは、クエリ対象サーバーで大量の計算が必要になる場合があり、サーバーのワークロードが増加します。レコーディングルールを設定して、計算プロセスを結果が書き込まれるサーバーに事前に実行することができます。これにより、クエリ対象サーバーのリソース使用量が削減されます。大規模なクラスターが使用され、ビジネスが複雑なシナリオでは、レコーディングルールを使用することで、PromQL 式の複雑さを軽減できます。これにより、クエリのパフォーマンスが向上し、ユーザー設定が簡素化されます。
説明 Alibaba Cloud Managed Service for Prometheus では、オープンソースの Prometheus と同じ方法でレコーディングルールを設定できます。レコーディングルールはルールグループ内に存在します。各ルールグループには複数のルールを含めることができます。レコーディングルールの名前は、有効なメトリック名である必要があります。グループ内のルールは、一定の間隔で順番に実行されます。メトリックは、新しいルール名に基づいてリモートデータベースに保存されます。
レコーディングルールを設定する
Managed Service for Prometheus コンソールにログインします。
- ページの左上隅で、Prometheus インスタンスが存在するリージョンを選択します。次に、Prometheus インスタンスの名前をクリックします。
- 左側のナビゲーションペインで、設定 をクリックします。設定 タブをクリックします。次に、Recordingrule.yaml の編集 をクリックします。
- Recordingrule.yaml の編集 ダイアログボックスで、デフォルトの設定を削除し、レコーディングルールの設定を入力して、保存 をクリックします。説明 クラスターごとに 1 つの RecordingRule.yaml ファイルのみを設定する必要があります。ルールグループの名前は一意である必要があります。
次のセクションでは、ルールグループの例を示します。
groups: - name: apiserver_request_total interval: 60s rules: - record: job_instance_mode:apiserver_request_total:avg_rate5m expr: avg by (job, instance, mode) (rate(apiserver_request_total[5m])) // job、インスタンス、モード別に平均を計算します。 labels: team: operations - record: job:apiserver_request_total:sum_rate10m expr: sum by (job)(rate(apiserver_request_total[10m])) // job別に合計を計算します。 labels: team: operations
パラメーター 説明 groups ルールグループ。RecordingRule.yaml ファイルには複数のルールグループを設定できます。 name ルールグループの名前。ルールグループの名前は一意である必要があります。 interval オプション。ルールグループを評価する間隔。デフォルト値は 60 です。単位:秒。 rules レコーディングルール。ルールグループには複数のレコーディングルールを含めることができます。 record ルールの名前。レコーディングルールの名前は、有効なメトリック名である必要があります。 説明 レコーディングルール名の推奨フォーマット:level:metric:operations
。level
は、ルール出力の集計レベルとラベルを示します。metric
は、メトリック名を示します。operations
は、メトリックに適用される操作のリストです。最新の操作が最初に表示されます。
expr 式。Managed Service for Prometheus は、この式を使用してメトリックを計算します。式は、有効な PromQL 式である必要があります。 lables オプション。メトリックのラベル。
レコーディングルールメトリックの詳細を表示する
方法 1: Grafana ダッシュボードを使用する
- オンプレミスの Grafana システムに管理者としてログオンします。
- 左側のナビゲーションペインで、Explore をクリックします。
- Explore ページで、Kubernetes クラスター名を選択し、Metrics の横にあるテキストボックスにレコーディングルールメトリックの名前を入力します。メトリックの詳細が表示されます。
方法 2: Managed Service for Prometheus コンソールを使用する
- Prometheus consoleにログオンします。
- ページの左上隅で、Prometheusインスタンスが存在するリージョンを選択します。次に、Prometheusインスタンスの名前をクリックします。
- 左側のナビゲーションペインで、サービスディスカバリをクリックします。メトリクスタブをクリックします。次に、検索ボックスにレコーディングルールメトリックの名前を入力して、メトリックの詳細を表示します。
レコーディングルールのリモート書き込みを設定する
Alibaba Cloud Managed Service for Prometheus は、オープンソースの Prometheus のリモート書き込み機能をサポートしています。
Managed Service for Prometheus コンソールにログインします。
- ページの左上隅で、リモート書き込みを設定する Prometheus インスタンスが存在するリージョンを選択します。次に、Prometheus インスタンスの名前をクリックします。
- 左側のナビゲーションペインで、設定 をクリックします。設定 タブをクリックします。次に、Prometheus.yaml の編集 をクリックします。
- Prometheus.yaml の編集 ダイアログボックスで、リモート書き込みを設定します。説明 Alibaba Cloud Managed Service for Prometheus では、オープンソースの Prometheus と同じ方法でリモート書き込みを設定できます。リモート書き込み設定の配列を指定できます。さらに、書き込み再ラベル設定を指定することもできます。リモート書き込み設定は、エージェントとレコーディングルールの両方に有効です。レコーディングルールによって生成されたメトリックデータのみを他のデータベースにリモートで書き込む必要がある場合は、書き込み再ラベル設定を指定できます。例:
remote_write: - url: "https://xxxx/api/v1/prom/write?db=dbname&u=username&p=password" // データをリモート書き込みするデータベースのエンドポイント。 write_relabel_configs: - source_labels: [__name__] regex: job_instance_mode:apiserver_request_total:avg_rate5m // レコーディングルールメトリック名 action: keep // 一致するメトリックのみを保持します。
説明 上記の構成では、レコーディングルールメトリック (job_instance_mode:apiserver_request_total:avg_rate5m) のデータのみが別のデータベースにリモート書き込みされます。
関連操作
レコーディングルールによって生成された新しいメトリックデータをリモートで書き込むには、URL をパブリックエンドポイントに設定する必要があります。レコーディングルールのネットワークホワイトリストを設定するには、リージョンに基づいて IP アドレスを追加する必要があります。
中国 (北京): 101.200.XX.XX
中国 (杭州): 118.31.XX.XX
中国 (上海): 106.14.XX.XX.XX
中国 (深圳): 8.129.XX.XX
中国 (張家口): 39.103.XX.XX
中国 (青島): 139.129.XX.XX
中国 (成都): 47.108.XX.XX
中国 (香港): 47.242.XX.XX
シンガポール (シンガポール): 47.241.XX.XX