次の方法で共有


ConfigMap を使用して Kubernetes クラスターから Prometheus メトリックのコレクションをカスタマイズする

Kubernetes クラスターから Prometheus メトリックの収集を有効にすると、 既定のコレクション を使用して収集するメトリックが決定されます。 この記事では、特定の監視要件を満たすようにこのコレクションをカスタマイズする方法について説明します。

ConfigMap

次の ConfigMap は、メトリック アドオンのスクレープ構成とその他の設定を構成するために使用されます。 Managed Prometheus が有効になっている場合、この ConfigMap はクラスターに既定では存在しません。

ConfigMap 説明
ama-metrics-settings-configmap 次の基本設定が含まれています。
- クラスターの別名。 クラスターから取り込まれるすべてのメトリックの cluster ラベルの値を変更します。
- 既定のスクレーピング ターゲットを有効または無効にします。
- 名前空間ごとにポッド注釈ベースのスクレイピングを有効にします。
- メトリック保持リスト。 各既定のターゲットから許可されるメトリックを制御します。
- 定義済みのターゲットからデータを取得するための間隔を設定します。
- 不足しているメトリックの問題を特定するためのデバッグ モード。 トラブルシューティングを参照してください。

以下のガイダンスに基づいて ConfigMap の設定を変更し、次のコマンドを使用して適用します。 AMA-Metrics ポッドは、それらを選択し、2 ~ 3 分で再起動して、指定された構成設定を適用します。

kubectl apply -f .\ama-metrics-settings-configmap.yaml

既定のターゲットの有効化と無効化

Azure Monitor の既定の Prometheus メトリック構成 には、Kubernetes クラスターから既定で収集される既定のターゲットとメトリックが一覧表示されます。 これらのターゲットのスクレイピングを有効または無効にするには、ConfigMap の default-scrape-settings-enabled セクションのターゲットの設定を true または falseに更新します。

たとえば、既定で無効になっている coredns のスクレイピングを有効にするには、次のように設定を更新します。

default-scrape-settings-enabled: |-
    kubelet = true
    coredns = true
    cadvisor = true
    kubeproxy = false
    ...

スクレイピング間隔の設定

すべての既定のターゲットの既定のスクレーピング間隔は 30 秒です。 任意のターゲットに対してこの間隔を変更するには、ConfigMap の default-targets-scrape-interval-settings セクションで設定を更新します。

たとえば、 kubelet のスクレーピング間隔を 60 秒に変更するには、次のように設定を更新します。

default-targets-scrape-interval-settings: |-
    kubelet = "60s"
    coredns = "30s"
    cadvisor = "30s"
    ...

ポッドの注釈に基づくスクレイピングを有効にする

カスタム Prometheus 構成を作成せずにアプリケーション ポッドをスクレーピングするために、クラスター内のポッドに注釈を追加します。特定の注釈を持つポッドのスクレイピングを有効にするには、ConfigMap の podannotationnamespaceregex セクションで、スクレーピングする注釈を含むポッドの名前空間の正規表現をpodannotationnamespaceregexします。

たとえば、次のように設定すると、名前空間 kube-systemmy-namespace 内にある注釈付きのポッドのみがスクレイピングされます。

pod-annotation-based-scraping: |-
    podannotationnamespaceregex = "kube-system|my-namespace"

ConfigMap の metadata セクションに注釈を追加します。 prometheus.io/scrape: "true" はポッドをスクレイピングするために必要ですが、 prometheus.io/pathprometheus.io/port は、メトリックがポッドでホストされているパスとポートを示します。 次の例では、 <pod IP>:8080/metricsでメトリックをホストしているポッドの注釈を定義します。

metadata:   
  annotations:
    prometheus.io/scrape: 'true'
    prometheus.io/path: '/metrics'
    prometheus.io/port: '8080'

警告

多くの名前空間からポッドの注釈のスクレイピングを行うと、注釈を持つポッドの数に応じて、非常に大量のメトリックが生成される可能性があります。

既定のターゲットによって収集されるメトリックのカスタマイズ

Azure Monitor の Prometheus メトリックの最小インジェスト プロファイルの説明に従って、既定のターゲットの最小メトリックのみが収集されます。 既定のターゲットからすべてのメトリックを収集するには、ConfigMap の minimalingestionprofile セクションで falsedefault-targets-metrics-keep-list に設定します。

minimalingestionprofile = false

または、既定のターゲットに対して収集するメトリックを追加するには、 default-targets-metrics-keep-listの下にある保持リストを更新します。

たとえば、kubelet は、既定のターゲット kubelet のメトリック フィルター処理設定です。 正規表現ベースのフィルター処理を使用して、既定のターゲットに対して収集されたメトリックをフィルター処理するには、次のスクリプトを使用します。

kubelet = "metricX|metricY"
apiserver = "mymetric.*"

注意

正規表現で引用符または円記号を使用する場合は、たとえば "test\'smetric\"s\""testbackslash\\* のように、円記号を使用してエスケープする必要があります。

既定のターゲットをさらにカスタマイズしてコレクションの頻度やラベルなどのプロパティを変更する場合は、そのターゲットの値を false に設定して無効にします。 次に、「 Azure Monitor での Prometheus メトリックのスクレーピングのカスタマイズ」の説明に従って、ターゲットのカスタム ジョブを作成します。

クラスターの別名

クラスターのリソース ID の最後の部分は、データを一意に識別するためにすべての時系列に追加されます。 たとえば、リソース ID が/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/rg-name/providers/Microsoft.ContainerService/managedClusters/myclustername の場合、クラスター ラベルは myclustername になります。 このクラスターラベルを上書きするには、prometheus-collector-settingscluster_alias設定を更新します。

注意

英数字のみを使用できます。 それ以外の文字はすべて、_ に置き換えられます。 記録ルールとアラート ルールを有効にする場合は、ルールを機能させるために、ルールオンボード テンプレートのクラスター名パラメーターでクラスターエイリアス名を使用してください。

  prometheus-collector-settings: |-
    cluster_alias = ""

デバッグ モード

デバッグ目的でスクレイピングされているすべてのメトリックを表示するには、enabled設定の下で設定truedebug-modeに更新することで、メトリック アドオン エージェントをデバッグ モードで実行するように構成できます。

警告

このモードはパフォーマンスに影響を与える可能性があり、デバッグのために短時間だけ有効にする必要があります。

次のステップ

Prometheus のメトリックに対してアラートを設定する
Prometheus のメトリックのクエリを実行する
Prometheus メトリックの収集に関する詳細情報