翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Controllers for Kubernetes で Amazon Managed Service for AWS Prometheus を管理する
Amazon Managed Service for Prometheus は、AWS Controllers for Kubernetes (ACK)
このセクションでは、既存の Amazon EKS クラスターで AWS Controllers for Kubernetes と Amazon Managed Service for Prometheus を設定する方法について説明します。
AWS Controllers for Kubernetes
前提条件
AWS Controllers for Kubernetes と Amazon Managed Service for Prometheus を Amazon EKS クラスターと統合する前に、次の前提条件が必要です。
-
Amazon Managed Service for Prometheus AWS アカウント および IAM ロールをプログラムで作成するには、既存の および アクセス許可が必要です。
-
OpenID Connect (OIDC) を有効にした既存の Amazon EKS クラスターが必要です。
OIDC が有効でない場合、次のコマンドを使用して有効にすることができます。
YOUR_CLUSTER_NAME
とAWS_REGION
は、アカウントに応じた適切な値に置き換えてください。eksctl utils associate-iam-oidc-provider \ --cluster ${
YOUR_CLUSTER_NAME
} --region ${AWS_REGION
} \ --approveAmazon EKS で OIDC を使用する方法の詳細については、「Amazon EKS ユーザーガイド」の「OpenID Connect アイデンティティプロバイダーからクラスターのユーザーを認証する」と「クラスター用の IAM OIDC プロバイダーの作成」を参照してください。
-
Amazon EKS クラスターに Amazon EBS CSI ドライバーがインストールされている必要があります。
-
AWS CLI がインストールされている必要があります。 AWS CLI は、コマンドラインから AWS 機能を呼び出すために使用されます。
-
Kubernetes のパッケージマネージャーである Helm がインストールされている必要があります。
-
Amazon EKS クラスターで、Prometheus のコントロールプレーンメトリクスがセットアップされている必要があります。
-
新しいワークスペースからのアラートの送信先となる Amazon Simple Notification Service (Amazon SNS) トピックが必要です。トピックにメッセージを送信するためのアクセス許可が Amazon Managed Service for Prometheus に付与されていることを確認してください。
Amazon EKS クラスターが正しく構成されたら、kubectl get --raw
/metrics
を呼び出して、Prometheus 用にフォーマットされたメトリクスを確認できます。これで、 AWS Controllers for Kubernetes サービスコントローラーをインストールし、それを使用して Amazon Managed Service for Prometheus リソースをデプロイする準備が整いました。
AWS Controllers for Kubernetes を使用したワークスペースのデプロイ
新しい Amazon Managed Service for Prometheus ワークスペースをデプロイするには、 AWS Controllers for Kubernetes コントローラーをインストールし、それを使用してワークスペースを作成します。
AWS Controllers for Kubernetes を使用して新しい Amazon Managed Service for Prometheus ワークスペースをデプロイするには
-
以下のコマンドを実行し、Helm を使用して Amazon Managed Service for Prometheus サービスコントローラーをインストールします。詳細については、 の Controllers for Kubernetes ドキュメント
の AWS 「ACK Controller をインストールする」を参照してください GitHub。 region
には、us-east-1
など、システムに適したリージョンを使用してください。export SERVICE=prometheusservice export RELEASE_VERSION=`curl -sL https://api.github.com/repos/aws-controllers-k8s/$SERVICE-controller/releases/latest | grep '"tag_name":' | cut -d'"' -f4` export ACK_SYSTEM_NAMESPACE=ack-system export AWS_REGION=
region
aws ecr-public get-login-password --region us-east-1 | helm registry login --username AWS --password-stdin public.ecr.aws helm install --create-namespace -n $ACK_SYSTEM_NAMESPACE ack-$SERVICE-controller \ oci://public.ecr.aws/aws-controllers-k8s/$SERVICE-chart --version=$RELEASE_VERSION --set=aws.region=$AWS_REGIONしばらくすると、成功を示す次のようなレスポンスが表示されます。
You are now able to create Amazon Managed Service for Prometheus (AMP) resources! The controller is running in "cluster" mode. The controller is configured to manage AWS resources in region: "us-east-1"
オプションで、次のコマンドを使用して AWS Controllers for Kubernetes コントローラーが正常にインストールされたことを確認できます。
helm list --namespace $ACK_SYSTEM_NAMESPACE -o yaml
これにより、コントローラー
ack-prometheusservice-controller
に関する情報 (status: deployed
など) が返されます。 -
workspace.yaml
という名前のファイルを作成し、次のテキストを記述します。これは、作成するワークスペースの設定として使用されます。apiVersion: prometheusservice.services.k8s.aws/v1alpha1 kind: Workspace metadata: name: my-amp-workspace spec: alias: my-amp-workspace tags: ClusterName: EKS-demo
-
次のコマンドを実行してワークスペースを作成します (このコマンドでは、ステップ 1 で設定したシステム変数が使用されます)。
kubectl apply -f workspace.yaml -n $ACK_SYSTEM_NAMESPACE
しばらくすると、アカウントに
my-amp-workspace
という新しいワークスペースが表示されます。次のコマンドを実行して、ワークスペース ID などのワークスペースの詳細とステータスを確認します。または、Amazon Managed Service for Prometheus コンソール
で新しいワークスペースを確認することもできます。 kubectl describe workspace my-amp-workspace -n $ACK_SYSTEM_NAMESPACE
注記
新しいワークスペースを作成する代わりに、既存のワークスペースを使用
することもできます。 -
Rulegroups の設定として 2 つの新しい yaml ファイルを作成し、次の設定を使用して次に AlertManager 作成します。
次の設定を
rulegroup.yaml
として保存します。WORKSPACE-ID
は、前のステップで確認したワークスペース ID に置き換えます。apiVersion: prometheusservice.services.k8s.aws/v1alpha1 kind: RuleGroupsNamespace metadata: name: default-rule spec: workspaceID:
WORKSPACE-ID
name: default-rule configuration: | groups: - name: example rules: - alert: HostHighCpuLoad expr: 100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) > 60 for: 5m labels: severity: warning event_type: scale_up annotations: summary: Host high CPU load (instance {{ $labels.instance }}) description: "CPU load is > 60%\n VALUE = {{ $value }}\n LABELS = {{ $labels }}" - alert: HostLowCpuLoad expr: 100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[2m])) * 100) < 30 for: 5m labels: severity: warning event_type: scale_down annotations: summary: Host low CPU load (instance {{ $labels.instance }}) description: "CPU load is < 30%\n VALUE = {{ $value }}\n LABELS = {{ $labels }}"次の設定を
alertmanager.yaml
として保存します。WORKSPACE-ID
は、前のステップで確認したワークスペース ID に置き換えます。TOPIC-ARN
を通知を送信する Amazon SNS トピックの ARN に、REGION
を使用中の に置き換え AWS リージョン ます。Amazon Managed Service for Prometheus に、Amazon SNS トピックへのアクセス許可が必要であることを忘れないでください。apiVersion: prometheusservice.services.k8s.aws/v1alpha1 kind: AlertManagerDefinition metadata: name: alert-manager spec: workspaceID:
WORKSPACE-ID
configuration: | alertmanager_config: | route: receiver: default_receiver receivers: - name: default_receiver sns_configs: - topic_arn:TOPIC-ARN
sigv4: region:REGION
message: | alert_type: {{ .CommonLabels.alertname }} event_type: {{ .CommonLabels.event_type }}注記
これらの設定ファイルの形式の詳細については、RuleGroupsNamespaceData「」および「」を参照してくださいAlertManagerDefinitionData。
-
次のコマンドを実行して、ルールグループとアラートマネージャーの設定を作成します (このコマンドでは、ステップ 1 で設定したシステム変数が使用されます)。
kubectl apply -f rulegroup.yaml -n $ACK_SYSTEM_NAMESPACE kubectl apply -f alertmanager.yaml -n $ACK_SYSTEM_NAMESPACE
しばらくすると変更が有効になります。
注記
リソースを作成するのではなく更新する場合は、yaml ファイルを更新し、
kubectl apply
コマンドを再実行するだけです。リソースを削除するには、次のコマンドを実行します。を、、
Workspace
、AlertManagerDefinition
または を削除するリソースのタイプResourceType
に置き換えますRuleGroupNamespace
。を削除するリソースの名前ResourceName
に置き換えます。kubectl delete
ResourceType
ResourceName
-n $ACK_SYSTEM_NAMESPACE
これで、新しいワークスペースのデプロイは完了です。次のセクションでは、このワークスペースにメトリクスを送信するようにクラスターを構成する方法を説明します。
Amazon Managed Service for Prometheus ワークスペースに書き込むための Amazon EKS クラスターの構成
このセクションでは、Helm を使用して、Amazon EKS クラスターで実行されている Prometheus を構成し、前のセクションで作成した Amazon Managed Service for Prometheus ワークスペースへのメトリクスのリモートで書き込みを行う方法について説明します。
この手順では、メトリクスの取り込みに使用するために作成した IAM ロールの名前が必要です。まだ作成していない場合は、「Amazon EKS クラスターからメトリクスを取り込むためのサービスロールの設定」を参照して、詳細と手順を確認してください。これらの手順に従うと、amp-iamproxy-ingest-role
という IAM ロールが作成されます。
Amazon EKS クラスターをリモート書き込み用に構成するには
-
次のコマンドを使用して、ワークスペースの
prometheusEndpoint
を取得します。WORKSPACE-ID
は、前のセクションで確認したワークスペース ID に置き換えます。aws amp describe-workspace --workspace-id
WORKSPACE-ID
返される結果には prometheusEndpoint が含まれ、次のような形式になります。
https://aps-workspaces.us-west-2.amazonaws.com/workspaces/ws-a1b2c3d4-a123-b456-c789-ac1234567890/
後のステップで使用するために、この URL を保存しておきます。
-
次のテキストで新しいファイルを作成し、
prometheus-config.yaml
という名前を付けます。account
は自分のアカウント ID に、workspaceURL/
は先ほど確認した URL に、region
はシステムの適切な AWS リージョン に置き換えます。serviceAccounts: server: name: "amp-iamproxy-ingest-service-account" annotations: eks.amazonaws.com/role-arn: "arn:aws:iam::
account
:role/amp-iamproxy-ingest-role" server: remoteWrite: - url:workspaceURL/
api/v1/remote_write sigv4: region:region
queue_config: max_samples_per_send: 1000 max_shards: 200 capacity: 2500 -
次の Helm コマンドを使用して、Prometheus のチャート名、名前空間の名前、チャートのバージョンを確認します。
helm ls --all-namespaces
ここまでの手順に基づくと、Prometheus チャートと名前空間にはどちらも
prometheus
という名前が付いていて、チャートのバージョンは15.2.0
のようになります。 -
前のステップで
PrometheusChartVersion
確認したPrometheusChartName
、PrometheusNamespace
、および を使用して、次のコマンドを実行します。helm upgrade
PrometheusChartName
prometheus-community/prometheus -nPrometheusNamespace
-f prometheus-config.yaml --versionPrometheusChartVersion
数分後に、アップグレードが成功したことを示すメッセージが表示されます。
-
必要に応じて、
awscurl
を使用して Amazon Managed Service for Prometheus エンドポイントにクエリを実行して、メトリクスが正常に送信されていることを確認します。Region
AWS リージョン を使用中の に、workspaceURL
をステップ 1 で見つけた URL に置き換えます。awscurl --service="aps" --region="
Region
" "workspaceURL/
api/v1/query?query=node_cpu_seconds_total"
これで、YAML ファイルを設定として使用して、Amazon Managed Service for Prometheus ワークスペースを作成し、そのワークスペースに Amazon EKS クラスターから接続することができました。これらのファイルはカスタムリソース定義 (CRD) と呼ばれ、Amazon EKS クラスター内に配置されます。 AWS Controllers for Kubernetes コントローラーを使用して、Amazon Managed Service for Prometheus のすべてのリソースをクラスターから直接管理できます。