Melakukan scraping atas sumber Prometheus tambahan dan mengimpor metrik-metrik tersebut - Amazon CloudWatch

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

Melakukan scraping atas sumber Prometheus tambahan dan mengimpor metrik-metrik tersebut

CloudWatch Agen dengan pemantauan Prometheus membutuhkan dua konfigurasi untuk mengikis metrik Prometheus. Salah satunya adalah konfigurasi standar Prometheus sebagaimana yang didokumentasikan dalam <scrape_config> dalam dokumentasi Prometheus. Yang lainnya adalah untuk konfigurasi CloudWatch agen.

Untuk ECS cluster Amazon, konfigurasi terintegrasi dengan Parameter Store dari AWS Systems Manager oleh rahasia dalam definisi ECS tugas Amazon:

  • PROMETHEUS_CONFIG_CONTENT rahasia adalah untuk konfigurasi scraping Prometheus.

  • Rahasianya CW_CONFIG_CONTENT adalah untuk konfigurasi CloudWatch agen.

Untuk mengikis sumber metrik Prometheus tambahan dan mengimpor metrik tersebut, Anda memodifikasi CloudWatch konfigurasi scrape Prometheus dan konfigurasi agen, lalu menerapkan kembali agen dengan konfigurasi yang diperbarui. CloudWatch

VPCpersyaratan kelompok keamanan

Aturan masuknya kelompok keamanan untuk beban kerja Prometheus harus membuka port CloudWatch Prometheus ke agen untuk mengikis metrik Prometheus oleh IP pribadi.

Aturan keluar dari grup keamanan untuk CloudWatch agen harus memungkinkan agen untuk terhubung ke port CloudWatch beban kerja Prometheus dengan IP pribadi.

Konfigurasi scraping Prometheus

CloudWatch <scrape_config>Agen mendukung konfigurasi scrape Prometheus standar seperti yang didokumentasikan dalam dokumentasi Prometheus.https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config Anda dapat mengedit bagian ini untuk memperbarui konfigurasi yang sudah ada dalam file ini, dan menambahkan target-target scraping Prometheus tambahan. Secara bawaan, file konfigurasi sampel berisi baris-baris konfigurasi global berikut ini:

global: scrape_interval: 1m scrape_timeout: 10s
  • scrape_interval— Mendefinisikan seberapa sering scraping akan dilakukan ke target.

  • scrape_timeout— Mendefinisikan berapa lama waktu tunggu sebelum permintaan scraping habis.

Anda juga dapat menentukan nilai-nilai yang berbeda untuk pengaturan ini di level pekerjaan, untuk mengganti konfigurasi global.

Pekerjaan scraping Prometheus

YAMLFile CloudWatch agen sudah memiliki beberapa pekerjaan pengikisan default yang dikonfigurasi. Misalnya, dalam YAML file untuk Amazon ECS seperticwagent-ecs-prometheus-metric-for-bridge-host.yaml, pekerjaan pengikisan default dikonfigurasi di bagian tersebutecs_service_discovery.

"ecs_service_discovery": { "sd_frequency": "1m", "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml", "docker_label": { }, "task_definition_list": [ { "sd_job_name": "ecs-appmesh-colors", "sd_metrics_ports": "9901", "sd_task_definition_arn_pattern": ".*:task-definition\/.*-ColorTeller-(white):[0-9]+", "sd_metrics_path": "/stats/prometheus" }, { "sd_job_name": "ecs-appmesh-gateway", "sd_metrics_ports": "9901", "sd_task_definition_arn_pattern": ".*:task-definition/.*-ColorGateway:[0-9]+", "sd_metrics_path": "/stats/prometheus" } ] }

Masing-masing target default ini dikikis, dan metrik dikirim ke CloudWatch peristiwa log menggunakan format metrik yang disematkan. Untuk informasi selengkapnya, lihat Menyematkan metrik dalam log.

Peristiwa log dari ECS kluster Amazon disimpan di//aws/ecs/containerinsightscluster_name/prometheus grup log.

Setiap pekerjaan scraping dimuat dalam stream log yang berbeda di grup log ini.

Untuk menambahkan target pengikisan baru, Anda menambahkan entri baru di task_definition_list bagian di bawah ecs_service_discovery bagian. YAML file, dan restart agen. Untuk contoh proses ini, silakan lihat Tutorial untuk menambahkan target scrape Prometheus baru: metrik Prometheus Server API.

CloudWatch konfigurasi agen untuk Prometheus

