Kelola Layanan Terkelola Amazon untuk AWS Prometheus dengan Pengontrol untuk Kubernetes - Layanan Terkelola Amazon untuk Prometheus

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Kelola Layanan Terkelola Amazon untuk AWS Prometheus dengan Pengontrol untuk Kubernetes

Amazon Managed Service for Prometheus terintegrasi AWS dengan Controllers for Kubernetes (ACK), dengan dukungan untuk mengelola ruang kerja, Alert Manager, dan sumber daya Ruler di Amazon EKS. Anda dapat menggunakan AWS Controller untuk definisi sumber daya kustom Kubernetes (CRD) dan objek Kubernetes asli tanpa harus mendefinisikan sumber daya apa pun di luar klaster Anda.

Bagian ini menjelaskan cara menyiapkan AWS Controller untuk Kubernetes dan Amazon Managed Service untuk Prometheus di cluster Amazon EKS yang ada.

Anda juga dapat membaca posting blog yang memperkenalkan AWS Controller untuk Kubernetes dan memperkenalkan ACK controller untuk Amazon Managed Service untuk Prometheus.

Prasyarat

Sebelum mulai mengintegrasikan AWS Controller untuk Kubernetes dan Amazon Managed Service untuk Prometheus dengan cluster Amazon EKS Anda, Anda harus memiliki prasyarat berikut.

Jika kluster Amazon EKS Anda dikonfigurasi dengan tepat, Anda seharusnya dapat melihat metrik yang diformat untuk Prometheus dengan menelepon. kubectl get --raw /metrics Sekarang Anda siap untuk menginstal AWS Controllers for Kubernetes service controller dan menggunakannya untuk menyebarkan Amazon Managed Service untuk sumber daya Prometheus.

Menerapkan ruang kerja dengan AWS Controller untuk Kubernetes

Untuk menerapkan Amazon Managed Service baru untuk ruang kerja Prometheus, Anda akan menginstal Controllers for Kubernetes controller, dan kemudian menggunakannya untuk AWS membuat ruang kerja.

Untuk menerapkan Amazon Managed Service baru untuk ruang kerja Prometheus dengan Controller untuk Kubernetes AWS
  1. Gunakan perintah berikut untuk menggunakan Helm untuk menginstal Amazon Managed Service for Prometheus service controller. Untuk informasi selengkapnya lihat Menginstal ACK Controller di dokumentasi AWS Controllers for Kubernetes. GitHub Gunakan wilayah yang tepat untuk sistem Anda, sepertius-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

    Setelah beberapa saat, Anda akan melihat respons yang mirip dengan yang menunjukkan keberhasilan berikut.

    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"

    Anda dapat secara opsional memverifikasi bahwa AWS Controllers for Kubernetes controller telah berhasil diinstal dengan perintah berikut.

    helm list --namespace $ACK_SYSTEM_NAMESPACE -o yaml

    Ini akan mengembalikan informasi tentang pengontrolack-prometheusservice-controller, termasuk filestatus: deployed.

  2. Buat file yang disebut workspace.yaml dengan teks berikut. Ini akan digunakan sebagai konfigurasi untuk ruang kerja yang Anda buat.

    apiVersion: prometheusservice.services.k8s.aws/v1alpha1 kind: Workspace metadata: name: my-amp-workspace spec: alias: my-amp-workspace tags: ClusterName: EKS-demo
  3. Jalankan perintah berikut untuk membuat ruang kerja Anda (perintah ini tergantung pada variabel sistem yang Anda atur di langkah 1).

    kubectl apply -f workspace.yaml -n $ACK_SYSTEM_NAMESPACE

    Dalam beberapa saat, Anda akan dapat melihat ruang kerja baru, yang dipanggil my-amp-workspace di akun Anda.

    Menjalankan perintah berikut untuk melihat detail dan status ruang kerja Anda termasuk ID ruang kerja. Sebagai alternatif, Anda dapat melihat ruang kerja baru di Amazon Managed Service untuk konsol Prometheus.

    kubectl describe workspace my-amp-workspace -n $ACK_SYSTEM_NAMESPACE
    catatan

    Anda juga dapat menggunakan ruang kerja yang ada daripada membuat yang baru.

  4. Buat dua file yaml baru sebagai konfigurasi untuk Rulegroups dan AlertManager yang akan Anda buat selanjutnya menggunakan konfigurasi berikut.

    Simpan konfigurasi ini sebagairulegroup.yaml. Ganti WORKSPACE-ID dengan ID ruang kerja dari langkah sebelumnya.

    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 }}"

    Simpan konfigurasi berikut sebagaialertmanager.yaml. Ganti WORKSPACE-ID dengan ID ruang kerja dari langkah sebelumnya. Ganti TOPIC-ARN dengan ARN untuk topik Amazon SNS untuk mengirim notifikasi, dan REGION dengan yang Anda gunakan. Wilayah AWS Ingat bahwa Amazon Managed Service untuk Prometheus harus memiliki izin untuk topik 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 }}
    catatan

    Untuk mempelajari lebih lanjut tentang format file konfigurasi ini, lihat RuleGroupsNamespaceDatadan AlertManagerDefinitionData.

  5. Jalankan perintah berikut untuk membuat grup aturan dan konfigurasi manajer peringatan (perintah ini bergantung pada variabel sistem yang Anda atur di langkah 1).

    kubectl apply -f rulegroup.yaml -n $ACK_SYSTEM_NAMESPACE kubectl apply -f alertmanager.yaml -n $ACK_SYSTEM_NAMESPACE

    Perubahan akan tersedia dalam beberapa saat.

    catatan

    Untuk memperbarui sumber daya, daripada membuatnya, Anda cukup memperbarui file yaml, dan menjalankan kubectl apply perintah lagi.

    Untuk menghapus sumber daya, jalankan perintah berikut. Ganti ResourceTypedengan jenis sumber daya yang ingin Anda hapusWorkspace,AlertManagerDefinition, atauRuleGroupNamespace. Ganti ResourceNamedengan nama sumber daya yang akan dihapus.

    kubectl delete ResourceType ResourceName -n $ACK_SYSTEM_NAMESPACE

