Topik ini menjelaskan cara mengirim log dari Simple Log Service (SLS) ke Splunk menggunakan Alibaba Cloud Log Service Add-on for Splunk.
Cara kerja
Alur data adalah sebagai berikut:
Add-on menggunakan input data Splunk untuk membuat dan mengelola kelompok konsumen yang mengonsumsi log dari SLS secara real time.
Splunk heavy forwarder menggunakan protokol privat Splunk atau HTTP Event Collector (HEC) untuk meneruskan log ke indexer Splunk.
Ini adalah add-on pengumpulan data dan harus diinstal hanya pada Splunk heavy forwarder. Jangan menginstalnya pada indexer atau search head.
Istilah
Input data adalah konsumen yang mengonsumsi log.
Kelompok konsumen berisi beberapa konsumen. Setiap konsumen dalam kelompok konsumen mengonsumsi log yang berbeda yang disimpan dalam logstore.
Logstore berisi beberapa shard.
Setiap shard hanya dapat dialokasikan ke satu konsumen.
Konsumen dapat mengonsumsi data dari beberapa shard.
Nama konsumen adalah pengidentifikasi unik untuk setiap konsumen, yang dihasilkan secara otomatis dengan menggabungkan nama kelompok konsumen, hostname, ID proses, dan protokol. Hal ini memastikan tidak ada dua konsumen dalam kelompok yang sama memiliki nama yang sama.
Untuk informasi lebih lanjut tentang kelompok konsumen, lihat Gunakan kelompok konsumen untuk mengonsumsi log.
Prasyarat
Dapatkan pasangan AccessKey yang digunakan untuk mengakses SLS.
Gunakan pasangan AccessKey milik pengguna Resource Access Management (RAM) untuk mengakses proyek SLS. Untuk informasi lebih lanjut, lihat Pasangan AccessKey.
Gunakan asisten izin untuk memberikan izin kepada pengguna RAM. Contoh berikut menunjukkan kebijakan umum.
CatatanGanti <Nama proyek> dan <Nama logstore> dengan nama proyek dan logstore Anda yang sebenarnya. Wildcard (*) didukung.
{ "Version": "1", "Statement": [ { "Action": [ "log:ListShards", "log:GetCursorOrData", "log:GetConsumerGroupCheckPoint", "log:UpdateConsumerGroup", "log:ConsumerGroupHeartBeat", "log:ConsumerGroupUpdateCheckPoint", "log:ListConsumerGroup", "log:CreateConsumerGroup" ], "Resource": [ "acs:log:*:*:project/<Nama proyek>/logstore/<Nama logstore>", "acs:log:*:*:project/<Nama proyek>/logstore/<Nama logstore>/*" ], "Effect": "Allow" } ] }Pastikan lingkungan Anda memenuhi persyaratan berikut:
Versi terbaru add-on digunakan.
Sistem operasi adalah Linux, macOS, atau Windows.
Versi Splunk heavy forwarder adalah 8.0 atau lebih baru dan versi indexer Splunk adalah 7.0 atau lebih baru.
Konfigurasikan HEC pada Splunk.
Jika Anda menggunakan HEC untuk mengirim event ke indexer Splunk, pastikan HEC telah dikonfigurasi pada Splunk. Jika Anda menggunakan protokol privat Splunk untuk mengirim event ke indexer Splunk, lewati langkah ini.
CatatanSaat membuat token HEC, jangan aktifkan fitur acknowledgment indexer untuk token tersebut.
Instal add-on
Masuk ke antarmuka web Splunk dan instal add-on. Untuk menginstal add-on, kami menyarankan Anda menggunakan salah satu metode berikut.
Add-on ini hanya digunakan untuk mengumpulkan data. Anda harus menginstal add-on pada Splunk heavy forwarder. Anda tidak perlu menginstal add-on pada indexer atau search head Splunk.
Metode 1
Klik ikon
.Pada halaman Apps, klik Find More Apps.
Pada halaman Browse More Apps, cari Alibaba Cloud Log Service Add-on for Splunk dan klik Install.
Setelah add-on diinstal, restart Splunk sesuai permintaan.
Metode 2
Klik ikon
.Pada halaman Apps, klik Install app from file.
Pada halaman Upload app, pilih file TGZ yang ingin Anda unggah dan klik Upload.
Klik App Search Results dan unduh file TGZ yang diperlukan.
Klik Install.
Setelah add-on diinstal, restart Splunk sesuai permintaan.
Konfigurasi add-on
Jika Splunk tidak berjalan pada instance Elastic Compute Service (ECS), gunakan pasangan AccessKey akun Alibaba Cloud Anda untuk mengakses SLS.
Pada antarmuka web Splunk, klik Alibaba Cloud Log Service Add-on for Splunk.
Konfigurasikan akun global.
Pada halaman yang muncul, pilih . Pada halaman Configuration, klik tab Account. Pada tab ini, klik Add. Di kotak dialog Add Account, masukkan pasangan AccessKey yang dapat digunakan untuk mengakses SLS.
CatatanField dipetakan sebagai berikut:
Username: ID AccessKey Anda.
Password: Rahasia AccessKey Anda.
Tentukan tingkat log add-on.
Pilih . Pada halaman Configuration, klik tab Logging. Pada tab ini, pilih tingkat dari daftar drop-down Log level.
Buat input data.
Klik inputs untuk membuka halaman inputs.
Klik Create New Input. Di kotak dialog Add sls_datainput, konfigurasikan parameter input data.
Tabel 1. Parameter input data
Parameter
Wajib dan tipe data
Deskripsi
Contoh
Name
Ya, string
Nama input data. Harus unik secara global.
Tidak ada.
Interval
Ya, integer
Periode waktu yang diperlukan untuk me-restart proses input data Splunk setelah proses berhenti. Satuan: detik.
Nilai default: 10.
Index
Ya, string
Indeks Splunk.
Tidak ada.
SLS AccessKey
Ya, string
Pasangan AccessKey Alibaba Cloud yang terdiri dari ID AccessKey dan rahasia AccessKey.
CatatanAnda harus memasukkan ID AccessKey di field Username dan rahasia AccessKey terkait di field Password.
Pasangan AccessKey yang Anda masukkan saat mengonfigurasi akun global.
SLS endpoint
Ya, string
cn-huhehaote.log.aliyuncs.com
https://cn-huhehaote.log.aliyuncs.com
SLS project
Ya, string
Nama proyek SLS. Untuk informasi lebih lanjut, lihat Kelola proyek.
Tidak ada.
SLS logstore
Ya, string
Nama logstore SLS. Untuk informasi lebih lanjut, lihat Kelola logstore.
Tidak ada.
SLS consumer group
Ya, string
Nama kelompok konsumen SLS. Jika Anda ingin menggunakan beberapa input data untuk mengonsumsi data yang disimpan dalam logstore yang sama, Anda harus menentukan nama kelompok konsumen yang sama untuk input data tersebut. Untuk informasi lebih lanjut, lihat Gunakan kelompok konsumen untuk mengonsumsi log.
Tidak ada.
SLS cursor start time
Ya, string
Waktu mulai konsumsi data log. Parameter ini hanya berlaku saat Anda menggunakan kelompok konsumen baru. Jika Anda menggunakan kelompok konsumen yang sudah ada, data dikonsumsi dari checkpoint terakhir.
CatatanWaktu mulai adalah waktu penerimaan log.
Nilai yang valid: begin, end, dan nilai waktu dalam format ISO 8601. Contoh: 2018-12-26 0:0:0+8:00.
SLS heartbeat interval
Ya, integer
Interval pengiriman pesan heartbeat antara konsumen dan server. Satuan: detik.
Nilai default: 60.
SLS data fetch interval
Ya, integer
Interval penarikan log dari SLS. Jika log dihasilkan dengan frekuensi rendah, kami menyarankan agar Anda tidak mengatur parameter ini ke nilai kecil. Satuan: detik.
Nilai default: 1.
consume_processor
Tidak, string
Anda harus terlebih dahulu membuat processor konsumen yang berisi SPL (misalnya, consume-processor-1) dalam proyek Anda. Processor ini hanya didukung pada platform Linux x86_64. Untuk informasi lebih lanjut, lihat Kelola processor konsumen.
Tidak ada.
Topic filter
Tidak, string
Daftar topik yang dipisahkan titik koma untuk diabaikan. Log dengan topik yang cocok tidak akan dikirim ke Splunk.
TopicA;TopicB. Nilai ini menentukan bahwa log yang topiknya TopicA atau TopicB diabaikan.
Unfolded fields
Tidak, JSON
Hubungan pemetaan antara topik log dalam format JSON dan daftar field. {"topicA": ["field_nameA1", "field_nameA2", ...], "topicB": ["field_nameB1", "field_nameB2", ...], ...}
{"actiontrail_audit_event": ["event"] }. Nilai ini menentukan bahwa dalam log yang topiknya actiontrail_audit_event, string JSON dari field yang ditentukan diperluas dan disimpan dalam field event.
Event source
Tidak, string
Sumber event Splunk.
Tidak ada.
Event source type
Tidak, string
Tipe sumber untuk event Splunk.
Tidak ada.
Event retry times
Tidak, integer
Jumlah percobaan ulang untuk mengonsumsi data log.
Nilai default: 0, yang berarti percobaan ulang tanpa batas.
Event protocol
Ya, string
Protokol yang digunakan untuk mengirim event Splunk. Jika Anda menggunakan protokol privat Splunk untuk mengirim event Splunk, Anda tidak perlu mengonfigurasi parameter berikut dalam tabel.
HTTP untuk HEC
HTTPS untuk HEC
Protokol privat
HEC host
Ya, string
Host HEC. Parameter ini hanya berlaku jika Anda menggunakan HEC untuk mengirim event Splunk. Untuk informasi lebih lanjut, lihat Siapkan dan gunakan HTTP Event Collector di Splunk Web.
Tidak ada.
HEC port
Ya, integer
Port HEC. Parameter ini hanya berlaku jika Anda menggunakan HEC untuk mengirim event Splunk.
Tidak ada.
HEC token
Ya, string
Token HEC. Parameter ini hanya berlaku jika Anda menggunakan HEC untuk mengirim event Splunk. Untuk informasi lebih lanjut, lihat Token HEC.
Tidak ada.
HEC timeout
Ya, integer
Periode timeout HEC. Parameter ini hanya berlaku jika Anda menggunakan HEC untuk mengirim event Splunk. Satuan: detik.
Nilai default: 120.
Jika Splunk berjalan pada instance ECS, sambungkan peran RAM ke instance ECS tersebut. Kemudian, instance ECS dapat mengasumsikan peran RAM untuk mengakses SLS. Prosedur:
Pastikan Splunk berjalan pada instance ECS yang telah disambungkan peran RAM yang diperlukan.
Sambungkan peran RAM ke instance ECS.
Pada langkah ini, buat peran RAM, berikan izin kepada peran RAM, lalu sambungkan peran RAM ke instance ECS. Untuk informasi lebih lanjut, lihat Konfigurasikan peran RAM instans.
Untuk informasi lebih lanjut tentang kebijakan peran RAM, lihat kebijakan di Prasyarat.
Pada antarmuka web Splunk, klik Alibaba Cloud Log Service Add-on for Splunk.
Konfigurasikan akun global.
Pada halaman yang muncul, pilih . Pada halaman Configuration, klik tab Account. Pada tab ini, klik Add. Di kotak dialog Add Account, tentukan peran RAM yang telah disambungkan ke instance ECS. Dalam contoh ini, masukkan ECS_RAM_ROLE di field Username dan masukkan nama peran RAM yang dibuat di Langkah 1 di field Password.
Buat input data.
Klik inputs untuk membuka halaman inputs.
Klik Create New Input. Di kotak dialog Add sls_datainput, konfigurasikan parameter input data.
Anda harus mengatur parameter SLS AccessKey ke akun global yang dibuat di Langkah 3. Untuk informasi lebih lanjut tentang parameter lainnya, lihat Parameter input data.
Operasi terkait
Kueri data
Pastikan input data berada dalam status Enabled. Pada antarmuka web Splunk, klik Search & Reporting. Pada halaman App: Search & Reporting, kueri log audit yang dikumpulkan.

