AWS マネージドコレクターの使用 - Amazon Managed Service for Prometheus

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS マネージドコレクターの使用

Amazon Managed Service for Prometheus コレクターを使用するには、Amazon EKS クラスター内のメトリクスを検出して取得するスクレイパーを作成する必要があります。

  • Amazon EKS クラスターを作成するときに、スクレイパーを作成できます。スクレイパーの作成を含め、Amazon EKS クラスターの作成に関する詳細については、「Amazon EKS ユーザーガイド」の「Amazon EKS クラスターの作成」を参照してください。

  • AWS API を使用してプログラムで、または を使用して、独自のスクレイパーを作成できます AWS CLI。

Amazon Managed Service for Prometheus コレクターは、Prometheus と互換性のあるメトリクスをスクレイピングします。Prometheus 互換メトリクスの詳細については、「Prometheus と互換性のあるメトリクスとはどのようなものですか。」を参照してください。Amazon EKS クラスターは、API サーバーのメトリクスを公開します。Kubernetes バージョン 1.28以降の Amazon EKS クラスターでは、 kube-schedulerおよび のメトリクスも公開されますkube-controller-manager。詳細については、「Amazon EKS ユーザーガイド」の「コントロールプレーンの raw メトリクスを Prometheus 形式で取得する」を参照してください。

注記

クラスターからメトリクスをスクレイピングすると、ネットワークの使用に対して料金が発生する可能性があります。これらのコストを最適化する 1 つの方法は、提供されたメトリクスを圧縮 (gzip などを使用) するように /metrics エンドポイントを設定し、ネットワーク全体で移動する必要があるデータを減らすことです。これを行う方法は、メトリクスを提供するアプリケーションまたはライブラリによって異なります。一部のライブラリは、デフォルトで gzip を使用します。

以下のトピックでは、スクレイパーを作成、管理、および設定する方法について説明します。

スクレイパーの作成

Amazon Managed Service for Prometheus コレクターは、Amazon EKS クラスターからメトリクスを検出して収集するスクレイパーで構成されています。Amazon Managed Service for Prometheus ではお客様に代わってスクレイパーが管理されます。インスタンス、エージェント、スクレイパーをご自身で管理しなくても、必要なスケーラビリティ、セキュリティ、信頼性を実現できます。

スクレイパーを作成する方法は 3 つあります。

  • Amazon EKS コンソールを使用して Amazon EKS クラスターを作成し、Prometheus メトリクスをオンにすると、スクレイパーが自動的に作成されます。

  • スクレイパーは、既存のクラスターの Amazon EKS コンソールから作成できます。Amazon EKS コンソールでクラスターを開き、オブザーバビリティタブでスクレイパーの追加を選択します。

    使用可能な設定の詳細については、「Amazon EKS ユーザーガイド」の「Prometheus メトリクスを有効にする」を参照してください。

  • AWS API または を使用してスクレイパーを作成できます AWS CLI。

    これらのオプションについては、次の手順で説明します。

独自のスクレイパーを作成するには、いくつかの前提条件があります。

  • Amazon EKS クラスターが作成済みである必要があります。

  • Amazon EKS クラスターは、クラスターエンドポイントアクセスコントロールがプライベートアクセスを含むように設定されている必要があります。プライベートとパブリックを含めることができますが、プライベートを含める必要があります。

  • Amazon EKS クラスターが存在する Amazon VPC では、DNS が有効になっている必要があります。

注記

クラスターは、Amazon リソースネーム (ARN) によってスクレイパーと関連付けられます。クラスターを削除し、同じ名前で新しいクラスターを作成すると、ARN は新しいクラスターで再利用されます。このため、スクレイパーは新しいクラスターのメトリクスを収集しようとします。スクレイパーの削除は、クラスターの削除とは別個に行います。

AWS API

AWS API を使用してスクレイパーを作成するには

CreateScraper API オペレーションを使用して、 AWS API でスクレイパーを作成します。次の例では、us-west-2 リージョンでスクレイパーを作成します。 AWS アカウント、ワークスペース、セキュリティ、Amazon EKS クラスター情報を独自の ID に置き換え、スクレイパーに使用する設定を指定する必要があります。

注記