File konfigurasi CloudWatch agen memiliki prometheus bagian di bawah metrics_collected untuk konfigurasi pengikisan Prometheus. File konfigurasi tersebut mencakup opsi-opsi konfigurasi berikut:

  • cluster_name— menentukan nama klaster yang akan ditambahkan sebagai label pada peristiwa log. Bidang ini bersifat opsional. Jika Anda menghilangkannya, agen dapat mendeteksi nama ECS cluster Amazon.

  • log_group_name— menentukan nama grup log untuk metrik-metrik Prometheus yang di-scraping. Bidang ini bersifat opsional. Jika Anda menghilangkannya, CloudWatch gunakan//aws/ecs/containerinsightscluster_name/prometheus untuk log dari cluster Amazon. ECS

  • prometheus_config_path— menentukan jalur file konfigurasi scraping Prometheus. Jika nilai bidang ini dimulai dengan env:, maka konten file konfigurasi Prometheus scraping akan diambil dari variabel lingkungan kontainer. Jangan ubah bidang ini.

  • ecs_service_discovery — adalah bagian untuk menentukan konfigurasi fungsi penemuan otomatis target Amazon Prometheus. ECS Dua mode didukung untuk menemukan target Prometheus: penemuan berdasarkan label docker container atau penemuan berdasarkan ekspresi reguler definisi tugas Amazon. ECS ARN Anda dapat menggunakan dua mode bersama-sama dan CloudWatch agen akan menghapus duplikasi target yang ditemukan berdasarkan: {private_ip}: {port}/{metrics_path}.

    Bagian ecs_service_discovery dapat berisi bidang-bidang berikut:

    • sd_frequency adalah frekuensi untuk menemukan pengekspor Prometheus. Tentukan sebuah angka dan sebuah akhiran unit. Sebagai contoh, 1m satu kali per menit atau 30s satu kali per 30 detik. Akhiran unit yang valid adalah ns, us, ms, s, m, dan h.

      Bidang ini bersifat opsional. Bawaannya adalah 60 detik (1 menit).

    • sd_target_clusteradalah nama ECS cluster Amazon target untuk penemuan otomatis. Bidang ini bersifat opsional. Defaultnya adalah nama ECS cluster Amazon tempat CloudWatch agen diinstal.

    • sd_cluster_regionadalah target Wilayah ECS cluster Amazon. Bidang ini bersifat opsional. Defaultnya adalah Wilayah ECS cluster Amazon tempat CloudWatch agen diinstal.

    • sd_result_fileadalah jalur YAML file untuk hasil target Prometheus. Konfigurasi scraping Prometheus akan merujuk pada file ini.

    • docker_label adalah sebuah bagian opsional yang dapat Anda gunakan untuk menentukan konfigurasi untuk penemuan layanan berbasis label docker. Jika Anda menghilangkan bagian ini, maka penemuan berbasis label docker tidak akan digunakan. Bagian ini dapat berisi bidang-bidang berikut:

      • sd_port_label adalah nama label docker dari kontainer yang menentukan port kontainer untuk metrik-metrik Prometheus. Nilai default-nya adalah ECS_PROMETHEUS_EXPORTER_PORT. Jika wadah tidak memiliki label docker ini, CloudWatch agen akan melewatkannya.

      • sd_metrics_path_label adalah nama label docker dari kontainer yang menentukan jalur metrik-metrik Prometheus. Nilai bawaannya adalah ECS_PROMETHEUS_METRICS_PATH. Jika kontainer tidak memiliki label docker ini, maka agen akan mengasumsikan jalur default /metrics.

      • sd_job_name_label adalah nama label docker dari kontainer yang menentukan nama pekerjaan scraping Prometheus. Nilai default-nya adalah job. Jika wadah tidak memiliki label docker ini, CloudWatch agen menggunakan nama pekerjaan dalam konfigurasi scrape Prometheus.

    • task_definition_list adalah sebuah bagian opsional yang dapat Anda gunakan untuk menentukan konfigurasi penemuan layanan berbasis penetapan tugas. Jika Anda menghilangkan bagian ini, maka penemuan berbasis penetapan tugas tidak akan digunakan. Bagian ini dapat berisi kolom berikut:

      • sd_task_definition_arn_patternadalah pola yang digunakan untuk menentukan definisi ECS tugas Amazon untuk ditemukan. Ini adalah ekspresi biasa.

      • sd_metrics_portsdaftar containerPort untuk metrik Prometheus. Pisahkan containerPorts dengan titik koma.

      • sd_container_name_patternmenentukan nama wadah ECS tugas Amazon. Ini adalah ekspresi biasa.

      • sd_metrics_path menentukan jalur metrik Prometheus. Jika Anda menghilangkannya, maka agen tersebut akan mengasumsikan jalur bawaan /metrics

      • sd_job_name menyebutkan nama pekerjaan scraping Prometheus. Jika Anda menghilangkan bidang ini, CloudWatch agen menggunakan nama pekerjaan dalam konfigurasi scrape Prometheus.

    • service_name_list_for_tasks adalah sebuah bagian opsional yang dapat Anda gunakan untuk menentukan konfigurasi penemuan berbasis nama layanan. Jika Anda menghilangkan bagian ini, maka penemuan berbasis nama layanan tidak akan digunakan. Bagian ini dapat berisi bidang-bidang berikut:

      • sd_service_name_patternadalah pola yang digunakan untuk menentukan ECS layanan Amazon di mana tugas akan ditemukan. Ini adalah ekspresi biasa.

      • sd_metrics_ports Mencantumkan containerPort untuk metrik-metrik Prometheus. Pisahkan beberapa containerPorts dengan titik koma.

      • sd_container_name_patternmenentukan nama wadah ECS tugas Amazon. Ini adalah ekspresi biasa.

      • sd_metrics_path menentukan jalur metrik-metrik Prometheus. Jika Anda menghilangkannya, maka agen tersebut akan mengasumsikan jalur bawaannya adalah /metrics

      • sd_job_name menyebutkan nama pekerjaan scraping Prometheus. Jika Anda menghilangkan bidang ini, CloudWatch agen menggunakan nama pekerjaan dalam konfigurasi scrape Prometheus.

  • metric_declaration— adalah bagian-bagian yang menentukan larik log dengan format metrik tersemat yang akan dihasilkan. Ada metric_declaration bagian untuk setiap sumber Prometheus yang diimpor agen secara default CloudWatch. Masing-masing bagian ini mencakup bidang-bidang berikut:

    • label_matcher adalah ekspresi reguler yang memeriksa nilai dari label-label yang tercantum dalam source_labels. Metrik yang cocok diaktifkan untuk dimasukkan dalam format metrik tertanam yang dikirim ke CloudWatch.

      Jika Anda memiliki beberapa label yang ditentukan dalam source_labels, maka kami menyarankan Anda untuk tidak menggunakan karakter ^ atau $ dalam ekspresi reguler untuk label_matcher.

    • source_labels menentukan nilai dari label-label yang diperiksa oleh baris label_matcher.

    • label_separator menentukan pemisah yang akan digunakan dalam baris label_matcher jika ada beberapa source_labels yang ditetapkan. Default-nya adalah ;. Anda dapat melihat nilai-nilai bawaan ini digunakan di label_matcher dalam contoh berikut.

    • metric_selectorsadalah ekspresi reguler yang menentukan metrik yang akan dikumpulkan dan dikirim ke. CloudWatch

    • dimensionsadalah daftar label yang akan digunakan sebagai CloudWatch dimensi untuk setiap metrik yang dipilih.

