Menggunakan data alokasi biaya terpisah dengan Amazon Managed Service untuk Prometheus - Ekspor Data AWS

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

Menggunakan data alokasi biaya terpisah dengan Amazon Managed Service untuk Prometheus

Data alokasi biaya terpisah untuk Amazon EKS mengharuskan Anda menyiapkan penyimpanan metrik observabilitas untuk mengalokasikan biaya, berdasarkan bagaimana Anda benar-benar menggunakan memori dan CPU.

catatan

Data alokasi biaya terpisah tidak mendukung pengumpulan telemetri dari beberapa akun penggunaan dari Layanan Terkelola Amazon terpusat untuk ruang kerja Prometheus. Setiap akun penggunaan harus memiliki Layanan Terkelola Amazon sendiri untuk ruang kerja Prometheus yang mengumpulkan telemetri untuk kluster Amazon EKS di akun yang sama. Setelah memilih untuk membagi data alokasi biaya untuk Amazon EKS dengan Layanan Terkelola Amazon untuk telemetri Prometheus, peran terkait layanan dibuat di setiap akun penggunaan untuk mengumpulkan metrik Amazon EKS untuk cluster akun tersebut.

Setelah penyiapan selesai, Anda dapat menggunakan dua metode untuk meneruskan metrik Amazon EKS ke ruang kerja Amazon Managed Service for Prometheus.

Untuk informasi selengkapnya tentang cara membuat Layanan Terkelola Amazon untuk ruang kerja Prometheus, lihat Membuat ruang kerja di panduan pengguna Layanan Terkelola Amazon untuk Prometheus.

Untuk menyiapkan server Prometheus dengan akses tulis jarak jauh ke Amazon Managed Service untuk Prometheus
  1. Siapkan server Prometheus baru atau gunakan server Prometheus yang ada. Untuk informasi selengkapnya, lihat Menggunakan instance Prometheus sebagai kolektor di panduan pengguna Layanan Terkelola Amazon untuk Prometheus.

  2. Jika Anda memiliki pod yang berumur pendek, rekomendasinya adalah menurunkan interval pengikisan server Prometheus default dari 30 detik menjadi 15 detik. Perhatikan bahwa ini dapat mengakibatkan penggunaan memori server Prometheus yang tinggi. Untuk melakukan ini, edit file my_prometheus_values_yaml dan tambahkan yang berikut:

    server: ... global: scrape_interval: 15s
  3. Jalankan helm upgrade prometheus-chart-name prometheus-community/prometheus -n prometheus-namespace -f my_prometheus_values_yaml.

    Gunakan prometheus-chart-name dan prometheus-namespace dari panduan.

Untuk mempelajari lebih lanjut tentang scrape_interval atau cara menggunakan scrape_interval non-global, lihat konfigurasi scrape Prometheus.

Atau, Anda dapat menggunakan AWS Distro untuk OpenTelemetry kolektor yang memiliki Penerima Prometheus, Eksportir Tulis Jarak Jauh Prometheus, dan AWS Ekstensi Otentikasi Sigv4 untuk mencapai akses tulis jarak jauh ke Amazon Managed Service untuk Prometheus.

Untuk menggunakan Layanan Terkelola Amazon yang dikelola untuk kolektor Prometheus
catatan

