Anda dapat menggunakan fitur pengiriman data dari Managed Service for Prometheus (Prometheus) untuk mengirimkan data pemantauan dari instance Prometheus dan memanfaatkan data tersebut sesuai dengan kebutuhan bisnis Anda. Topik ini menjelaskan cara menggunakan fitur pengiriman data Prometheus untuk mengirimkan data pemantauan ke ApsaraMQ for Kafka.
Prasyarat
Sebuah instance Prometheus telah dibuat. Untuk informasi lebih lanjut, lihat:
Sebuah instance ApsaraMQ for Kafka telah dibuat dan sebuah topik telah dikonfigurasikan. Untuk informasi lebih lanjut, lihat Ikhtisar.
EventBridge telah diaktifkan. Untuk informasi lebih lanjut, lihat Aktivasi EventBridge dan pemberian izin kepada Pengguna RAM.
Catatan
Keterbatasan
Tabel berikut mencantumkan instans yang mendukung pengiriman data.
Instans | Deskripsi |
Prometheus untuk layanan Alibaba Cloud | Instans gratis, kecuali untuk yang namanya dimulai dengan cloud-product-prometheus. |
Prometheus untuk layanan kontainer | Tidak tersedia |
Prometheus untuk pemantauan aplikasi | Tidak tersedia |
Prometheus untuk Flink Serverless | Tidak tersedia |
Prometheus untuk Kubernetes | Tidak tersedia |
Instans Prometheus tujuan umum | Instans tujuan umum, kecuali untuk yang datanya dilaporkan melalui Titik akhir OpenTelemetry. |
Saat mengirimkan data dalam virtual private cloud (VPC), jika VPC tempat instance Prometheus berada tidak sama dengan VPC target, pastikan bahwa alamat IP dari vSwitch di VPC target telah ditambahkan ke daftar putih instance Prometheus. Jika tidak, koneksi jaringan mungkin gagal.
Di halaman vSwitch di Konsol VPC, Anda dapat memperoleh Blok CIDR dari vSwitch.

Langkah 1: Buat tugas pengiriman data
Masuk ke Konsol Managed Service for Prometheus.
Di panel navigasi kiri, klik Data Delivery.
Di halaman Data Delivery, pilih Wilayah di bilah navigasi atas dan klik Create Task.
Di kotak dialog yang muncul, atur parameter Task Name dan Task Description, lalu klik OK.
Di halaman Edit Task, atur konfigurasi untuk sumber data dan target event.
Klik + Add Data Source, atur parameter, lalu klik OK. Tabel berikut mencantumkan parameter.
Parameter
Deskripsi
Contoh
Prometheus Instance
Instance Prometheus yang ingin Anda kirimkan datanya.
c78cb8273c02*****
Data Filtering
Label metrik yang akan difilter.
Ekspresi reguler didukung. Gunakan baris baru untuk memisahkan beberapa kondisi. Data hanya dapat dikirimkan ketika hubungan antara kondisi adalah Logika DAN.
__name__=AliyunEcs_CPUUtilization|AliyunEcs_memory_usedutilization regionId=cn-hangzhou id=i-2ze0mxp.*Data Labeling
Label yang Anda tambahkan ke data metrik yang akan dikirimkan. Gunakan baris baru untuk memisahkan beberapa label.
deliver_test_key1=ssss deliver_test_key2=yyyyKlik Add Target, atur parameter Destination Type menjadi ApsaraMQ for Kafka, konfigurasikan informasi yang diperlukan, lalu klik OK.
Di halaman Edit Task, klik OK dan Save.
Langkah 2: Lihat data pemantauan yang dikirimkan
Untuk mengurangi beban ApsaraMQ for Kafka, data pemantauan dari Prometheus dikonversi ke format JsonArray menggunakan Snappy sebelum dikirimkan ke ApsaraMQ for Kafka. Untuk informasi lebih lanjut, lihat Snappy.
Metode 1: Gunakan konsol untuk melihat data pemantauan
Masuk ke Konsol ApsaraMQ for Kafka.
Di bagian Resource Distribution pada halaman Overview, pilih wilayah tempat instance ApsaraMQ for Kafka yang ingin Anda kelola berada.
Di halaman Instances, klik nama instans yang ingin Anda kelola.
Di panel navigasi sisi kiri, klik Topics. Temukan topik yang ingin Anda kelola dan klik Details di kolom Actions. Klik tab CloudMonitor atau Message Query untuk melihat data pemantauan yang Anda impor.

Metode 2: Gunakan konsumen Kafka untuk melihat data pemantauan
Inisialisasi konsumen Kafka. Untuk informasi lebih lanjut, lihat bagian Gunakan konsumen tunggal untuk berlangganan pesan dari topik Menggunakan titik akhir instans untuk mengirim dan menerima pesan.
Tambahkan konten berikut ke file
KafkaConsumerDemo.java. Dalam kode sampel berikut, konsumen Kafka yang telah diinisialisasi menggunakan Snappy untuk mendekompresi dan mengonsumsi data pemantauan:public static void main(String[] args) { // Inisialisasi konsumen Kafka terlebih dahulu. while (true){ try { ConsumerRecords<String, byte[]> records = consumer.poll(1000); // Semua pesan harus dikonsumsi sebelum siklus polling berikutnya dimulai. Durasi total tidak boleh melebihi periode timeout yang ditentukan oleh SESSION_TIMEOUT_MS_CONFIG. // Kami merekomendasikan agar Anda membuat kolam thread terpisah untuk mengonsumsi pesan dan secara asinkron mengembalikan hasilnya. for (ConsumerRecord<String, byte[]> record : records) { byte[] compressedData = record.value(); byte[] data = Snappy.uncompress(compressedData); System.out.println(new String(data)); } } catch (Exception e) { try { Thread.sleep(1000); } catch (Throwable ignore) { } e.printStackTrace(); } } }Kompilasi dan jalankan file
KafkaConsumerDemo.java. Kemudian, data pemantauan berikut dalam format JSON akan ditampilkan:[{ "instance": "*****", "pod": "*****", "rejected": "false", "type": "validate", "pod_name": "*****", "endpoint": "http-metrics", "__name__": "apiserver_admission_controller_admission_duration_seconds_bucket", "service": "kubernetes", "name": "*****", "namespace": "default", "le": "2.5", "job": "apiserver", "operation": "UPDATE", "value": "675.0", "timestamp": "1698732988354" }, { "instance": "*****", "pod": "*****", "rejected": "false", "type": "validate", "pod_name": "*****", "endpoint": "http-metrics", "__name__": "apiserver_admission_controller_admission_duration_seconds_bucket", "service": "kubernetes", "name": "*****", "namespace": "default", "le": "+Inf", "job": "apiserver", "operation": "UPDATE", "value": "675.0", "timestamp": "1698732988354" }, { "instance": "*****", "pod": "*****", "rejected": "false", "type": "validate", "pod_name": "*****", "endpoint": "http-metrics", "__name__": "apiserver_admission_controller_admission_duration_seconds_bucket", "service": "kubernetes", "name": "*****", "namespace": "default", "le": "0.005", "job": "apiserver", "operation": "UPDATE", "value": "1037.0", "timestamp": "1698732988519" }, { "instance": "*****", "pod": "*****", "rejected": "false", "type": "validate", "pod_name": "*****", "endpoint": "http-metrics", "__name__": "apiserver_admission_controller_admission_duration_seconds_bucket", "service": "kubernetes", "name": "*****", "namespace": "default", "le": "0.025", "job": "apiserver", "operation": "UPDATE", "value": "1037.0", "timestamp": "1698732988519" }]