Lihat contoh metric_declaration berikut ini.

"metric_declaration": [ { "source_labels":[ "Service", "Namespace"], "label_matcher":"(.*node-exporter.*|.*kube-dns.*);kube-system$", "dimensions":[ ["Service", "Namespace"] ], "metric_selectors":[ "^coredns_dns_request_type_count_total$" ] } ]

Contoh ini mengonfigurasikan sebuah bagian format metrik tersemat yang akan dikirim sebagai sebuah peristiwa log jika kondisi-kondisi berikut dipenuhi:

  • Nilai dari Service berisi node-exporter atau kube-dns.

  • Nilai dari Namespace adalah kube-system.

  • Metrik Prometheus coredns_dns_request_type_count_total memuat label Service dan Namespace.

Peristiwa log yang dikirim mencakup bagian yang disorot berikut ini:

{ "CloudWatchMetrics":[ { "Metrics":[ { "Name":"coredns_dns_request_type_count_total" } ], "Dimensions":[ [ "Namespace", "Service" ] ], "Namespace":"ContainerInsights/Prometheus" } ], "Namespace":"kube-system", "Service":"kube-dns", "coredns_dns_request_type_count_total":2562, "eks_amazonaws_com_component":"kube-dns", "instance":"192.168.61.254:9153", "job":"kubernetes-service-endpoints", ... }