セキュリティグループとサブネットは、接続先のクラスターのセキュリティグループとサブネットに設定する必要があります。

少なくとも 2 つ以上のアベイラビリティーゾーンにある 2 つ以上のサブネットを含める必要があります。

scrapeConfiguration は、base64 でエンコードされた Prometheus 設定 YAML ファイルです。GetDefaultScraperConfiguration API オペレーションで汎用設定をダウンロードできます。scrapeConfiguration の形式の詳細については、「スクレイパー設定」を参照してください。

POST /scrapers HTTP/1.1 Content-Length: 415 Authorization: AUTHPARAMS X-Amz-Date: 20201201T193725Z User-Agent: aws-cli/1.18.147 Python/2.7.18 Linux/5.4.58-37.125.amzn2int.x86_64 botocore/1.18.6 { "alias": "myScraper", "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:us-west-2:account-id:workspace/ws-workspace-id" } }, "source": { "eksConfiguration": { "clusterArn": "arn:aws:eks:us-west-2:account-id:cluster/cluster-name", "securityGroupIds": ["sg-security-group-id"], "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"] } }, "scrapeConfiguration": { "configurationBlob": <base64-encoded-blob> } }
AWS CLI

AWS CLIを使用してスクレイパーを作成するには

create-scraper コマンドを使用して AWS CLIでスクレイパーを作成します。次の例では、us-west-2 リージョンでスクレイパーを作成します。 AWS アカウント、ワークスペース、セキュリティ、Amazon EKS クラスター情報を独自の ID に置き換え、スクレイパーに使用する設定を指定する必要があります。

注記

セキュリティグループとサブネットは、接続先のクラスターのセキュリティグループとサブネットに設定する必要があります。

少なくとも 2 つ以上のアベイラビリティーゾーンにある 2 つ以上のサブネットを含める必要があります。

scrape-configuration は、base64 でエンコードされた Prometheus 設定 YAML ファイルです。汎用設定は、get-default-scraper-configuration コマンドを使用してダウンロードできます。scrape-configuration の形式の詳細については、「スクレイパー設定」を参照してください。

aws amp create-scraper \ --source eksConfiguration="{clusterArn='arn:aws:eks:us-west-2:account-id:cluster/cluster-name', securityGroupIds=['sg-security-group-id'],subnetIds=['subnet-subnet-id-1', 'subnet-subnet-id-2']}" \ --scrape-configuration configurationBlob=<base64-encoded-blob> \ --destination ampConfiguration="{workspaceArn='arn:aws:aps:us-west-2:account-id:workspace/ws-workspace-id'}"

以下は、 AWS API で使用できるスクレイパーオペレーションの完全なリストです。

  • CreateScraper API オペレーションを使用してスクレイパーを作成します。

  • ListScrapers API オペレーションを使用して既存のスクレイパーを一覧表示します。

  • UpdateScraper API オペレーションを使用して、スクレイパーのエイリアス、設定、または送信先を更新します。

  • DeleteScraper API オペレーションを使用してスクレイパーを削除します。

  • DescribeScraper API オペレーションを使用してスクレイパーの詳細を取得します。

  • GetDefaultScraperConfiguration API オペレーションを使用してスクレイパーの汎用設定を取得します。

注記

スクレイピングする Amazon EKS クラスターは、Amazon Managed Service for Prometheus がメトリクスにアクセスできるように設定されている必要があります。次のトピックでは、クラスターの設定方法について説明します。

クロスアカウントの設定

メトリクスを収集する Amazon EKS クラスターが Amazon Managed Service for Prometheus コレクターとは異なるアカウントにある場合に、クロスアカウント設定でスクレイパーを作成するには、次の手順を使用します。

たとえば、2 つのアカウント、Amazon EKS account_id_sourceがある最初のソースアカウント、および Amazon Managed Service for Prometheus ワークスペースaccount_id_targetがある 2 番目のターゲットアカウントがある場合です。

