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
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
Prasyarat
Sebelum mulai mengintegrasikan AWS Controller untuk Kubernetes dan Amazon Managed Service untuk Prometheus dengan cluster Amazon EKS Anda, Anda harus memiliki prasyarat berikut.
-
Anda harus memiliki izin Akun AWS dan izin untuk membuat Layanan Terkelola Amazon untuk peran Prometheus dan IAM secara terprogram.
-
Anda harus memiliki cluster Amazon EKS yang sudah ada dengan OpenID Connect (OIDC) diaktifkan.
Jika Anda tidak mengaktifkan OIDC, Anda dapat menggunakan perintah berikut untuk mengaktifkannya. Ingatlah untuk mengganti
YOUR_CLUSTER_NAME dan
dengan nilai yang benar untuk akun Anda.AWS_REGION
eksctl utils associate-iam-oidc-provider \ --cluster ${
YOUR_CLUSTER_NAME
} --region ${AWS_REGION
} \ --approveUntuk informasi selengkapnya tentang penggunaan OIDC dengan Amazon EKS, lihat otentikasi penyedia identitas OIDC dan Membuat penyedia IAM OIDC di Panduan Pengguna Amazon EKS.
-
Anda harus menginstal driver Amazon EBS CSI di cluster Amazon EKS Anda.
-
Anda harus AWS CLImenginstal. AWS CLI Ini digunakan untuk memanggil AWS fungsionalitas dari baris perintah.
-
Helm, manajer paket untuk Kubernetes, harus diinstal.
-
Metrik bidang kontrol dengan Prometheus harus disiapkan di klaster Amazon EKS Anda.
-
Anda harus memiliki topik Amazon Simple Notification Service (Amazon SNS) tempat Anda ingin mengirim peringatan dari ruang kerja baru Anda. Pastikan Anda telah memberikan izin Amazon Managed Service for Prometheus untuk mengirim pesan ke topik tersebut.
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
-
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_REGIONSetelah 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 pengontrol
ack-prometheusservice-controller
, termasuk filestatus: deployed
. -
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
-
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. -
Buat dua file yaml baru sebagai konfigurasi untuk Rulegroups dan AlertManager yang akan Anda buat selanjutnya menggunakan konfigurasi berikut.
Simpan konfigurasi ini sebagai
rulegroup.yaml
. GantiWORKSPACE-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 sebagai
alertmanager.yaml
. GantiWORKSPACE-ID dengan ID
ruang kerja dari langkah sebelumnya.Ganti
Wilayah AWS Ingat bahwa Amazon Managed Service untuk Prometheus harus memiliki izin untuk topik Amazon SNS.TOPIC-ARN dengan
ARN untuk topik Amazon SNS untuk mengirim notifikasi, dan REGION dengan yang Anda gunakan.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.
-
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
ResourceType
dengan jenis sumber daya yang ingin Anda hapusWorkspace
,AlertManagerDefinition
, atauRuleGroupNamespace
. GantiResourceName
dengan 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
-
Gunakan perintah berikut untuk mendapatkan ruang
prometheusEndpoint
kerja Anda. GantiWORKSPACE-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.
-
Buat file baru dengan teks berikut dan sebut saja
prometheus-config.yaml
. Gantiakun
dengan ID akun Anda,WorkspaceURL/
dengan URL yang baru saja Anda temukan, danwilayah
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 -
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
-
Jalankan perintah berikut, menggunakan
PrometheusChartName
,, danPrometheusNamespace
PrometheusChartVersion
ditemukan di langkah sebelumnya.helm upgrade
PrometheusChartName
prometheus-community/prometheus -nPrometheusNamespace
-f prometheus-config.yaml --versionPrometheusChartVersion
Setelah beberapa menit, Anda akan melihat pesan bahwa peningkatan berhasil.
-
Secara opsional, validasi bahwa metrik berhasil dikirim dengan menanyakan Layanan Terkelola Amazon untuk titik akhir Prometheus melalui.
awscurl
GantiRegion
dengan Wilayah AWS yang Anda gunakan, danWorkspaceURL/
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.