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 dengan agen CloudWatch
VPCpersyaratan kelompok keamanan
Jika Anda menggunakan aVPC, 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, silakan lihat Instal 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 pengikisan dari instans AmazonEC2. 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 IAMPeran untuk EC2 contoh di mana CloudWatch agen berjalan harus menyertakan ec2:DescribeInstance
izin. Misalnya, Anda dapat melampirkan kebijakan terkelola Amazon EC2ReadOnlyAccess 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 di mana 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 contohIDs. 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 unit metrit 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. CloudWatchdimensions
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 JMX Java/sampel beban kerja untuk pengujian metrik Prometheus
JMXEksportir adalah eksportir resmi Prometheus yang dapat mengikis dan mengekspos sebagai metrik Prometheus. JMX mBeans 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 pada instance. JMX EC2
Langkah 1: Instal CloudWatch agen
Langkah pertama adalah menginstal CloudWatch agen pada EC2 instance. Untuk petunjuk, silakan lihat Instal CloudWatch agen.
Langkah 2: Mulai Java/beban kerja JMX
Langkah selanjutnya adalah memulai Java/beban kerjaJMX.
Pertama, unduh file jar JMX eksportir 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 eksportir
config.yaml
File tersebut adalah file konfigurasi JMX eksportir. Untuk informasi selengkapnya, lihat Konfigurasi
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 entry point com.gubupt.sample.app.App
dengan infromasi 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/Prometheus didefinisikanJHX. Pastikan untuk mengganti
path-to-Prometheus-Scrape-Configuration-file
dengan jalan 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 sampel JMX Jawa/beban kerja
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.