Mengintegrasikan Splunk HTTP Event Collector dengan Apache APISIX
API7.ai
February 10, 2022
Kompleksitas sistem semakin meningkat seiring dengan iterasi teknologi dan evolusi arsitektur perusahaan. Log dapat mendukung dan kompatibel dengan berbagai mesin analisis untuk mengurangi biaya bagi pengguna dalam proses pemilihan, operasi, dan pemeliharaan. Analisis dan observasi berbasis log memainkan peran yang sangat penting sebagai landasan untuk memastikan stabilitas sistem.
Apache APISIX tidak hanya merupakan API Gateway dengan performa luar biasa, tetapi juga telah mendukung sebagian besar solusi logging open source dan komersial utama melalui komunikasi dengan pengguna komunitas tentang operasi dan pemeliharaan data dan logging, termasuk: HTTP Logger, TCP Logger, Kafka Logger, UDP Logger, RocketMQ Logger, SkyWalking Logger, Aliyun Cloud Logging(SLS), Google Cloud Logging, dll.
Kini kami memiliki tambahan baru dalam matriks dukungan Logger Apache APISIX: Splunk HEC Logging.
Artikel ini menjelaskan cara mengkonfigurasi dan menggunakan layanan Splunk HEC di Apache APISIX.
Tentang Splunk HTTP Event Collector
Splunk adalah mesin pencari teks lengkap untuk data mesin yang dapat digunakan untuk mengumpulkan, mengindeks, mencari, dan menganalisis data dari berbagai aplikasi. Menurut peringkat mesin pencari DB Engines, Splunk saat ini berada di posisi kedua dan merupakan perangkat lunak pencarian teks lengkap yang banyak digunakan. Splunk, seperti ElasticSearch, adalah aliran data quasi-real-time yang menyediakan hasil pencarian tanpa henti.
Splunk HTTP Event Collector (HEC) adalah pengumpul event HTTP yang disediakan oleh Splunk yang menyediakan kemampuan untuk mengirim data dan event aplikasi ke Splunk menggunakan protokol HTTP(S).
Tentang plugin splunk-hec-logging
splunk-hec-logging digunakan untuk meneruskan log permintaan Apache APISIX ke Splunk untuk analisis dan penyimpanan. Ketika diaktifkan, Apache APISIX akan mengambil informasi konteks permintaan selama fase Log, mengubahnya menjadi Format Data Event Splunk dan mengirimkannya ke antrian batch. Data dalam antrian akan dikirim ke Splunk HEC ketika kapasitas pemrosesan maksimum antrian batch per batch dipicu, atau ketika waktu maksimum untuk menyegarkan buffer tercapai.
Cara menggunakan plugin splunk-hec-logging
Konfigurasi Splunk
Menyebarkan Splunk Enterprise
Silakan merujuk ke panduan instalasi Splunk untuk penyebaran. Artikel ini akan mendemonstrasikan penyebaran melalui Docker.
Parameter perintah Docker adalah sebagai berikut.
docker run -p 18088:8088 -p 18000:8000 \ # 8088 adalah port HEC, 8000 adalah port backend manajemen -e "SPLUNK_PASSWORD=your-password" \ # Kata sandi login Admin -e "SPLUNK_START_ARGS=--accept-license" \ # Menerima persyaratan lisensi (Splunk akan menyediakan Lisensi Uji Coba Enterprise secara default) -e "SPLUNK_HEC_TOKEN=your-hec-token" \ # Mengatur token HEC default, ini akan membuat HEC default setelah konfigurasi -itd --rm --name splunk-example splunk/splunk:latest
Parameter perintah dijelaskan dalam Dokumentasi Docker Splunk.
Mengkonfigurasi Splunk HEC
HEC default sudah dikonfigurasi dan dibuat di Docker, jadi kami tidak akan membahas proses pembuatannya di sini. Untuk detail tentang proses pembuatan manual, silakan merujuk ke dokumentasi: Set up and use HTTP Event Collector in Splunk Web.
Masuk ke Splunk Enterprise dan periksa HEC
Akses port yang dipetakan dari Docker melalui browser. Karena Anda perlu memetakan port 8000 dari backend manajemen ke port 18000 dari host, Anda dapat mengaksesnya dari browser dengan "alamat loopback ditambah port" pada host selama operasi. Misalnya: http://127.0.0.1:18000, nama pengguna default untuk login adalah admin, dan kata sandi adalah nilai SPLUNK_PASSWORD yang diatur dalam variabel lingkungan pada contoh di atas.
Seperti yang ditunjukkan pada gambar di bawah ini, berarti login berhasil.

