Pengumpulan Log yang Disederhanakan dengan Plugin http-logger APISIX

Qi Guo

Qi Guo

April 11, 2024

Technology

Pendahuluan

Dalam pengembangan perangkat lunak modern, pencatatan panggilan API merupakan bagian yang tidak terpisahkan, merekam informasi detail untuk setiap panggilan API dari suatu aplikasi. Manajemen log yang efektif memungkinkan tim pengembangan untuk memantau aktivitas panggilan API secara real-time, memfasilitasi deteksi dan penyelesaian masalah dengan cepat. Meskipun solusi sistem pencatatan yang matang sudah ada di perusahaan, pengembang mungkin menghadapi tantangan dalam mengintegrasikan log dari layanan pengujian tahap awal ke dalam sistem pencatatan internal karena pembatasan izin dan proses persetujuan, yang menghambat efisiensi pengembangan mereka.

Plugin http-logger yang disediakan oleh Apache APISIX memfasilitasi integrasi dengan server HTTP, menggunakan protokol HTTP yang banyak diadopsi untuk penerimaan log. Hal ini memungkinkan pengembang untuk dengan mudah melihat log panggilan API secara langsung, sehingga meningkatkan efisiensi pengembangan. Di bawah ini kami akan memperkenalkan cara kerjanya dan bagaimana menggunakannya.

Prinsip Plugin http-logger

Plugin http-logger di APISIX mendukung pengiriman data log ke server HTTP atau HTTPS. Prinsip intinya melibatkan pemrosesan permintaan oleh APISIX saat klien memulai, menghasilkan log akses, dan secara asinkron mengirim informasi konteks permintaan, yang diformat sesuai dengan format log yang ditentukan, melalui permintaan POST sebagai objek JSON ke server HTTP atau HTTPS yang dikonfigurasi. Ini memungkinkan melihat informasi log API pada layanan HTTP atau HTTPS kita sendiri, sangat meningkatkan efisiensi pengembangan. Diagram alir disediakan di bawah ini untuk menggambarkan aliran data.

Diagram aliran data

Membuat Layanan HTTP Sederhana untuk Penerimaan Log

Meskipun banyak produk SaaS dan solusi open-source tersedia di pasar untuk manajemen dan analisis log, seperti Loggly, Splunk, dan ELK Stack, akses ke jaringan eksternal mungkin dibatasi dalam jaringan perusahaan, menimbulkan tantangan selama tahap pengembangan dan pengujian. Oleh karena itu, layanan HTTP sederhana dapat dikembangkan dengan cepat untuk mengumpulkan log. Di bawah ini adalah contoh menggunakan Node.js:

// httpserver.js const http = require('http'); http.createServer((req, res) => { let data = ''; req.on('data', chunk => { data += chunk; }); req.on('end', () => { console.log('APISIX Log:', data); }); res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(`Hello World\n`); }).listen(3000, () => { console.log('Server running at http://localhost:3000/'); });

Skrip ini mendengarkan pada port lokal 3000 dan mencetak badan permintaan dari permintaan ke endpoint layanan ini. Anda dapat mengikuti langkah-langkah berikut untuk menjalankan dan mengujinya:

  1. Jalankan node httpserver.js untuk memulai layanan.

  2. Gunakan perintah curl -i http://127.0.0.1:3000/ -d '{"name": "Jack"}' untuk mengakses endpoint ini.

  3. Anda akan melihat output yang serupa:

Server running at http://localhost:3000/ APISIX Log: {"name": "Jack"}

Mengaktifkan Plugin Http-logger di APISIX

Selanjutnya, mari kita bahas cara mengaktifkan plugin http-logger di APISIX dan mengirim log ke layanan HTTP yang dibuat pada langkah sebelumnya.

  1. Gunakan APISIX Admin API untuk membuat rute dan mengaktifkan plugin http-logger:
curl "http://127.0.0.1:9080/apisix/admin/routes/1" \ -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d ' { "uri": "/get", "upstream": { "type": "roundrobin", "nodes": { "httpbin.org:80": 1 } }, "plugins": { "http-logger": { "uri": "http://127.0.0.1:3000/" } } }'
  1. Gunakan perintah curl untuk mengirim permintaan ke APISIX: curl -i http://127.0.0.1:9080/get

  2. Anda kemudian akan melihat output log yang serupa di terminal Anda.

Output log untuk mengaktifkan plugin http-logger

Dapat diamati bahwa kita telah berhasil mengumpulkan log yang dikirim oleh APISIX.

Menyesuaikan Format Log

Plugin http-logger memungkinkan pengembang untuk menyesuaikan format log untuk memenuhi berbagai kebutuhan. Jika hanya bidang tertentu dalam data log yang diminati, APISIX mendukung deklarasi format dan konten log. Ini dapat dicapai dengan mengatur metadata plugin yang disediakan oleh APISIX.

1. Konfigurasi metadata plugin melalui Admin API:

curl http://127.0.0.1:9180/apisix/admin/plugin_metadata/http-logger \ -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "log_format": { "host": "$host", "@timestamp": "$time_iso8601", "client_ip": "$remote_addr" } }'
  1. Setelah mengeluarkan perintah curl lagi, Anda akan melihat output log yang serupa:
APISIX Log: [{"service_id":"a869a037-27df-4278-ab50-4e66d212cfc0","client_ip":"192.168.65.1","host":"127.0.0.1","route_id":"4f499953-9504-4737-9f3d-facaeda4b841","@timestamp":"2024-04-10T00:10:31+00:00"}]

Kesimpulan

Dengan memanfaatkan plugin http-logger, pengembang tidak hanya menyederhanakan proses melihat log tetapi juga meningkatkan efisiensi pengembangan sehari-hari. Plugin ini, yang disediakan oleh APISIX, adalah plugin pencatatan yang paling sederhana dan ramah pengguna, beroperasi pada protokol HTTP yang diterima secara universal untuk transmisi jaringan. Ini memungkinkan pengembang untuk dengan mudah mengintegrasikan dengan layanan HTTP apa pun dan secara fleksibel memilih layanan penerima log.

Selain itu, APISIX mendukung puluhan plugin pencatatan untuk memenuhi berbagai kebutuhan dalam skenario yang berbeda. Baik untuk pengumpulan log HTTP sederhana, analisis log dan pemantauan yang kompleks, atau kebutuhan kinerja dan stabilitas tinggi, APISIX memberikan dukungan komprehensif, menciptakan sistem yang lebih nyaman dan efisien bagi pengguna.

Tags: