レコーディングルールを設定して書き込み側でメトリックを事前集約し、その結果のメトリックを Grafana または Prometheus コンソールで表示します。
背景情報
レコーディングルールは、負荷の高い PromQL 式を書き込み側で事前計算することで、クエリ側の負荷を軽減します。大規模なクラスターや複雑なビジネスシナリオにおいて、これによりクエリが簡素化され、パフォーマンスが向上します。
レコーディングルールの設定は、オープンソースの Prometheus と同じです。ルールはルールグループにまとめられ、各ルールグループには複数のルールを含めることができます。レコーディングルールの名前は、Prometheus のメトリック命名規則に準拠する必要があります。同じグループ内のルールは、指定された間隔で順次評価されます。その後、システムは結果のメトリックを新しいルール名でリモートデータベースに保存します。
レコーディングルールの設定
-
Cloud Monitor コンソールにログインします。
-
左側のナビゲーションウィンドウで、 を選択して、Managed Service for Prometheus のインスタンスリストを開きます。
-
ページの左上隅でターゲットリージョンを選択し、目的の Prometheus インスタンスの名前をクリックします。
-
左側のナビゲーションウィンドウで [設定] をクリックします。[設定] タブで、[RecordingRule.yaml の編集] をクリックします。
-
表示されるダイアログボックスで、デフォルトのテンプレートを削除し、レコーディングルールの設定を入力してから、[保存] をクリックします。
説明クラスターごとに使用する RecordingRule.yaml ファイルは 1 つだけにしてください。ルールグループの名前は一意である必要があります。
例:
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])) labels: team: operations - record: job:apiserver_request_total:sum_rate10m expr: sum by (job)(rate(apiserver_request_total[10m])) labels: team: operationsパラメーター
説明
groups
ルールグループのリスト。1 つの RecordingRule.yaml ファイルに複数のルールグループを設定できます。
name
ルールグループの名前。名前はファイル内で一意である必要があります。
interval
(任意) グループ内のルールの評価間隔。デフォルト:60s。
rules
グループ内のルールのリスト。
record
記録する新しい時系列の名前。名前は Prometheus のメトリック命名規則に準拠する必要があります。
説明レコーディングルールの名前には、推奨されるフォーマットである
level:metric:operationsを使用します。-
level:集約レベルとルールの出力ラベル。 -
metric:メトリックの名前。 -
operations:メトリックに適用される操作のリスト。最新の操作が最初にリストされます。
expr
Alibaba Cloud Managed Service for Prometheus がレコーディングルールのメトリックを計算するために使用する式。式は有効な PromQL クエリである必要があります。
labels
(任意) 新しいメトリックに追加するラベル。
-
レコーディングルールメトリックの表示
方法1:Grafana でメトリックを表示する
-
管理者として Grafana システムにログインします。
-
左側のナビゲーションウィンドウで、[Explore] をクリックします。
-
[Explore] ページで、ご利用の Kubernetes クラスターに対応するデータソースを選択します。メトリッククエリフィールドに、
job_instance_mode:apiserver_request_total:avg_rate5mなどのレコーディングルールメトリックの名前を入力します。[Query type] を [Range] に設定し、[Run Query] をクリックします。クエリは、apiserver のリクエストレートの傾向を示す折れ線グラフを返します。
方法2:Prometheus コンソールからメトリックを表示する
-
CloudMonitor コンソールにログインします。
-
左側のナビゲーションウィンドウで、を選択して、Managed Service for Prometheus のインスタンスリストを開きます。
-
ページの左上隅でターゲットリージョンを選択し、目的の Prometheus インスタンスの名前をクリックします。
-
左側のナビゲーションウィンドウで [サービスディスカバリ] を選択し、[メトリック] タブをクリックします。次に、検索ボックスにレコーディングルールメトリックの名前を入力して、その詳細を表示します。
レコーディングルールとリモートライト
Alibaba Cloud Managed Service for Prometheus のレコーディングルールは、オープンソースの Prometheus と同様にリモートライトをサポートしています。
-
Cloud Monitor コンソールにログインします。
-
左側のナビゲーションウィンドウで、 を選択して、Managed Service for Prometheus のインスタンスリストを開きます。
-
ページの左上隅でターゲットリージョンを選択し、目的の Prometheus インスタンスの名前をクリックします。
-
左側のナビゲーションウィンドウで [設定] をクリックします。[設定] タブで、[Prometheus.yaml の編集] をクリックします。
-
表示される [Prometheus.yaml の編集] ダイアログボックスで、リモートライトを設定します。
remote_write: - url: "https://cn-beijing.arms.aliyuncs.com/prometheusxxx/cn-beijing/api/v3/write" remote_timeout: 60s name: xxx basic_auth: username: xxx password: xxx write_relabel_configs: - action: keep source_labels: ["instance"] regex: "xxx" - url: "https://cn-hangzhou.arms.aliyuncs.com/prometheuxxxxx/cn-hangzhou/api/v3/write" remote_timeout: 60s name: xxx basic_auth: username: xxx password: xxx write_relabel_configs: - action: replace source_labels: ["job"] regex: "(.*)" target_label: __xxx_job__ replacement: ${1}:xxx説明リモートライトの設定方法は、オープンソースの Prometheus と同じです。複数のリモートライト設定と
write_relabel_configsがサポートされています。レコーディングルールによって生成されたメトリックのみを別のストレージにリモートで書き込むには、次の例に示すように
write_relabel_configsセクションを設定します。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 アドレスをネットワークのホワイトリストに追加する必要がある場合は、ご利用のリージョンに対応する IP アドレスを使用してください。
中国 (北京): 101.200.XX.XX
中国 (杭州): 118.31.XX.XX
中国 (上海): 106.14.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
完全な IP アドレスを取得するには、チケットを送信するか、DingTalk で Prometheus のオンコールアカウント(ID: aliprometheus)を検索してプロダクトエキスパートにお問い合わせください。