Klik "Settings > Data Inputs" di bagian kanan atas layar untuk memeriksa apakah HEC default berhasil diatur.

Kita sudah dapat melihat jumlah HEC di kolom Inputs dari HTTP Event Collector, yang menunjukkan pengaturan berhasil.

Pada titik ini, Anda dapat mengklik HTTP Event Collector untuk masuk ke daftar detail HEC untuk melihat informasi Token dari HEC.

Token Values adalah nilai dari SPLUNK_HEC_TOKEN yang dikonfigurasi dalam variabel lingkungan Docker di atas.
Konfigurasi Apache APISIX
Mengaktifkan plugin splunk-hec-logging
Jalankan perintah berikut untuk mengaktifkan plugin splunk-hec-logging.
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "plugins":{ "splunk-hec-logging":{ "endpoint":{ // endpoint HEC "uri":"http://127.0.0.1:18088/services/collector", // Token HEC "token":"BD274822-96AA-4DA6-90EC-18940FB2414C" }, // Waktu maksimum (dalam detik) untuk menyegarkan buffer antrian batch "inactive_timeout":2, // Jumlah maksimum entri log per antrian batch "batch_max_size":10 } }, "upstream":{ "type":"roundrobin", "nodes":{ "127.0.0.1:1980":1 } }, "uri":"/splunk.do" }'
Parameter plugin dijelaskan dalam tabel berikut.
| Nama | Diperlukan | Nilai Default | Deskripsi |
|---|---|---|---|
| endpoint | Ya | N/A | Informasi Konfigurasi Endpoint Splunk HEC |
| endpoint.uri | Ya | N/A | API Pengumpulan Event Splunk HEC |
| endpoint.token | Ya | N/A | Token Identitas Splunk HEC |
| endpoint.channel | Tidak | N/A | Identifikasi saluran pengiriman Splunk HEC, lihat: About HTTP Event Collector Indexer Acknowledgment |
| endpoint.timeout | Tidak | 10 | Waktu tunggu pengiriman data Splunk HEC dalam detik. |
| ssl_verify | Tidak | TRUE | Mengaktifkan autentikasi SSL, lihat: Dokumentasi OpenResty. |
| max_retry_count | Tidak | 0 | Jumlah maksimum percobaan ulang sebelum dihapus dari pipeline pemrosesan. |
| retry_delay | Tidak | 1 | Jumlah detik yang harus ditunda eksekusi proses jika eksekusi gagal. |
| buffer_duration | Tidak | 60 | Durasi maksimum (dalam detik) dari entri tertua dalam batch yang harus diproses terlebih dahulu. |
| inactive_timeout | Tidak | 5 | Waktu maksimum untuk menyegarkan buffer dalam detik. |
| batch_max_size | Tidak | 1000 | Jumlah maksimum entri per antrian batch. |
Mengirim permintaan
Jalankan perintah berikut untuk mengirim permintaan ke Splunk.
$ curl -i http://127.0.0.1:9080/splink.do HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Date: Fri, 10 Dec 2021 09:57:52 GMT Server: APISIX/2.11.0 Hello, Splunk HEC Logging
Memverifikasi log
Masuk ke konsol Splunk dan klik "Search & Reporting".

Ketik source="apache-apisix-splunk-hec-logging" di kotak pencarian untuk menanyakan log permintaan yang dikirim.

Menonaktifkan plugin splunk-hec-logging
Hapus konfigurasi splunk-hec-logging untuk menonaktifkan plugin.
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri":"/logging.do", "upstream":{ "type":"roundrobin", "nodes":{ "127.0.0.1:1980":1 } }, "plugins":{ } }'
Ringkasan
Apache APISIX juga saat ini sedang mengerjakan plugin tambahan untuk mendukung integrasi dengan lebih banyak layanan, jadi jika Anda tertarik, jangan ragu untuk memulai thread diskusi di GitHub Discussion kami atau berkomunikasi melalui mailing list.
Artikel terkait
- Integrasi Apache APISIX dengan Kafka untuk Pemantauan Log Real-Time yang Efisien
- Apache APISIX & RocketMQ Membantu Kemampuan Pemantauan Log API Pengguna
- Apache APISIX Berintegrasi dengan Google Cloud Logging untuk Meningkatkan Pemrosesan Log
- Apache APISIX Berintegrasi dengan SkyWalking untuk Membuat Pemrosesan Log yang Lengkap