全部产品
Search
文档中心

Managed Service for Prometheus:Mengirimkan data pemantauan dari instance Prometheus ke Apsara MQ for Kafka

更新时间:Sep 11, 2025

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

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.

    444.jpg

Langkah 1: Buat tugas pengiriman data

  1. Masuk ke Konsol Managed Service for Prometheus.

  2. Di panel navigasi kiri, klik Data Delivery.

  3. Di halaman Data Delivery, pilih Wilayah di bilah navigasi atas dan klik Create Task.

  4. Di kotak dialog yang muncul, atur parameter Task Name dan Task Description, lalu klik OK.

  5. Di halaman Edit Task, atur konfigurasi untuk sumber data dan target event.

    1. 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=yyyy
    2. Klik Add Target, atur parameter Destination Type menjadi ApsaraMQ for Kafka, konfigurasikan informasi yang diperlukan, lalu klik OK.

  6. Di halaman Edit Task, klik OK dan Save.

Langkah 2: Lihat data pemantauan yang dikirimkan

Catatan

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

  1. Masuk ke Konsol ApsaraMQ for Kafka.

  2. Di bagian Resource Distribution pada halaman Overview, pilih wilayah tempat instance ApsaraMQ for Kafka yang ingin Anda kelola berada.

  3. Di halaman Instances, klik nama instans yang ingin Anda kelola.

  4. 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.

    image

Metode 2: Gunakan konsumen Kafka untuk melihat data pemantauan

  1. 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.

  2. 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();
                }
            }
    }
  3. 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"
    }]