Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Siapkan dan konfigurasikan koleksi metrik Prometheus di instans Amazon EC2
Bagian berikut menjelaskan cara menginstal CloudWatch agen dengan pemantauan Prometheus EC2 pada instance, dan cara mengonfigurasi agen untuk mengikis target tambahan. Ini juga menyediakan tutorial untuk menyiapkan contoh beban kerja untuk menggunakan pengujian dengan pemantauan Prometheus.
Instans Linux dan Windows didukung.
Untuk informasi tentang sistem operasi yang didukung oleh CloudWatch agen, lihat Kumpulkan metrik, log, dan jejak menggunakan agen CloudWatch
Persyaratan grup keamanan VPC
Jika Anda menggunakan VPC, persyaratan berikut berlaku.
-
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.
Topik
Langkah 1: Instal CloudWatch agen
Langkah pertama adalah menginstal CloudWatch agen pada EC2 instance. Untuk petunjuk, lihat Instalasi CloudWatch agen.
Langkah 2: Melakukan scraping pada sumber Prometheus dan mengimpor metrik
CloudWatch Agen dengan pemantauan Prometheus membutuhkan dua konfigurasi untuk mengikis metrik Prometheus. Salah satunya adalah untuk konfigurasi Prometheus standar seperti yang didokumentasikan dalam <scrape_config>
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
PS C:\ProgramData\Amazon\AmazonCloudWatchAgent> cat prometheus.yaml global: scrape_interval: 1m scrape_timeout: 10s scrape_configs: - job_name: MY_JOB sample_limit: 10000 file_sd_configs: - files: ["C:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\prometheus_sd_1.yaml", "C:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\prometheus_sd_2.yaml"]
Bagian global
menentukan parameter yang valid dalam semua konteks konfigurasi. Mereka juga berfungsi sebagai default untuk bagian konfigurasi lainnya. Ini berisi parameter berikut:
-
scrape_interval
— Menentukan seberapa sering mengeruk target. -
scrape_timeout
— Mendefinisikan berapa lama untuk menunggu sebelum permintaan pengerukan habis.
Bagian scrape_configs
menentukan satu set target dan parameter yang menentukan bagaimana untuk mengeruknya. Ini berisi parameter berikut:
-
job_name
— Nama pekerjaan ditugaskan untuk metrik terkeruk secara bawaan. -
sample_limit
— Batas per goresan pada jumlah sampel terkeruk yang akan diterima. -
file_sd_configs
— Daftar konfigurasi penemuan layanan file. Itu membaca satu set file yang berisi daftar nol atau lebih konfigurasi statis. Bagianfile_sd_configs
berisi parameterfiles
yang mendefinisikan pola untuk file dari grup target yang diekstrak.
CloudWatch Agen mendukung jenis konfigurasi penemuan layanan berikut.
static_config
Memungkinkan menentukan daftar target dan label umum ditetapkan untuk mereka. Ini adalah cara kanonik untuk menentukan target statis dalam konfigurasi mengeruk.
Berikut ini adalah contoh konfigurasi statis untuk mengeruk metrik Prometheus dari host lokal. Metrik juga dapat diambil dari server lain jika port Prometheus terbuka ke server tempat agen berjalan.
PS C:\ProgramData\Amazon\AmazonCloudWatchAgent> cat prometheus_sd_1.yaml - targets: - 127.0.0.1:9404 labels: key1: value1 key2: value2
Contoh ini berisi parameter berikut:
-
targets
— Target terambil oleh konfigurasi statis. -
labels
— Label ditugaskan untuk semua metrik yang terambil dari target.
ec2_sd_config
Memungkinkan pengambilan target scrape dari instans Amazon EC2 . Berikut ini adalah contoh ec2_sd_config
untuk mengikis metrik Prometheus dari daftar contoh. EC2 Port Prometheus dari instance ini harus terbuka ke server tempat agen berjalan. CloudWatch Peran IAM untuk EC2 contoh di mana CloudWatch agen berjalan harus menyertakan ec2:DescribeInstance
izin. Misalnya, Anda dapat melampirkan kebijakan terkelola Amazon EC2 ReadOnlyAccess ke instance yang menjalankan CloudWatch agen.
PS C:\ProgramData\Amazon\AmazonCloudWatchAgent> cat prometheus.yaml global: scrape_interval: 1m scrape_timeout: 10s scrape_configs: - job_name: MY_JOB sample_limit: 10000 ec2_sd_configs: - region: us-east-1 port: 9404 filters: - name: instance-id values: - i-98765432109876543 - i-12345678901234567
Contoh ini berisi parameter berikut:
-
region
— AWS Wilayah tempat EC2 instance target berada. Jika Anda membiarkan kosong ini, Wilayah dari metadata instans digunakan. -
port
— Port untuk mengambil metrik. -
filters
— Filter opsional yang akan digunakan untuk memfilter daftar instans. Contoh ini menyaring berdasarkan EC2 contoh IDs. Untuk kriteria lainnya yang dapat Anda filter, lihat DescribeInstances.
CloudWatch konfigurasi agen untuk Prometheus
File konfigurasi CloudWatch agen mencakup prometheus
bagian di bawah keduanya logs
danmetrics_collected
. Ini termasuk parameter berikut.
-
cluster_name— menentukan nama klaster yang akan ditambahkan sebagai label pada peristiwa log. Bidang ini bersifat opsional.
-
log_group_name— menentukan nama grup log untuk metrik-metrik Prometheus yang di-scraping.
-
prometheus_config_path— menentukan jalur file konfigurasi scraping Prometheus.
-
emf_processor— menentukan konfigurasi prosesor format metrik tersemat. Untuk informasi selengkapnya tentang format metrik tersemat, silakan lihat Menyematkan metrik dalam log.
Bagian
emf_processor
dapat berisi parameter berikut:-
metric_declaration_dedup— Ini diatur ke betul, fungsi de-duplikasi untuk metrik format metrik tersemat diaktifkan.
-
metric_namespace - Menentukan namespace metrik untuk metrik yang dipancarkan. CloudWatch
-
metric_unit— Menentukan nama metrik: peta unit metrik. Untuk informasi tentang satuan metrik yang didukung, lihat MetricDatum.
-
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:-
source_labels
menentukan nilai dari label-label yang diperiksa oleh barislabel_matcher
. -
label_matcher
adalah ekspresi reguler yang memeriksa nilai dari label-label yang tercantum dalamsource_labels
. Metrik yang cocok diaktifkan untuk dimasukkan dalam format metrik tertanam yang dikirim ke CloudWatch. -
metric_selectors
adalah ekspresi reguler yang menentukan metrik yang akan dikumpulkan dan dikirim ke CloudWatch. -
dimensions
adalah daftar label yang akan digunakan sebagai CloudWatch dimensi untuk setiap metrik yang dipilih.
-
-
Berikut ini adalah contoh konfigurasi CloudWatch agen untuk Prometheus.
{ "logs":{ "metrics_collected":{ "prometheus":{ "cluster_name":"prometheus-cluster", "log_group_name":"Prometheus", "prometheus_config_path":"C:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\prometheus.yaml", "emf_processor":{ "metric_declaration_dedup":true, "metric_namespace":"CWAgent-Prometheus", "metric_unit":{ "jvm_threads_current": "Count", "jvm_gc_collection_seconds_sum": "Milliseconds" }, "metric_declaration":[ { "source_labels":[ "job", "key2" ], "label_matcher":"MY_JOB;^value2", "dimensions":[ [ "key1", "key2" ], [ "key2" ] ], "metric_selectors":[ "^jvm_threads_current$", "^jvm_gc_collection_seconds_sum$" ] } ] } } } } }
Contoh sebelumnya mengonfigurasi bagian format metrik yang tersemat untuk dikirim sebagai peristiwa log jika kondisi berikut terpenuhi:
-
Nilai label
job
adalahMY_JOB
-
Nilai label
key2
adalahvalue2
-
Metrik Prometheus
jvm_threads_current
danjvm_gc_collection_seconds_sum
berisi labeljob
dankey2
.
Peristiwa log yang dikirim mencakup bagian yang disorot berikut ini.
{ "CloudWatchMetrics": [ { "Metrics": [ { "Unit": "Count", "Name": "jvm_threads_current" }, { "Unit": "Milliseconds", "Name": "jvm_gc_collection_seconds_sum" } ], "Dimensions": [ [ "key1", "key2" ], [ "key2" ] ], "Namespace": "CWAgent-Prometheus" } ], "ClusterName": "prometheus-cluster", "InstanceId": "i-0e45bd06f196096c8", "Timestamp": "1607966368109", "Version": "0", "host": "EC2AMAZ-PDDOIUM", "instance": "127.0.0.1:9404", "jvm_threads_current": 2, "jvm_gc_collection_seconds_sum": 0.006000000000000002, "prom_metric_type": "gauge", ... }
Contoh: Siapkan beban kerja Java/JMX sampel untuk pengujian metrik Prometheus
JMX Exporter adalah sebuah pengekspor Prometheus resmi yang dapat melakukan scraping dan mengekspos JMX mBeans sebagai metrik-metrik Prometheus. Untuk informasi selengkapnya, silakan lihat prometheus/jmx_exporter
CloudWatch Agen dapat mengumpulkan metrik Prometheus yang telah ditentukan sebelumnya dari Java Virtual Machine (JVM), Hjava, dan Tomcat (Catalina), dari eksportir JMX pada instance. EC2
Langkah 1: Instal CloudWatch agen
Langkah pertama adalah menginstal CloudWatch agen pada EC2 instance. Untuk petunjuk, lihat Instalasi CloudWatch agen.
Langkah 2: Memulai beban kerja Java/JMX
Langkah selanjutnya adalah memulai Java/JMX beban kerja.
Pertama, unduh file jar JMX exporter terbaru dari lokasi berikut: prometheus/jmx_exporter
Gunakan jar untuk aplikasi sampel Anda
Contoh perintah di bagian berikut menggunakan SampleJavaApplication-1.0-SNAPSHOT.jar
sebagai file jar. Ganti bagian perintah ini dengan jar untuk aplikasi Anda.
Siapkan konfigurasi JMX exporter
File config.yaml
adalah file konfigurasi JMX exporter. Untuk informasi selengkapnya, silakan lihat Configuration
Berikut adalah contoh konfigurasi untuk Java dan Tomcat.
--- lowercaseOutputName: true lowercaseOutputLabelNames: true rules: - pattern: 'java.lang<type=OperatingSystem><>(FreePhysicalMemorySize|TotalPhysicalMemorySize|FreeSwapSpaceSize|TotalSwapSpaceSize|SystemCpuLoad|ProcessCpuLoad|OpenFileDescriptorCount|AvailableProcessors)' name: java_lang_OperatingSystem_$1 type: GAUGE - pattern: 'java.lang<type=Threading><>(TotalStartedThreadCount|ThreadCount)' name: java_lang_threading_$1 type: GAUGE - pattern: 'Catalina<type=GlobalRequestProcessor, name=\"(\w+-\w+)-(\d+)\"><>(\w+)' name: catalina_globalrequestprocessor_$3_total labels: port: "$2" protocol: "$1" help: Catalina global $3 type: COUNTER - pattern: 'Catalina<j2eeType=Servlet, WebModule=//([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), name=([-a-zA-Z0-9+/$%~_-|!.]*), J2EEApplication=none, J2EEServer=none><>(requestCount|maxTime|processingTime|errorCount)' name: catalina_servlet_$3_total labels: module: "$1" servlet: "$2" help: Catalina servlet $3 total type: COUNTER - pattern: 'Catalina<type=ThreadPool, name="(\w+-\w+)-(\d+)"><>(currentThreadCount|currentThreadsBusy|keepAliveCount|pollerThreadCount|connectionCount)' name: catalina_threadpool_$3 labels: port: "$2" protocol: "$1" help: Catalina threadpool $3 type: GAUGE - pattern: 'Catalina<type=Manager, host=([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), context=([-a-zA-Z0-9+/$%~_-|!.]*)><>(processingTime|sessionCounter|rejectedSessions|expiredSessions)' name: catalina_session_$3_total labels: context: "$2" host: "$1" help: Catalina session $3 total type: COUNTER - pattern: ".*"
Mulai aplikasi Java dengan pengekspor Prometheus
Mulai aplikasi sampel. Ini akan memancarkan metrik Prometheus ke port 9404. Pastikan untuk mengganti titik masuk com.gubupt.sample.app.App
dengan informasi yang benar untuk aplikasi java sampel Anda.
Di Linux, masukkan perintah berikut.
$ nohup java -javaagent:./jmx_prometheus_javaagent-0.14.0.jar=9404:./config.yaml -cp ./SampleJavaApplication-1.0-SNAPSHOT.jar com.gubupt.sample.app.App &
Di Windows, masukkan perintah berikut.
PS C:\> java -javaagent:.\jmx_prometheus_javaagent-0.14.0.jar=9404:.\config.yaml -cp .\SampleJavaApplication-1.0-SNAPSHOT.jar com.gubupt.sample.app.App
Verifikasi emisi metrik Prometheus
Verifikasi bahwa metrik Prometheus dipancarkan.
Di Linux, masukkan perintah berikut.
$ curl localhost:9404
Di Windows, masukkan perintah berikut.
PS C:\> curl http://localhost:9404
Contoh keluaran di Linux:
StatusCode : 200 StatusDescription : OK Content : # HELP jvm_classes_loaded The number of classes that are currently loaded in the JVM # TYPE jvm_classes_loaded gauge jvm_classes_loaded 2526.0 # HELP jvm_classes_loaded_total The total number of class... RawContent : HTTP/1.1 200 OK Content-Length: 71908 Content-Type: text/plain; version=0.0.4; charset=utf-8 Date: Fri, 18 Dec 2020 16:38:10 GMT # HELP jvm_classes_loaded The number of classes that are currentl... Forms : {} Headers : {[Content-Length, 71908], [Content-Type, text/plain; version=0.0.4; charset=utf-8], [Date, Fri, 18 Dec 2020 16:38:10 GMT]} Images : {} InputFields : {} Links : {} ParsedHtml : System.__ComObject RawContentLength : 71908
Langkah 3: Konfigurasikan CloudWatch agen untuk mengikis metrik Prometheus
Selanjutnya, atur konfigurasi scrape Prometheus di file konfigurasi agen. CloudWatch
Untuk mengatur konfigurasi scrape Prometheus untuk contoh Java/JMX
-
Mengatur konfigurasi untuk
file_sd_config
danstatic_config
.Di Linux, masukkan perintah berikut.
$ cat /opt/aws/amazon-cloudwatch-agent/var/prometheus.yaml global: scrape_interval: 1m scrape_timeout: 10s scrape_configs: - job_name: jmx sample_limit: 10000 file_sd_configs: - files: [ "/opt/aws/amazon-cloudwatch-agent/var/prometheus_file_sd.yaml" ]
Di Windows, masukkan perintah berikut.
PS C:\ProgramData\Amazon\AmazonCloudWatchAgent> cat prometheus.yaml global: scrape_interval: 1m scrape_timeout: 10s scrape_configs: - job_name: jmx sample_limit: 10000 file_sd_configs: - files: [ "C:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\prometheus_file_sd.yaml" ]
-
Mengatur konfigurasi target ambilan.
Di Linux, masukkan perintah berikut.
$ cat /opt/aws/amazon-cloudwatch-agent/var/prometheus_file_sd.yaml - targets: - 127.0.0.1:9404 labels: application: sample_java_app os: linux
Di Windows, masukkan perintah berikut.
PS C:\ProgramData\Amazon\AmazonCloudWatchAgent> cat prometheus_file_sd.yaml - targets: - 127.0.0.1:9404 labels: application: sample_java_app os: windows
-
Atur konfigurasi ambilan Prometheus dengan
ec2_sc_config
. Gantiyour-ec2-instance-id
dengan ID EC2 instance yang benar.Di Linux, masukkan perintah berikut.
$ cat .\prometheus.yaml global: scrape_interval: 1m scrape_timeout: 10s scrape_configs: - job_name: jmx sample_limit: 10000 ec2_sd_configs: - region: us-east-1 port: 9404 filters: - name: instance-id values: -
your-ec2-instance-id
Di Windows, masukkan perintah berikut.
PS C:\ProgramData\Amazon\AmazonCloudWatchAgent> cat prometheus_file_sd.yaml - targets: - 127.0.0.1:9404 labels: application: sample_java_app os: windows
-
Siapkan konfigurasi CloudWatch agen. Pertama, arahkan ke direktori yang benar. Di Linux, itu adalah
/opt/aws/amazon-cloudwatch-agent/var/cwagent-config.json
. Pada Windows, ini adalahC:\ProgramData\Amazon\AmazonCloudWatchAgent\cwagent-config.json
.Berikut ini adalah konfigurasi sampel dengan metrik Java/JHX Prometheus didefinisikan. Pastikan untuk mengganti
path-to-Prometheus-Scrape-Configuration-file
dengan jalur yang benar.{ "agent": { "region": "us-east-1" }, "logs": { "metrics_collected": { "prometheus": { "cluster_name": "my-cluster", "log_group_name": "prometheus-test", "prometheus_config_path": "
path-to-Prometheus-Scrape-Configuration-file
", "emf_processor": { "metric_declaration_dedup": true, "metric_namespace": "PrometheusTest", "metric_unit":{ "jvm_threads_current": "Count", "jvm_classes_loaded": "Count", "java_lang_operatingsystem_freephysicalmemorysize": "Bytes", "catalina_manager_activesessions": "Count", "jvm_gc_collection_seconds_sum": "Seconds", "catalina_globalrequestprocessor_bytesreceived": "Bytes", "jvm_memory_bytes_used": "Bytes", "jvm_memory_pool_bytes_used": "Bytes" }, "metric_declaration": [ { "source_labels": ["job"], "label_matcher": "^jmx$", "dimensions": [["instance"]], "metric_selectors": [ "^jvm_threads_current$", "^jvm_classes_loaded$", "^java_lang_operatingsystem_freephysicalmemorysize$", "^catalina_manager_activesessions$", "^jvm_gc_collection_seconds_sum$", "^catalina_globalrequestprocessor_bytesreceived$" ] }, { "source_labels": ["job"], "label_matcher": "^jmx$", "dimensions": [["area"]], "metric_selectors": [ "^jvm_memory_bytes_used$" ] }, { "source_labels": ["job"], "label_matcher": "^jmx$", "dimensions": [["pool"]], "metric_selectors": [ "^jvm_memory_pool_bytes_used$" ] } ] } } }, "force_flush_interval": 5 } } -
Mulai ulang CloudWatch agen dengan memasukkan salah satu perintah berikut.
Di Linux, masukkan perintah berikut.
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/var/cwagent-config.json
Di Windows, masukkan perintah berikut.
& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m ec2 -s -c file:C:\ProgramData\Amazon\AmazonCloudWatchAgent\cwagent-config.json
Melihat metrik dan log Prometheus
Anda sekarang dapat melihat Java/JMX metrik yang dikumpulkan.
Untuk melihat metrik untuk beban kerja sampel Java/JMX Anda
Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/
. -
Di Wilayah tempat klaster Anda berjalan, pilih Metrik pada panel navigasi yang ada sebelah kiri. Temukan PrometheusTestnamespace untuk melihat metrik.
-
Untuk melihat peristiwa CloudWatch Log, pilih Grup log di panel navigasi. Peristiwa-peristiwa tersebut berada di grup log prometheus-test.