Jika Anda memiliki pod berumur pendek, rekomendasinya adalah mengatur interval scraper Anda menjadi 15 detik. Namun, Amazon Managed Service untuk kolektor Prometheus hanya mendukung interval scraper serendah 30 detik. Untuk menggunakan interval scraper 15 detik, lihat prosedur sebelumnya sebagai gantinya.

  1. Buat Amazon Managed Service untuk kolektor Prometheus menggunakan perintah berikut:

    aws amp create-scraper \ --source eksConfiguration="{clusterArn=<EKS-CLUSTER-ARN>,securityGroupIds=[<SG-SECURITY-GROUP-ID>],subnetIds=[<SUBNET-ID>]}" \ --scrape-configuration configurationBlob=<BASE64-CONFIGURATION-BLOB> \ --destination ampConfiguration={workspaceArn="<WORKSPACE_ARN>"}

    Untuk konfigurasi scraper sampel, lihat Contoh file konfigurasi. CatatscraperId.

  2. Konfigurasikan cluster EKS Anda untuk memungkinkan scraper mengakses metrik.

    1. Buat file yang disebut clusterrole-binding.yml dengan teks berikut:

      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"] --- 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. Jalankan perintah berikut di cluster Anda:

      kubectl apply -f clusterrole-binding.yml

      Ini menciptakan pengikatan dan aturan peran cluster. Nama peran:aps-collector-role. Nama pengguna:aps-collector-user.

    3. Dapatkan perintah roleArn menggunakan deskripsi-scraper:

      aws amp describe-scraper --scraper-id scraper-id
    4. Edit roleArn agar sesuai dengan format berikut:

      arn:aws:iam::account-id:role/AWSServiceRoleForAmazonPrometheusScraper_unique-id
    5. Jalankan perintah berikut di cluster Anda, menggunakan modifikasi roleArn dari langkah sebelumnya, serta nama cluster dan Region Anda:

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

      Ini memungkinkan scraper untuk mengakses cluster menggunakan peran dan pengguna yang Anda buat dalam clusterrole-binding.yml file.

  3. Di bawah tab Jaringan kluster Amazon EKS Anda, verifikasi bahwa akses endpoint server API disetel ke Publik dan pribadi.

  4. Di bawah tab Observability, verifikasi bahwa scraper yang Anda buat memiliki Status Aktif.

    catatan

    Setelah membuat scraper, diperlukan waktu hingga 15 menit agar Status disetel ke Aktif.

  5. Untuk memverifikasi bahwa metrik diteruskan dengan benar ke Layanan Terkelola Amazon untuk ruang kerja Prometheus, gunakan perintah berikut:

    awscurl --region us-east-1 --service aps -X POST "https://aps-workspaces.us-east-1.amazonaws.com/workspaces/<ws-id>/api/v1/query?query=up"

    Anda harus mendapatkan hasil yang tidak kosong yang menampilkan metrik yang diteruskan sebagai berikut:

    $ awscurl --region us-east-1 --service aps -X POST "https://aps-workspaces.us-east-1.amazonaws.com/workspaces/ws-068aecc5-f630-4745-97f4-526d78016db0/api/v1/query?query=up" { "status": "success", "data": { "resultType": "vector", "result": [ { "metric": { "__name__": "up", "beta_kubernetes_io_arch": "amd64", "beta_kubernetes_io_instance_type": "t3.medium", "beta_kubernetes_io_os": "linux", "clusterArn": "arn:aws:eks:us-east-1:111111111111:cluster/demo-cluster-0", "eks_amazonaws_com_capacityType": "ON_DEMAND", "eks_amazonaws_com_nodegroup": "test", "eks_amazonaws_com_nodegroup_image": "ami-0df33cb954c3f5200", "failure_domain_beta_kubernetes_io_region": "us-east-1", "failure_domain_beta_kubernetes_io_zone": "us-east-1f", "instance": "ip-192-168-89-73.ec2.internal", "job": "cadvisor", "k8s_io_cloud_provider_aws": "0bf75a9e77968982253cda8b9836bfec", "kubernetes_io_arch": "amd64", "kubernetes_io_hostname": "ip-192-168-89-73.ec2.internal", "kubernetes_io_os": "linux", "node_kubernetes_io_instance_type": "t3.medium", "topology_kubernetes_io_region": "us-east-1", "topology_kubernetes_io_zone": "us-east-1f" }, "value": [ 1709587239.732, "1" ] }, { "metric": { "__name__": "up", "clusterArn": "arn:aws:eks:us-east-1:111111111111:cluster/demo-cluster-0", "instance": "192.168.91.105:443", "job": "kubernetes-apiservers" }, "value": [ 1709587239.732, "1" ] }, ... ] } }