Fitur manajemen log pesan secara otomatis mendorong log operasi dari instans ApsaraMQ for RabbitMQ ke Logstore Simple Log Service. Jika terjadi error selama pengiriman, konsumsi, atau acknowledgment pesan, Anda dapat melakukan kueri dan menganalisis log tersebut di Simple Log Service untuk mendiagnosis masalah tersebut.
Prasyarat
Anda telah membuat instans ApsaraMQ for RabbitMQ. Untuk informasi lebih lanjut, lihat Manage instances.
Anda telah mengaktifkan Simple Log Service serta membuat proyek dan Logstore. Untuk informasi lebih lanjut, lihat Resource management overview.
Buat peran terkait layanan
AliyunServiceRoleForAmqpLogDeliverydan berikan izin yang diperlukan saat diminta di konsol. Peran ini mendorong log ke Simple Log Service Anda.
Jika Anda menghapus proyek atau Logstore, atau mencabut izin dari ApsaraMQ for RabbitMQ, pengiriman log akan gagal.
Billing
ApsaraMQ for RabbitMQ
Anda tidak dikenai biaya untuk menggunakan fitur manajemen log pesan.
Simple Log Service
Setelah ApsaraMQ for RabbitMQ mendorong log ke Simple Log Service, Anda akan dikenai biaya untuk item seperti penyimpanan, trafik, dan permintaan. Untuk informasi lebih lanjut, lihat Billable items of pay-as-you-go.
Format log
Skema log
Parameter | Deskripsi |
Action | Metode permintaan untuk operasi tersebut. Untuk nilai dan deskripsi yang valid, lihat Action request methods. |
Code | Kode status. Nilai yang valid:
|
Info | Bidang ini kosong untuk permintaan yang berhasil. Untuk permintaan yang gagal, bidang ini memberikan detail tentang kode status error. |
InstanceId | ID instans ApsaraMQ for RabbitMQ. ID instans tersedia di halaman Instance Details atau Overview di konsol ApsaraMQ for RabbitMQ. |
Queue | Antrian yang terkait dengan langganan atau pesan.
|
Property | Atribut pesan. Nilai yang valid:
|
RemoteAddress | Alamat IP klien yang memulai operasi.
Catatan Bidang ini tidak dicatat jika Action adalah SendDlqMessage. |
ReqUid | ID akun.
Catatan Bidang ini tidak dicatat jika Action adalah SendDlqMessage. |
ResourceName | Nama resource.
Catatan Bidang ini tidak dicatat jika Action adalah ConnectionOpen, ConnectionClose, ChannelOpen, atau ChannelClose. |
VHost | Nama vhost. Nama ini tersedia di halaman vhosts di konsol ApsaraMQ for RabbitMQ. |
ConnectionId | ID sisi server yang secara unik mengidentifikasi koneksi. Catatan Bidang ini tidak dicatat jika Action adalah SendDlqMessage. |
ChannelId | ID yang dibuat klien yang secara unik mengidentifikasi channel dalam koneksi saat ini. Catatan Jika Action adalah ConnectionOpen atau ConnectionClose, nilai ini null. |
microtime | Timestamp permintaan dalam mikrodetik. |
_source_ | Ini adalah bidang cadangan di Simple Log Service. Untuk informasi lebih lanjut, lihat Reserved fields. |
__tag__:__receive_time__ | Ini adalah bidang cadangan di Simple Log Service. Untuk informasi lebih lanjut, lihat Reserved fields. |
__topic__ | Ini adalah bidang cadangan di Simple Log Service. Untuk informasi lebih lanjut, lihat Reserved fields. |
Metode permintaan Action
Metode permintaan | Deskripsi |
ConnectionOpen | Membuat koneksi. |
ConnectionClose | Menutup koneksi. |
ChannelOpen | Membuka channel. |
ChannelClose | Menutup channel. |
QueueDeclare | Membuat antrian. |
QueueDelete | Menghapus antrian. |
ExchangeDeclare | Membuat Exchange. |
ExchangeDelete | Menghapus exchange. |
ExchangeBind | Menautkan exchange sumber ke exchange tujuan. |
ExchangeUnBind | Memutus tautan exchange sumber dari exchange tujuan. |
QueueBind | Menautkan antrian ke exchange. |
QueueUnbind | Memutus tautan antrian dari exchange |
SendMessage | Produsen mengirim pesan. |
PushMessage | Broker mendorong pesan. |
BasicGet | Klien menarik pesan. |
BasicAck | Mengonfirmasi konsumsi pesan. |
BasicConsume | Berlangganan ke antrian. |
BasicReject | Menolak pesan. |
BasicRecover | Mengirim ulang pesan yang belum dikonfirmasi. |
BasicNack | Menolak pesan secara negatif. |
BasicQos | Membatasi jumlah pesan yang belum dikonfirmasi yang dapat dipra-ambil oleh konsumen. |
QueuePurge | Menghapus semua pesan dari antrian. |
DeleteMessage | Server menghapus pesan setelah menerima acknowledgment Basic.Ack dari klien. |
SendDlqMessage | Mengirim pesan dead-letter. |
Prosedur
Untuk mendorong log dari instans ApsaraMQ for RabbitMQ Anda ke Simple Log Service, konfigurasikan tujuan.
Masuk ke ApsaraMQ for RabbitMQ console. Di panel navigasi kiri, klik Instances.
Di bilah navigasi atas halaman Instances, pilih wilayah tempat instans yang ingin Anda kelola berada. Lalu, di daftar instans, klik nama instans yang ingin Anda kelola.
Di panel navigasi kiri, klik Log Management.
Di kartu My Resources, klik Authorize Now.
Jika Anda telah memberikan izin kepada ApsaraMQ for RabbitMQ untuk mengakses Simple Log Service, lewati langkah ini.
Di halaman Log Management, pilih proyek dan Logstore yang telah Anda buat dari daftar drop-down Project Name dan Logstore, lalu klik Enable.
Masuk ke Simple Log Service console. Aktifkan dan konfigurasikan indeks bidang untuk log Anda. Untuk informasi lebih lanjut, lihat Create indexes.
Tambahkan secara manual bidang
__tag__:__receive_time__dan atur alias-nya menjaditimestamp.
Tutorial
Hitung operasi kirim/terima pesan berdasarkan antrian untuk mengidentifikasi antrian berbiaya tinggi
Saat konsol ApsaraMQ for RabbitMQ tidak menyediakan rincian penagihan tingkat antrian, Anda dapat menggunakan log operasi di Simple Log Service untuk menghitung secara mandiri operasi pesan berdasarkan antrian dan menemukan antrian dengan konsumsi tinggi, tanpa bergantung pada ekstraksi data backend.
Di Simple Log Service, kueri log operasi instans ApsaraMQ for RabbitMQ Anda dan jalankan pernyataan kueri berikut untuk mengumpulkan jumlah operasi
SendMessage,PushMessage, danBasicGetper antrian dalam rentang waktu tertentu, diurutkan berdasarkan jumlah operasi secara menurun:Action: SendMessage OR Action: PushMessage OR Action: BasicGet | SELECT Queue, Action, COUNT(*) AS operation_count GROUP BY Queue, Action ORDER BY operation_count DESC LIMIT 100Action
Deskripsi
SendMessageProdusen mengirim pesan ke ApsaraMQ for RabbitMQ.
PushMessageBroker mendorong pesan ke konsumen.
BasicGetKlien konsumen menarik pesan.
Hasilnya menunjukkan antrian mana yang memiliki throughput pesan tertinggi. Gunakan hasil ini untuk mengidentifikasi sumber biaya tinggi dan memprioritaskan optimasi tanpa menunggu ekstraksi data backend.
FAQ
T: Mengapa terdapat perbedaan waktu antara timestamp log klien dan waktu keberhasilan pengiriman server di ApsaraMQ for RabbitMQ?
J: Untuk mengatasi perbedaan ini, ikuti langkah-langkah berikut:
Periksa log sisi server terlebih dahulu. Kueri log operasi di Simple Log Service untuk memverifikasi bahwa server berhasil mengirimkan pesan tanpa penundaan. Filter berdasarkan
Action: PushMessage OR Action: DeleteMessagedan pastikan nilai bidangCodeadalah200. Jika log sisi server normal, maka server bukan penyebab perbedaan waktu tersebut.Investigasi lingkungan klien. Jika log sisi server tidak menunjukkan masalah, perbedaan tersebut biasanya disebabkan oleh sisi klien. Periksa kondisi berikut:
Latensi jaringan atau kehilangan paket: Masalah jaringan intermiten antara klien dan layanan ApsaraMQ for RabbitMQ dapat menunda acknowledgment pesan di sisi klien.
Penggunaan CPU tinggi: CPU yang sangat sibuk dapat menunda eksekusi metode pengiriman pesan (misalnya,
convertAndSend), sehingga timestamp yang direkam klien tertinggal dari waktu pengiriman aktual server.Jeda Full GC yang sering: Event Full GC JVM menghentikan semua thread aplikasi, yang dapat meningkatkan secara signifikan waktu antara pemanggilan metode kirim dan pengiriman pesan aktual. Hal ini menyebabkan log klien mencatat timestamp yang lebih lambat daripada waktu pengiriman server.
T: Bagaimana cara menganalisis penyebab masalah setelah menerima log alarm atau pemberitahuan peringatan dari ApsaraMQ for RabbitMQ?
J: Saat Anda menerima log alarm atau pemberitahuan peringatan, ikuti langkah-langkah berikut untuk mengidentifikasi akar permasalahan:
Temukan tautan konsol dalam log alarm. Log alarm mencakup URL yang mengarahkan Anda ke halaman pemantauan atau manajemen terkait di konsol cloud. Temukan URL ini dalam konten log alarm.
Buka halaman Detail Tugas. Klik URL dalam log alarm untuk mengakses halaman Task Details atau halaman pemantauan kluster secara langsung. Halaman ini menyediakan konteks alarm, metrik terkait, dan garis waktu event untuk membantu Anda mendiagnosis masalah yang mendasarinya.
Korelasikan dengan log operasi. Bandingkan timestamp event alarm dengan log operasi di Simple Log Service untuk mengidentifikasi operasi pesan terkait (seperti kegagalan koneksi, penolakan pesan, atau routing dead-letter) yang terjadi pada waktu yang sama dan mungkin berkontribusi terhadap alarm tersebut.