クロスアカウント設定でスクレイパーを作成するには
  1. ソースアカウントで、ロールを作成しarn:aws:iam::account_id_source:role/Source、次の信頼ポリシーを追加します。

    { "Effect": "Allow", "Principal": { "Service": [ "scraper.aps.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "ArnEquals": { "aws:SourceArn": "scraper_ARN" }, "StringEquals": { "AWS:SourceAccount": "account_id" } } }
  2. ソース (Amazon EKS クラスター) とターゲット (Amazon Managed Service for Prometheus ワークスペース) のすべての組み合わせで、ロールを作成しarn:aws:iam::account_id_target:role/TargetAmazonPrometheusRemoteWriteAccess のアクセス許可を持つ次の信頼ポリシーを追加する必要があります。

    { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account_id_source:role/Source" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "scraper_ARN" } } }
  3. --role-configuration オプションを使用してスクレイパーを作成します。

    aws amp create-scraper \ --source eksConfiguration="{clusterArn='arn:aws:eks:us-west-2:account-id_source:cluster/xarw,subnetIds=[subnet-subnet-id]}" \ --scrape-configuration configurationBlob=<base64-encoded-blob> \ --destination ampConfiguration="{workspaceArn='arn:aws:aps:us-west-2:account-id_target:workspace/ws-workspace-id'}"\ --role-configuration '{"sourceRoleArn":"arn:aws:iam::account-id_source:role/Source", "targetRoleArn":"arn:aws:iam::account-id_target:role/Target"}'
  4. スクレイパーの作成を検証します。

    aws amp list-scrapers { "scrapers": [ { "scraperId": "scraper-id", "arn": "arn:aws:aps:us-west-2:account_id_source:scraper/scraper-id", "roleArn": "arn:aws:iam::account_id_source:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraperInternal_cc319052-41a3-4", "status": { "statusCode": "ACTIVE" }, "createdAt": "2024-10-29T16:37:58.789000+00:00", "lastModifiedAt": "2024-10-29T16:55:17.085000+00:00", "tags": {}, "source": { "eksConfiguration": { "clusterArn": "arn:aws:eks:us-west-2:account_id_source:cluster/xarw", "securityGroupIds": [ "sg-security-group-id", "sg-security-group-id" ], "subnetIds": [ "subnet-subnet_id" ] } }, "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:us-west-2:account_id_target:workspace/ws-workspace-id" } } } ] }

RoleConfiguration ロールとサービスにリンクされたロールの変更

の代わりにサービスにリンクされたロールに切り替えRoleConfigurationて Amazon Managed Service for Prometheus ワークスペースに書き込む場合は、 を更新UpdateScraperし、 を使用せずにスクレイパーと同じアカウントのワークスペースを提供する必要がありますRoleConfigurationRoleConfiguration はスクレイパーから削除され、サービスにリンクされたロールが使用されます。

スクレイパーと同じアカウントのワークスペースを変更し、引き続き を使用する場合はRoleConfigurationRoleConfigurationで を再度指定する必要がありますUpdateScraper

カスタマーマネージドキーで有効になっているワークスペース用のスクレイパーの作成

カスタマーマネージドキーを使用して Amazon Managed Service for Prometheus ワークスペースにメトリクスを取り込むスクレイパーを作成するには、ソースとターゲットの両方を同じアカウントに設定した --role-configuration を使用します。

aws amp create-scraper \ --source eksConfiguration="{clusterArn='arn:aws:eks:us-west-2:account-id:cluster/xarw,subnetIds=[subnet-subnet_id]}" \ --scrape-configuration configurationBlob=<base64-encoded-blob> \ --destination ampConfiguration="{workspaceArn='arn:aws:aps:us-west-2:account-id:workspace/ws-workspace-id'}"\ --role-configuration '{"sourceRoleArn":"arn:aws:iam::account_id:role/Source", "targetRoleArn":"arn:aws:iam::account_id:role/Target"}'

スクレイパー作成時の一般的なエラー

以下は、新しいスクレイパーの作成時に発生する場合がある最も一般的な問題です。

  • 必要な AWS リソースが存在しません。指定されたセキュリティグループサブネット、および Amazon EKS クラスターが存在している必要があります。

  • IP アドレス領域が不足しています。CreateScraper API に渡すサブネットごとに、少なくとも 1 つの IP アドレスが必要です。

Amazon EKS クラスターの設定

Amazon EKS クラスターは、スクレイパーがメトリクスにアクセスできるように設定する必要があります。この設定には 2 つのオプションがあります。

  • Amazon EKS のアクセスエントリを使用して、Amazon Managed Service for Prometheus コレクターにクラスターへのアクセス権を自動的に付与します。

  • Amazon EKS クラスターをマネージドメトリクススクレイピング用に手動で設定します。

以下のトピックで、これらの各手順について詳しく説明します。

アクセスエントリを使用してスクレイパーアクセス用に Amazon EKS を設定する

Amazon EKS のアクセスエントリを使用することは、クラスターからメトリクスをスクレイピングするためのアクセス権を Amazon Managed Service for Prometheus に付与する最も簡単な方法です。

スクレイピングする Amazon EKS クラスターは、API 認証を許可するように設定する必要があります。クラスター認証モードは、API または API_AND_CONFIG_MAP に設定する必要があります。これは、Amazon EKS コンソールのクラスター詳細の [アクセス設定] タブで確認できます。詳細については、「Amazon EKS ユーザーガイド」の「Amazon EKS クラスターで Kubernetes オブジェクトへのアクセスを IAM ロールまたはユーザーに許可する」を参照してください。

クラスターの作成時または作成後にスクレイパーを作成できます。

  • クラスターの作成時 - Amazon EKS コンソールを使用して Amazon EKS クラスターを作成するときに (クラスターの一部としてスクレイパーを作成する手順に従って)、このアクセスを設定できます。アクセスエントリポリシーが自動的に作成され、クラスターメトリクスへのアクセスが Amazon Managed Service for Prometheus に許可されます。

  • クラスターの作成後に を追加する – Amazon EKS クラスターがすでに存在する場合は、認証モードを APIまたは に設定します。Amazon Managed Service for Prometheus API または CLI または Amazon EKS コンソールを使用して作成するAPI_AND_CONFIG_MAPスクレイパーには、自動的に正しいアクセスエントリポリシーが作成され、スクレイパーはクラスターにアクセスできます。

アクセスエントリポリシーの作成

スクレイパーを作成し、Amazon Managed Service for Prometheus でアクセスエントリポリシーを自動的に生成できるようにすると、次のポリシーが生成されます。アクセスエントリの詳細については、「Amazon EKS ユーザーガイド」の「IAM ロールまたはユーザーに Kubernetes へのアクセスを許可する」を参照してください。

{ "rules": [ { "effect": "allow", "apiGroups": [ "" ], "resources": [ "nodes", "nodes/proxy", "nodes/metrics", "services", "endpoints", "pods", "ingresses", "configmaps" ], "verbs": [ "get", "list", "watch" ] }, { "effect": "allow", "apiGroups": [ "extensions", "networking.k8s.io" ], "resources": [ "ingresses/status", "ingresses" ], "verbs": [ "get", "list", "watch" ] }, { "effect": "allow", "apiGroups": [ "metrics.eks.amazonaws.com" ], "resources": [ "kcm/metrics", "ksh/metrics" ], "verbs": [ "get" ] }, { "effect": "allow", "nonResourceURLs": [ "/metrics" ], "verbs": [ "get" ] } ] }

スクレイパーアクセス用に Amazon EKS を手動で設定する

aws-auth ConfigMap を使用して kubernetes クラスターへのアクセスを制御する場合でも、Amazon Managed Service for Prometheus スクレイパーにメトリクスへのアクセスを許可できます。次の手順では、Amazon Managed Service for Prometheus に対して、Amazon EKS クラスターのメトリクスをスクレイピングするためのアクセス権を付与します。

注記

ConfigMap およびアクセスエントリの詳細については、「「Amazon EKS ユーザーガイド」の「IAM ロールまたはユーザーに Kubernetes へのアクセスを許可する」を参照してください。

この手順では、 kubectlと CLI AWS を使用します。kubectl のインストールの詳細については、「Amazon EKS ユーザーガイド」の「kubectl のインストール」を参照してください。

Amazon EKS クラスターをマネージドメトリクスクレイピング用に手動で設定するには
  1. clusterrole-binding.yml という名前のファイルを作成し、次のテキストを記述します。

    apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: aps-collector-role rules: - apiGroups: [""] resources: ["nodes", "nodes/proxy", "nodes/metrics", "services", "endpoints", "pods", "ingresses", "configmaps"] verbs: ["describe", "get", "list", "watch"] - apiGroups: ["extensions", "networking.k8s.io"] resources: ["ingresses/status", "ingresses"] verbs: ["describe", "get", "list", "watch"] - nonResourceURLs: ["/metrics"] verbs: ["get"] - apiGroups: ["metrics.eks.amazonaws.com"] resources: ["kcm/metrics", "ksh/metrics"] verbs: ["get"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: aps-collector-user-role-binding subjects: - kind: User name: aps-collector-user apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: aps-collector-role apiGroup: rbac.authorization.k8s.io
  2. クラスターで次のコマンドを実行します。

    kubectl apply -f clusterrole-binding.yml

    これにより、クラスターのロールバインディングとルールが作成されます。この例では、aps-collector-role をロール名、aps-collector-user をユーザー名として使用しています。

  3. 次のコマンドは、scraper-id という ID のスクレイパーに関する情報を提供します。これは、前のセクションのコマンドを使用して作成したスクレイパーです。

    aws amp describe-scraper --scraper-id scraper-id
  4. describe-scraper の結果から roleArn を探します。この形式は次のようになります。

    arn:aws:iam::account-id:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraper_unique-id

    Amazon EKS では、この ARN に別の形式が必要です。次のステップで使用するために、返される ARN の形式を調整する必要があります。この形式に合わせて編集してください。

    arn:aws:iam::account-id:role/AWSServiceRoleForAmazonPrometheusScraper_unique-id

    例えば、この ARN の場合、

    arn:aws:iam::111122223333:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-56ef-7

    以下のように記述する必要があります。

    arn:aws:iam::111122223333:role/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-56ef-7
  5. 前のステップで変更した roleArn と、クラスター名およびリージョンを使用して、クラスター内で以下のコマンドを実行します。

    eksctl create iamidentitymapping --cluster cluster-name --region region-id --arn roleArn --username aps-collector-user

    これにより、スクレイパーは clusterrole-binding.yml ファイルに作成したロールとユーザーを使用してクラスターにアクセスできます。

スクレイパーの検出と削除

AWS API または を使用して AWS CLI 、アカウントのスクレイパーを一覧表示したり、削除したりできます。

注記

最新バージョンの AWS CLI または SDK を使用していることを確認します。最新バージョンには、最新の特長と機能に加え、セキュリティアップデートも含まれています。または、常に最新のコマンドラインエクスペリエンスを提供する AWS Cloudshell を自動的に使用します。

アカウント内のすべてのスクレイパーを一覧表示するには、ListScrapers API オペレーションを使用します。

または、 を使用して AWS CLIを呼び出します。

aws amp list-scrapers

ListScrapers は、アカウント内のすべてのスクレイパーを返します。例:

{ "scrapers": [ { "scraperId": "s-1234abcd-56ef-7890-abcd-1234ef567890", "arn": "arn:aws:aps:us-west-2:123456789012:scraper/s-1234abcd-56ef-7890-abcd-1234ef567890", "roleArn": "arn:aws:iam::123456789012:role/aws-service-role/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-2931", "status": { "statusCode": "DELETING" }, "createdAt": "2023-10-12T15:22:19.014000-07:00", "lastModifiedAt": "2023-10-12T15:55:43.487000-07:00", "tags": {}, "source": { "eksConfiguration": { "clusterArn": "arn:aws:eks:us-west-2:123456789012:cluster/my-cluster", "securityGroupIds": [ "sg-1234abcd5678ef90" ], "subnetIds": [ "subnet-abcd1234ef567890", "subnet-1234abcd5678ab90" ] } }, "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:us-west-2:123456789012:workspace/ws-1234abcd-5678-ef90-ab12-cdef3456a78" } } } ] }

スクレイパーを削除するには、ListScrapers オペレーションを使用して削除するスクレイパーの scraperId を見つけ、DeleteScraper オペレーションを使用して削除します。

または、 を使用して AWS CLIを呼び出します。

aws amp delete-scraper --scraper-id scraperId

スクレイパー設定

Prometheus 互換のスクレイパー設定を使用して、スクレイパーがメトリクスを検出して収集する方法を制御できます。例えば、メトリクスをワークスペースに送信する間隔を変更できます。再ラベル付けを使用して、メトリクスのラベルを動的に書き換えることもできます。スクレイパー設定は、スクレイパーの定義の一部である YAML ファイルです。

新しいスクレイパーを作成したら、API コールで base64 でエンコードされた YAML ファイルを提供して設定を指定します。Amazon Managed Service for Prometheus API の GetDefaultScraperConfiguration オペレーションを含む汎用設定ファイルをダウンロードできます。

スクレイパーの設定を変更するには、 UpdateScraperオペレーションを使用できます。メトリクスのソース (別の Amazon EKS クラスターなど) を更新する必要がある場合は、スクレイパーを削除し、新しいソースで再作成する必要があります。

サポートされている設定

スクレイパーの設定形式に関する情報 (可能な値の詳細な内訳を含む) については、Prometheus ドキュメントの「Configuration」を参照してください。グローバル設定オプションと <scrape_config> オプションには、最も一般的に必要なオプションが記載されています。

サポートされているサービスは Amazon EKS のみであるため、サポートされるサービス検出設定 (<*_sd_config>) は <kubernetes_sd_config> のみです。

許可される設定セクションの完全なリスト:

  • <global>

  • <scrape_config>

  • <static_config>

  • <relabel_config>

  • <metric_relabel_configs>

  • <kubernetes_sd_config>

これらのセクション内の制限は、サンプル設定ファイルの後に一覧表示されます。

設定ファイルの例

以下は、30 秒のスクレイプ間隔の YAML 設定ファイルのサンプルです。このサンプルには、kube API サーバーメトリクスと、kube-controller-manager および kube-scheduler メトリクスのサポートが含まれています。詳細については、「Amazon EKS ユーザーガイド」の「コントロールプレーンの raw メトリクスを Prometheus 形式で取得する」を参照してください。

global: scrape_interval: 30s external_labels: clusterArn: apiserver-test-2 scrape_configs: - job_name: pod_exporter kubernetes_sd_configs: - role: pod - job_name: cadvisor scheme: https authorization: type: Bearer credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token kubernetes_sd_configs: - role: node relabel_configs: - action: labelmap regex: __meta_kubernetes_node_label_(.+) - replacement: kubernetes.default.svc:443 target_label: __address__ - source_labels: [__meta_kubernetes_node_name] regex: (.+) target_label: __metrics_path__ replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor # apiserver metrics - scheme: https authorization: type: Bearer credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token job_name: kubernetes-apiservers kubernetes_sd_configs: - role: endpoints relabel_configs: - action: keep regex: default;kubernetes;https source_labels: - __meta_kubernetes_namespace - __meta_kubernetes_service_name - __meta_kubernetes_endpoint_port_name # kube proxy metrics - job_name: kube-proxy honor_labels: true kubernetes_sd_configs: - role: pod relabel_configs: - action: keep source_labels: - __meta_kubernetes_namespace - __meta_kubernetes_pod_name separator: '/' regex: 'kube-system/kube-proxy.+' - source_labels: - __address__ action: replace target_label: __address__ regex: (.+?)(\\:\\d+)? replacement: $1:10249 # Scheduler metrics - job_name: 'ksh-metrics' kubernetes_sd_configs: - role: endpoints metrics_path: /apis/metrics.eks.amazonaws.com/v1/ksh/container/metrics scheme: https bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - source_labels: - __meta_kubernetes_namespace - __meta_kubernetes_service_name - __meta_kubernetes_endpoint_port_name action: keep regex: default;kubernetes;https # Controller Manager metrics - job_name: 'kcm-metrics' kubernetes_sd_configs: - role: endpoints metrics_path: /apis/metrics.eks.amazonaws.com/v1/kcm/container/metrics scheme: https bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - source_labels: - __meta_kubernetes_namespace - __meta_kubernetes_service_name - __meta_kubernetes_endpoint_port_name action: keep regex: default;kubernetes;https

以下は、 AWS マネージドコレクターに固有の制限です。

  • スクレイプ間隔 — スクレイパー設定では、30 秒未満のスクレイプ間隔を指定できません。

  • ターゲットstatic_config 内のターゲットは IP アドレスとして指定する必要があります。

  • DNS 解決 — ターゲット名に関連して、この設定で認識されるサーバー名は Kubernetes api サーバー kubernetes.default.svc のみです。他のすべてのマシン名は IP アドレスで指定する必要があります。

  • 認可 - 認可が必要ない場合は省略します。必要な場合、認可は Bearer でなければならず、ファイル /var/run/secrets/kubernetes.io/serviceaccount/token を指す必要があります。つまり、使用する場合、認可セクションは次のようになる必要があります。

    authorization: type: Bearer credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
    注記

    type: Bearer はデフォルトであるため、省略できます。

スクレイパー設定のトラブルシューティング

Amazon Managed Service for Prometheus コレクターは、メトリクスの検出と収集を自動的に行います。しかし、予想したメトリクスが Amazon Managed Service for Prometheus ワークスペースに表示されない場合、どのようにトラブルシューティングできるでしょうか。

重要

Amazon EKS クラスターのプライベートアクセスが有効になっていることを確認します。詳細については、「Amazon EKS ユーザーガイド」の「クラスタープライベートエンドポイント」を参照してください。

up メトリクスは便利なツールです。Amazon Managed Service for Prometheus コレクターが検出した各エンドポイントについて、このメトリクスは自動的に送信されます。このメトリクスには 3 つの状態があり、コレクター内で発生している問題のトラブルシューティングに役立ちます。

  • up が存在しない — エンドポイントの up メトリクスが存在しない場合、コレクターがエンドポイントを検出できなかったことを意味します。

    エンドポイントが存在することが確実な場合は、コレクターがエンドポイントを見つけられない理由がいくつかあります。

    • スクレイプ設定を調整する必要がある場合があります。検出を調整する必要があるrelabel_config場合があります。

    • 検出roleに使用される に問題がある可能性があります。

    • Amazon EKS クラスターで使用される Amazon VPC で DNS が有効になっていない可能性があるため、コレクターはエンドポイントを見つけられません。

  • up は存在するものの、常に 0 — up が存在するが 0 の場合、コレクターはエンドポイントを検出できますが、Prometheus 互換のメトリクスを検出できません。

    この場合は、curl エンドポイントに対して直接コマンドを実行してみるといいかもしれません。プロトコル (http または https)、エンドポイント、使用しているポートなど、詳細が正しいことを検証できます。また、エンドポイントの応答が有効な 200 レスポンスであり、Prometheus 形式に従っていることを確認することもできます。最後に、レスポンスの本文を最大許容サイズより大きくすることはできません ( AWS マネージドコレクターの制限については、次のセクションを参照してください)。

  • up が存在し、0 より大きい — up が存在し、かつ 0 より大きい場合、メトリクスは Amazon Managed Service for Prometheus に送信されています。

    Amazon Managed Service for Prometheus (または Amazon Managed Grafana などの代替ダッシュボード) で正しいメトリクスを検出していることを確認します。curl をもう一度使用して、/metrics エンドポイントに予想したデータがあるかどうかを確認できます。また、スクレイパーあたりのエンドポイント数など、他の制限を超えていないことも確認してください。スクレイピングされるメトリクスエンドポイントの数を調べるには、count(up) を使用して up メトリクスの数を確認します。

スクレイパーの制限事項

Amazon Managed Service for Prometheus が提供するフルマネージド型スクレイパーには、いくつかの制限があります。

  • リージョン — EKS クラスター、マネージドスクレイパー、Amazon Managed Service for Prometheus ワークスペースはすべて同じ AWS リージョンにある必要があります。

  • コレクター — 1 リージョンの 1 アカウントあたり、最大 10 個の Amazon Managed Service for Prometheus スクレイパーを設定できます。

    注記

    クォータの引き上げをリクエストすることで、この上限を引き上げることができます。

  • メトリクスレスポンス — 任意の 1 つの /metrics エンドポイントリクエストからのレスポンスの本文は 50 メガバイト (MB) を超えることはできません。

  • スクレイパーあたりのエンドポイント — スクレイパーは最大 30,000 の /metrics エンドポイントをスクレイピングできます。

  • スクレイプ間隔 — スクレイパー設定では、30 秒未満のスクレイプ間隔を指定できません。