Itu menyelesaikan penerapan ruang kerja baru. Bagian selanjutnya menjelaskan konfigurasi klaster Anda untuk mengirim metrik ke ruang kerja tersebut.

Mengonfigurasi klaster Amazon EKS Anda untuk menulis ke Layanan Terkelola Amazon untuk ruang kerja Prometheus

Bagian ini menjelaskan cara menggunakan Helm untuk mengonfigurasi Prometheus yang berjalan di klaster Amazon EKS Anda untuk menulis metrik jarak jauh ke Amazon Managed Service untuk ruang kerja Prometheus yang Anda buat di bagian sebelumnya.

Untuk prosedur ini, Anda akan memerlukan nama peran IAM yang telah Anda buat untuk digunakan untuk menelan metrik. Jika Anda belum melakukan ini, lihat Menyiapkan peran layanan untuk menelan metrik dari kluster Amazon EKS untuk informasi dan instruksi lebih lanjut. Jika Anda mengikuti instruksi tersebut, peran IAM akan dipanggilamp-iamproxy-ingest-role.

Untuk mengonfigurasi klaster Amazon EKS Anda untuk penulisan jarak jauh
  1. Gunakan perintah berikut untuk mendapatkan ruang prometheusEndpoint kerja Anda. Ganti WORKSPACE-ID dengan ID ruang kerja dari bagian sebelumnya.

    aws amp describe-workspace --workspace-id WORKSPACE-ID

    PromeTheUsendPoint akan berada di hasil pengembalian, dan diformat seperti ini:

    https://aps-workspaces.us-west-2.amazonaws.com/workspaces/ws-a1b2c3d4-a123-b456-c789-ac1234567890/

    Simpan URL ini untuk digunakan dalam beberapa langkah berikutnya.

  2. Buat file baru dengan teks berikut dan sebut sajaprometheus-config.yaml. Ganti akun dengan ID akun Anda, WorkspaceURL/ dengan URL yang baru saja Anda temukan, dan wilayah dengan yang sesuai Wilayah AWS untuk sistem Anda.

    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
  3. Temukan bagan Prometheus dan namespace nama serta versi bagan dengan perintah Helm berikut.

    helm ls --all-namespaces

    Berdasarkan langkah-langkah sejauh ini, bagan Prometheus dan namespace keduanya harus diberi nama, dan versi bagan mungkin prometheus 15.2.0

  4. Jalankan perintah berikut, menggunakan PrometheusChartNamePrometheusNamespace,, dan PrometheusChartVersionditemukan di langkah sebelumnya.

    helm upgrade PrometheusChartName prometheus-community/prometheus -n PrometheusNamespace -f prometheus-config.yaml --version PrometheusChartVersion

    Setelah beberapa menit, Anda akan melihat pesan bahwa peningkatan berhasil.

  5. Secara opsional, validasi bahwa metrik berhasil dikirim dengan menanyakan Layanan Terkelola Amazon untuk titik akhir Prometheus melalui. awscurl Ganti Region dengan Wilayah AWS yang Anda gunakan, dan WorkspaceURL/ dengan URL yang Anda temukan di langkah 1.

    awscurl --service="aps" --region="Region" "workspaceURL/api/v1/query?query=node_cpu_seconds_total"

Anda sekarang telah membuat Amazon Managed Service untuk ruang kerja Prometheus dan terhubung dengannya dari klaster Amazon EKS Anda, menggunakan file YAMAL sebagai konfigurasi. File-file ini, yang disebut definisi sumber daya khusus (CRD), tinggal di dalam kluster Amazon EKS Anda. Anda dapat menggunakan AWS Controller for Kubernetes controller untuk mengelola semua Amazon Managed Service untuk sumber daya Prometheus langsung dari cluster.