Kueri log operasional SLS
Masukkan
index="_internal" | search "SLS info"di kotak pencarian untuk mengkueri log info SLS.Masukkan
index="_internal" | search "error"di kotak pencarian untuk mengkueri log error SLS.
Kinerja dan keamanan
Kinerja
Kinerja add-on dan throughput transmisi data bervariasi berdasarkan faktor-faktor berikut:
Endpoint: Akses SLS menggunakan endpoint publik, jaringan klasik, virtual private cloud (VPC), atau endpoint akselerasi global. Dalam kebanyakan kasus, kami menyarankan Anda menggunakan endpoint jaringan klasik atau endpoint VPC. Untuk informasi lebih lanjut, lihat Endpoint.
Bandwidth: Bandwidth transmisi data antara SLS dan Splunk heavy forwarder serta antara Splunk heavy forwarder dan indexer memengaruhi kinerja.
Kemampuan pemrosesan indexer Splunk: Kemampuan indexer untuk menerima data dari Splunk heavy forwarder memengaruhi kinerja.
Jumlah shard: Jumlah shard yang lebih besar dalam logstore menunjukkan kemampuan transmisi data yang lebih tinggi. Anda harus menentukan jumlah shard berdasarkan kecepatan pembuatan log mentah. Untuk informasi lebih lanjut, lihat Kelola shard.
Jumlah input data Splunk: Jumlah input data yang lebih besar dalam kelompok konsumen yang dikonfigurasi untuk logstore menunjukkan throughput yang lebih tinggi.
CatatanKonsumsi konkuren data log bervariasi berdasarkan jumlah shard dalam logstore.
Konsumsi sumber daya: Sebagai panduan umum, setiap input data mengonsumsi sekitar 1 core CPU dan 1–2 GB memori pada heavy forwarder.
Dengan sumber daya yang cukup, satu input data dapat mencapai throughput 1–2 MB/detik. Anda harus menentukan jumlah shard berdasarkan kecepatan pembuatan log mentah.
Sebagai contoh, jika log ditulis ke logstore dengan kecepatan 10 MB per detik, Anda harus membuat minimal 10 shard dalam logstore dan mengonfigurasi 10 input data dalam add-on. Jika Anda men-deploy add-on pada satu server, pastikan server tersebut memiliki 10 core CPU idle dan 12 GB sumber daya memori yang tersedia.
Ketersediaan tinggi
Kelompok konsumen menyimpan checkpoint di sisi server. Saat konsumen berhenti mengonsumsi data, konsumen lain melanjutkan mengonsumsi data dari checkpoint terakhir. Anda dapat membuat input data Splunk pada beberapa server. Jika server berhenti berjalan atau rusak, input data Splunk pada server lain melanjutkan mengonsumsi data dari checkpoint terakhir. Secara teori, jumlah input data Splunk yang diluncurkan pada beberapa server dapat lebih besar daripada jumlah shard, yang memastikan data dikonsumsi dari checkpoint terakhir jika terjadi pengecualian.
Transmisi data berbasis HTTPS
SLS
Untuk menggunakan HTTPS guna mengenkripsi data yang ditransmisikan antara program Anda dan SLS, pastikan endpoint Anda diawali dengan https://. Contoh: https://cn-beijing.log.aliyuncs.com.
Sertifikat server *.aliyuncs.com dikeluarkan oleh GlobalSign. Secara default, sebagian besar server Linux dan Windows telah dikonfigurasi untuk mempercayai sertifikat ini. Jika server tidak mempercayai sertifikat ini, lihat Instal CA root tepercaya atau sertifikat tanda tangan sendiri.
Splunk
Untuk menggunakan HEC berbasis HTTPS, aktifkan fitur SSL saat Anda mengaktifkan HEC di kotak dialog Global Settings. Untuk informasi lebih lanjut, lihat Konfigurasikan HTTP Event Collector pada Splunk Enterprise.
Proteksi penyimpanan pasangan AccessKey
Pasangan AccessKey yang Anda gunakan untuk mengakses SLS dan token HEC dienkripsi dan disimpan di Splunk. Hal ini mencegah kebocoran data.
FAQ
Apa yang harus saya lakukan jika terjadi kesalahan konfigurasi?
Kesalahan konfigurasi dapat terjadi pada input data saat Anda membuat atau memodifikasi input data. Dalam kasus ini, periksa konfigurasi dasar input data. Untuk informasi lebih lanjut tentang parameter, lihat Parameter input data.
Kesalahan konfigurasi dapat terjadi di SLS. Misalnya, sistem gagal membuat kelompok konsumen. Dalam kasus ini, periksa konfigurasi SLS.
Perintah:
index="_internal" | search "error"Log error:
aliyun.log.consumer.exceptions.ClientWorkerException: error occour when create consumer group, errorCode: LogStoreNotExist, errorMessage: logstore xxxx does not existError ConsumerGroupQuotaExceed
Anda dapat mengonfigurasi hingga 20 kelompok konsumen untuk satu logstore. Kami menyarankan Anda melihat kelompok konsumen di konsol SLS dan menghapus kelompok konsumen yang tidak lagi diperlukan. Jika lebih dari 20 kelompok konsumen dikonfigurasi untuk satu logstore, error ConsumerGroupQuotaExceed akan dilaporkan.
Apa yang harus saya lakukan jika terjadi kesalahan izin?
Anda tidak memiliki otorisasi untuk mengakses SLS. Periksa izin Anda.
Perintah:
index="_internal" | search "error"Log error:
aliyun.log.consumer.exceptions.ClientWorkerException: error occour when create consumer group, errorCode: SignatureNotMatch, errorMessage: signature J70VwxYH0+W/AciA4BdkuWxK6W8= not match
Otentikasi RAM untuk instance ECS Anda gagal.
Perintah:
index="_internal" | search "error"Log error:
ECS RAM Role detected in user config, but failed to get ECS RAM credentials. Please check if ECS instance and RAM role 'ECS-Role' are configured appropriately.ECS-Role adalah peran RAM yang Anda buat. Variabel ECS-Role ditampilkan sebagai nilai aktual.
Pemecahan masalah:
Periksa apakah parameter SLS AccessKey pada input data Anda dikonfigurasi sebagai akun global yang memiliki peran RAM.
Periksa apakah peran RAM dikonfigurasi dengan benar untuk akun global. Username harus diatur ke ECS_RAM_ROLE, dan password harus diatur ke nama peran RAM.
Periksa apakah peran RAM telah disambungkan ke instance ECS.
Periksa apakah tipe entitas tepercaya peran RAM diatur ke Alibaba Cloud Service. Periksa apakah layanan tepercaya yang dipilih adalah ECS.
Periksa apakah instance ECS yang disambungkan peran RAM adalah instance ECS tempat Splunk berjalan.
Anda tidak memiliki otorisasi untuk mengakses HEC.
Perintah:
index="_internal" | search "error"Log error:
ERROR HttpInputDataHandler - Failed processing http input, token name=n/a, channel=n/a, source_IP=127.0.0.1, reply=4, events_processed=0, http_input_body_size=369 WARNING pid=48412 tid=ThreadPoolExecutor-0_1 file=base_modinput.py:log_warning:302 | SLS info: Failed to write [{"event": "{\"__topic__\": \"topic_test0\", \"__source__\": \"127.0.0.1\", \"__tag__:__client_ip__\": \"10.10.10.10\", \"__tag__:__receive_time__\": \"1584945639\", \"content\": \"goroutine id [0, 1584945637]\", \"content2\": \"num[9], time[2020-03-23 14:40:37|1584945637]\"}", "index": "main", "source": "sls log", "sourcetype": "http of hec", "time": "1584945637"}] remote Splunk server (http://127.0.0.1:8088/services/collector) using hec. Exception: 403 Client Error: Forbidden for url: http://127.0.0.1:8088/services/collector, times: 3Penyebab yang mungkin:
HEC tidak dikonfigurasi atau tidak dijalankan.
Parameter terkait HEC pada input data tidak valid. Misalnya, jika Anda menggunakan HEC berbasis HTTPS, Anda harus mengaktifkan fitur SSL.
Fitur acknowledgment indexer dinonaktifkan untuk token HEC Anda.
Bagaimana cara mengatasi latensi konsumsi?
Periksa status kelompok konsumen Anda di konsol SLS.
Kami menyarankan Anda menambah jumlah shard atau membuat lebih banyak input data dalam kelompok konsumen yang sama. Untuk informasi lebih lanjut, lihat Kinerja dan keamanan.
Apa yang harus saya lakukan jika terjadi fluktuasi jaringan?
Perintah:
index="_internal" | search "SLS info: Failed to write"Log error:
WARNING pid=58837 tid=ThreadPoolExecutor-0_0 file=base_modinput.py:log_warning:302 | SLS info: Failed to write [{"event": "{\"__topic__\": \"topic_test0\", \"__source__\": \"127.0.0.1\", \"__tag__:__client_ip__\": \"10.10.10.10\", \"__tag__:__receive_time__\": \"1584951417\", \"content2\": \"num[999], time[2020-03-23 16:16:57|1584951417]\", \"content\": \"goroutine id [0, 1584951315]\"}", "index": "main", "source": "sls log", "sourcetype": "http of hec", "time": "1584951417"}] remote Splunk server (http://127.0.0.1:8088/services/collector) using hec. Exception: ('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer')), times: 3
Jika terjadi fluktuasi jaringan, event Splunk akan dikirim ulang secara otomatis. Jika masalah berlanjut, hubungi administrator jaringan Anda.
Bagaimana cara mengubah waktu mulai konsumsi?
CatatanParameter SLS cursor start time hanya berlaku saat Anda menggunakan kelompok konsumen baru. Jika Anda menggunakan kelompok konsumen yang sudah ada, data dikonsumsi dari checkpoint terakhir.
Pada halaman inputs antarmuka web Splunk, nonaktifkan input data terkait.
Masuk ke Konsol Simple Log Service. Temukan logstore tempat data dikonsumsi dan hapus kelompok konsumen terkait di bagian Data Consumption.
Pada halaman inputs antarmuka web Splunk, temukan input data, lalu pilih . Di kotak dialog yang muncul, modifikasi parameter SLS cursor start time. Kemudian, aktifkan kembali input data.