Konfigurasi Logtail adalah seperangkat kebijakan yang digunakan Logtail untuk mengumpulkan log. Anda dapat menyesuaikan kebijakan pengumpulan tersebut dengan mengatur parameter seperti sumber data dan mode pengumpulan saat membuat konfigurasi Logtail. Topik ini menjelaskan parameter terkait konfigurasi Logtail dalam mode API.
Metode konfigurasi CRD-AliyunLogConfig lama tidak lagi dipelihara. Gunakan AliyunPipelineConfig yang baru sebagai gantinya. Untuk informasi selengkapnya, lihat CreateLogtailPipelineConfig - Membuat konfigurasi pipeline Logtail.Parameter dasar dari konfigurasi Logtail
Parameter | Tipe | Diperlukan | Contoh | Deskripsi |
configName | string | Ya | config-sample | Nama konfigurasi Logtail. Nama harus unik dalam proyek. Anda tidak dapat mengubah nama setelah konfigurasi Logtail dibuat. Nama tersebut harus memenuhi persyaratan berikut:
|
inputType | string | Ya | file | Jenis sumber data. Nilai yang valid:
|
inputDetail | Objek JSON | Ya | Tidak ada | Konfigurasi detail sumber data. Untuk informasi selengkapnya, lihat parameter inputDetail. |
outputType | string | Ya | LogService | Tujuan output log yang dikumpulkan. Hanya LogService yang didukung. Artinya, data yang dikumpulkan hanya dapat diunggah ke Simple Log Service. |
outputDetail | Objek JSON | Ya | Tidak ada | Konfigurasi detail untuk output log. Untuk informasi selengkapnya, lihat parameter outputDetail. |
logSample | string | Tidak | Tidak ada | Contoh log. Catatan Contoh log harus kurang dari 1.500 byte. |
Parameter inputDetail
Parameter dasar
Parameter | Tipe | Diperlukan | Contoh | Deskripsi |
filterKey | array | Tidak | ["ip"] | Bidang yang digunakan untuk memfilter log. Log hanya dikumpulkan jika nilai bidang tersebut cocok dengan ekspresi reguler yang ditentukan dalam parameter filterRegex. Catatan Parameter ini hanya untuk pengumpulan log teks. |
filterRegex | array | Tidak | ["^10.*"] | Ekspresi reguler yang sesuai dengan parameter filterKey. Jumlah elemen dalam filterRegex harus sama dengan jumlah elemen dalam filterKey. Catatan Parameter ini hanya untuk pengumpulan log teks. |
shardHashKey | array | Tidak | ["__source__"] | Mode penulisan data. Secara default, data ditulis dalam mode load balancing.
Jika Anda mengonfigurasi parameter ini, data ditulis dalam mode shard. Bidang __source__ didukung. |
enableRawLog | boolean | Tidak | false | Menentukan apakah akan mengunggah log mentah. Nilai valid:
|
sensitive_keys | array | Tidak | Tidak ada | Fitur penyamaran data. Untuk informasi selengkapnya, lihat parameter sensitive_keys. |
mergeType | string | Tidak | topic | Metode agregasi. Nilai yang valid:
|
delayAlarmBytes | int | Tidak | 209715200 | Ambang batas peringatan untuk keterlambatan pengumpulan. Nilai default: 209715200, yaitu 200 MB. |
adjustTimezone | boolean | Tidak | false | Menentukan apakah akan menyesuaikan zona waktu log. Parameter ini hanya digunakan ketika penguraian waktu dikonfigurasi, misalnya, ketika parameter timeFormat diatur. |
logTimezone | string | Tidak | GMT+08:00 | Offset zona waktu. Formatnya adalah GMT+JJ:MM untuk zona waktu timur dan GMT-JJ:MM untuk zona waktu barat. Misalnya, jika waktu log berada di UTC+8, atur nilai ini menjadi GMT+08:00. |
advanced | Objek JSON | Tidak | Tidak ada | Fitur lanjutan. Untuk informasi selengkapnya, lihat parameter advanced. |
Parameter sensitive_keys
Parameter
Parameter
Tipe
Diperlukan
Contoh
Deskripsi
key
string
Ya
content
Nama bidang log.
type
string
Ya
const
Metode penyamaran data. Nilai yang valid:
const: Mengganti konten sensitif dengan nilai bidang const.
md5: Mengganti konten sensitif dengan hash MD5-nya.
regex_begin
string
Ya
'password':'
Ekspresi reguler untuk awalan konten sensitif. Digunakan untuk menemukan konten sensitif. Gunakan sintaks RE2. Untuk informasi selengkapnya, lihat Sintaks RE2.
regex_content
string
Ya
[^']*
Ekspresi reguler untuk konten sensitif. Gunakan sintaks RE2. Untuk informasi selengkapnya, lihat Sintaks RE2.
all
boolean
Ya
true
Menentukan apakah akan mengganti semua konten sensitif dalam bidang tersebut. Nilai yang valid:
true (disarankan): Mengganti semua konten sensitif.
false: Hanya mengganti bagian pertama konten yang cocok dengan ekspresi reguler.
const
string
Tidak
"********"
Parameter ini wajib jika Anda mengatur type ke const.
Contoh Konfigurasi
Misalnya, jika nilai bidang content dalam log adalah
[{'account':'1812213231432969','password':'04a23f38'}, {'account':'1812213685634','password':'123a'}], Anda dapat mengganti nilai bidangpassworddengan ******** dengan mengatur sensitive_keys sebagai berikut.sensitive_keys = [{"all": true, "const": "********", "regex_content": "[^']*", "regex_begin": "'password':'", "type": "const", "key": "content"}]Contoh Log
[{'account':'1812213231432969','password':'********'}, {'account':'1812213685634','password':'********'}]
Parameter advanced
Parameter | Tipe | Diperlukan | Contoh | Deskripsi |
enable_root_path_collection | boolean | Tidak | false | Menentukan apakah mengizinkan pengumpulan data dari direktori root Windows, seperti D:\log*. Nilai valid:
Penting
|
exactly_once_concurrency | int | Tidak | 1 | Menentukan apakah akan mengaktifkan fitur penulisan ExactlyOnce. Fitur ini menentukan jumlah pengiriman konkuren yang diizinkan untuk satu file. Nilainya harus berada dalam rentang 0 hingga 512. Untuk informasi selengkapnya, lihat Lampiran: Fitur penulisan ExactlyOnce. Nilai yang valid:
Penting
|
enable_log_position_meta | boolean | Tidak | true | Menentukan apakah akan menambahkan metadata dari file log asli ke log. Ini menambahkan bidang __tag__:__inode__ dan __file_offset__. Nilai yang valid:
Catatan Fitur ini hanya didukung pada Logtail 1.0.21 dan versi lebih baru. |
specified_year | uint | Tidak | 0 | Jika tahun dalam log mentah tidak ada, Anda dapat mengatur parameter ini untuk melengkapi waktu log dengan tahun saat ini atau tahun yang ditentukan. Nilai yang valid:
Catatan Fitur ini hanya didukung pada Logtail 1.0.21 dan versi lebih baru. |
force_multiconfig | boolean | Tidak | false | Menentukan apakah akan mengizinkan konfigurasi Logtail ini untuk mengumpulkan file yang sudah dicocokkan oleh konfigurasi Logtail lain. Nilai default adalah false, artinya tidak diizinkan. Ini berlaku untuk skenario multi-tulis, misalnya, ketika satu file dikumpulkan oleh dua konfigurasi pengumpulan ke Logstore yang berbeda. |
raw_log_tag | string | Tidak | __raw__ | Bidang yang digunakan untuk menyimpan log mentah saat mengunggah log mentah. Nilai default adalah __raw__. |
blacklist | object | Tidak | Tidak ada | Konfigurasi daftar hitam pengumpulan. Untuk informasi selengkapnya, lihat parameter blacklist. |
tail_size_kb | int | Tidak | 1024 | Ukuran pengumpulan awal untuk file baru. Ukuran ini menentukan posisi awal pengumpulan. Ukuran pengumpulan awal default adalah 1024 KB.
Anda dapat memodifikasi ukuran pengumpulan awal di sini. Nilainya harus berada dalam rentang 0 hingga 10485760. Satuannya adalah KB. |
batch_send_interval | int | Tidak | 3 | Periode pengiriman agregasi. Satuannya adalah detik. Nilai default adalah 3. |
max_rotate_queue_size | int | Tidak | 20 | Panjang antrian rotasi file tunggal. Nilai default adalah 20. |
enable_precise_timestamp | boolean | Tidak | false | Menentukan apakah akan mengekstrak waktu presisi tinggi. Jika parameter ini tidak ditambahkan, nilai default adalah false, artinya waktu presisi tinggi tidak diekstrak. Secara default, setelah Anda mengatur ini ke true, Logtail mengurai nilai bidang waktu yang ditentukan menjadi timestamp tingkat milidetik dan menyimpannya di bidang yang sesuai dengan parameter precise_timestamp_key. Catatan
|
precise_timestamp_key | string | Tidak | "precise_timestamp" | Bidang yang menyimpan timestamp presisi tinggi. Jika parameter ini tidak ditambahkan, bidang default adalah precise_timestamp. |
precise_timestamp_unit | string | Tidak | "ms" | Unit timestamp presisi tinggi. Jika parameter ini tidak ditambahkan, default-nya adalah ms. Nilai yang valid termasuk ms (milidetik), us (mikrodetik), dan ns (nanodetik). |
Tabel berikut menjelaskan parameter-parameter dari blacklist.
Parameter | Tipe | Diperlukan | Contoh | Deskripsi |
dir_blacklist | array | Tidak | ["/home/admin/dir1", "/home/admin/dir2*"] | Daftar hitam direktori (jalur absolut). Anda dapat menggunakan tanda bintang (*) sebagai karakter wildcard untuk mencocokkan beberapa direktori. Misalnya, jika Anda mengonfigurasi jalur sebagai /home/admin/dir1, semua konten dalam direktori /home/admin/dir1 diabaikan selama pengumpulan. |
filename_blacklist | array | Tidak | ["app*.log", "password"] | Daftar hitam nama file. Nama file yang ditentukan tidak dikumpulkan dari direktori mana pun. Anda dapat menggunakan tanda bintang (*) sebagai karakter wildcard untuk mencocokkan beberapa nama file. |
filepath_blacklist | array | Tidak | ["/home/admin/private*.log"] | Daftar hitam jalur file (jalur absolut). Anda dapat menggunakan tanda bintang (*) sebagai karakter wildcard untuk mencocokkan beberapa file. Jika Anda mengonfigurasi jalur sebagai /home/admin/private*.log, semua file dalam direktori /home/admin/ yang diawali dengan "private" dan diakhiri dengan ".log" diabaikan selama pengumpulan. |
Konfigurasi khusus Logtail untuk log teks
Parameter Dasar
Parameter | Tipe | Diperlukan | Contoh | Deskripsi |
logType | string | Ya | common_reg_log | Mode pengumpulan log. Mode berikut didukung:
|
logPath | string | Ya | /var/log/http/ | Jalur file log. |
filePattern | string | Ya | access*.log | Nama file log. |
topicFormat | string | Ya | none | Metode pembuatan topik. Nilai yang valid:
Untuk informasi lebih lanjut, lihat Topik log. |
timeFormat | string | Tidak | %Y/%m/%d %H:%M:%S | Format waktu log. Untuk informasi selengkapnya, lihat Format waktu. |
preserve | boolean | Tidak | true | Jika file log tidak diperbarui dalam waktu tertentu, file tersebut dianggap telah timeout. Nilai yang valid:
|
preserveDepth | integer | Tidak | 1 | Saat Anda mengatur preserve ke false, Anda harus menentukan kedalaman direktori maksimum untuk timeout. Nilainya harus berada dalam rentang 1 hingga 3. |
fileEncoding | string | Tidak | utf8 | Format encoding file log. Nilai yang valid adalah utf8 dan gbk. |
discardUnmatch | boolean | Tidak | true | Menentukan apakah akan membuang log yang gagal dicocokkan. Nilai yang valid:
|
maxDepth | int | Tidak | 100 | Kedalaman maksimum direktori log yang dipantau. Nilainya harus berada dalam rentang 0 hingga 1.000. Nilai 0 berarti hanya direktori saat ini yang dipantau. |
delaySkipBytes | int | Tidak | 0 | Ambang batas untuk membuang data yang tertunda. Nilai yang valid:
|
dockerFile | boolean | Tidak | false | Menentukan apakah file objek untuk pengumpulan adalah file dalam kontainer. Nilai default adalah false. |
dockerIncludeLabel | Objek JSON | Tidak | Tidak ada | Daftar putih label kontainer, digunakan untuk menentukan kontainer yang akan dikumpulkan. Secara default, kosong, artinya log atau output standar dari semua kontainer dikumpulkan. Jika Anda ingin mengatur daftar putih label kontainer, LabelKey wajib dan LabelValue opsional.
Catatan
|
dockerExcludeLabel | Objek JSON | Tidak | Tidak ada | Daftar hitam label kontainer, digunakan untuk mengecualikan kontainer dari pengumpulan. Secara default, kosong, artinya tidak ada kontainer yang dikecualikan. Jika Anda ingin mengatur daftar hitam label kontainer, LabelKey wajib dan LabelValue opsional.
Catatan
|
dockerIncludeEnv | Objek JSON | Tidak | Tidak ada | Daftar putih variabel lingkungan, digunakan untuk menentukan kontainer yang akan dikumpulkan. Secara default, kosong, artinya log atau output standar dari semua kontainer dikumpulkan. Jika Anda ingin mengatur daftar putih variabel lingkungan, EnvKey wajib dan EnvValue opsional.
Catatan Beberapa entri daftar putih memiliki hubungan OR. Kontainer dicocokkan jika variabel lingkungannya memenuhi salah satu entri daftar putih. |
dockerExcludeEnv | Objek JSON | Tidak | Tidak ada | Daftar hitam variabel lingkungan, digunakan untuk mengecualikan kontainer dari pengumpulan. Secara default, kosong, artinya tidak ada kontainer yang dikecualikan. Jika Anda ingin mengatur daftar hitam variabel lingkungan, EnvKey wajib dan EnvValue opsional.
Catatan Beberapa entri daftar hitam memiliki hubungan OR. Kontainer dikecualikan jika variabel lingkungannya memenuhi salah satu pasangan kunci-nilai. |
Konfigurasi khusus untuk mode regex penuh dan mode sederhana
Parameter
Parameter
Tipe
Diperlukan
Contoh
Deskripsi
key
array
Ya
["content"]
Daftar bidang yang digunakan untuk mengonfigurasi bidang untuk konten log mentah.
logBeginRegex
string
Tidak
.*
Ekspresi reguler untuk awal entri log.
regex
string
Tidak
(.*)
Ekspresi reguler yang digunakan untuk mengekstrak bidang.
Contoh Konfigurasi
{ "configName": "logConfigName", "outputType": "LogService", "inputType": "file", "inputDetail": { "logPath": "/logPath", "filePattern": "*", "logType": "common_reg_log", "topicFormat": "default", "discardUnmatch": false, "enableRawLog": true, "fileEncoding": "utf8", "maxDepth": 10, "key": [ "content" ], "logBeginRegex": ".*", "regex": "(.*)" }, "outputDetail": { "projectName": "test-project", "logstoreName": "test-logstore" } }
Konfigurasi khusus untuk mode JSON
Parameter | Tipe | Diperlukan | Contoh | Deskripsi |
timeKey | string | Tidak | time | Nama kunci bidang waktu. |
Konfigurasi khusus untuk mode pembatas
Parameter
Parameter
Tipe
Diperlukan
Contoh
Deskripsi
separator
string
Tidak
,
Pilih pemisah yang benar berdasarkan format log Anda. Untuk informasi selengkapnya, lihat Kumpulkan log dalam mode pembatas.
quote
string
Ya
\
Jika bidang log berisi pemisah, Anda harus menentukan tanda kutip untuk mengapitnya. Konten yang diapit tanda kutip diurai oleh Simple Log Service sebagai satu bidang. Pilih tanda kutip yang benar berdasarkan format log Anda. Untuk informasi selengkapnya, lihat Kumpulkan log dalam mode pembatas.
key
array
Ya
[ "ip", "time"]
Daftar bidang yang digunakan untuk mengonfigurasi bidang untuk konten log mentah.
timeKey
string
Ya
time
Menentukan bidang dari daftar key sebagai bidang waktu.
autoExtend
boolean
Tidak
true
Menentukan apakah akan mengunggah bidang yang diurai jika jumlah bidang yang dipisahkan dari log kurang dari jumlah kunci yang dikonfigurasi.
Misalnya, log adalah 11|22|33|44|55, pemisahnya adalah tanda pipa vertikal (|), dan konten log diurai menjadi 11, 22, 33, 44, dan 55. Kuncinya diatur menjadi A, B, C, D, dan E masing-masing.
true: Saat mengumpulkan log 11|22|33|55, 55 diunggah ke Simple Log Service sebagai nilai untuk kunci D.
false: Saat mengumpulkan log 11|22|33|55, entri log ini dibuang karena jumlah bidang tidak sesuai dengan jumlah kunci.
Contoh Konfigurasi
{ "configName": "logConfigName", "logSample": "testlog", "inputType": "file", "outputType": "LogService", "inputDetail": { "logPath": "/logPath", "filePattern": "*", "logType": "delimiter_log", "topicFormat": "default", "discardUnmatch": true, "enableRawLog": true, "fileEncoding": "utf8", "maxDepth": 999, "separator": ",", "quote": "\"", "key": [ "ip", "time" ], "autoExtend": true }, "outputDetail": { "projectName": "test-project", "logstoreName": "test-logstore" } }
Konfigurasi khusus plug-in Logtail
Parameter
Tabel berikut menjelaskan konfigurasi khusus untuk pengumpulan log menggunakan plug-in.
Parameter
Tipe
Diperlukan
Contoh
Deskripsi
plugin
Objek JSON
Ya
Tidak ada
Konfigurasikan parameter ini saat Anda menggunakan plug-in Logtail untuk mengumpulkan log. Untuk informasi selengkapnya, lihat Gunakan plug-in Logtail untuk mengumpulkan data.
Contoh Konfigurasi
{ "configName": "logConfigName", "outputType": "LogService", "inputType": "plugin", "inputDetail": { "plugin": { "inputs": [ { "detail": { "ExcludeEnv": null, "ExcludeLabel": null, "IncludeEnv": null, "IncludeLabel": null, "Stderr": true, "Stdout": true }, "type": "service_docker_stdout" } ] } }, "outputDetail": { "projectName": "test-project", "logstoreName": "test-logstore" } }
Parameter outputDetail
Parameter ini digunakan untuk mengonfigurasi proyek tujuan dan Logstore tempat log akan dikirim.
Parameter | Tipe | Diperlukan | Contoh | Deskripsi |
projectName | string | Ya | my-project | Nama proyek. Harus sama dengan nama proyek dalam permintaan. |
logstoreName | string | Ya | my-logstore | Nama Logstore. |
Lampiran: Fitur penulisan ExactlyOnce
Saat Anda mengaktifkan fitur penulisan ExactlyOnce, Logtail mencatat checkpoint detail halus tingkat file ke disk lokal. Jika terjadi pengecualian seperti kesalahan proses atau restart server, Logtail menggunakan checkpoint ini untuk menentukan cakupan pemrosesan ulang setiap file saat pengumpulan dilanjutkan. Logtail juga memanfaatkan nomor urut inkremental dari Simple Log Service untuk mencegah pengiriman data duplikat. Namun, fitur ini mengonsumsi sejumlah sumber daya tulis disk. Batasan berikut berlaku:
Checkpoint disimpan di disk lokal. Jika checkpoint tidak dapat direkam karena disk penuh atau rusak, pemulihan mungkin gagal.
Checkpoint hanya mencatat metadata file, bukan data file itu sendiri. Jika file tersebut dihapus atau dimodifikasi, pemulihan mungkin tidak dapat dilakukan.
Fitur penulisan ExactlyOnce bergantung pada nomor urut tulis yang dicatat oleh Simple Log Service. Setiap shard mendukung maksimal 10.000 catatan. Jika batas ini terlampaui, catatan lama akan ditimpa. Untuk memastikan keandalan, hasil dari `Jumlah file aktif × Jumlah instans Logtail` untuk Logstore yang sama tidak boleh melebihi 9.500. Kami menyarankan agar Anda menyisakan buffer.
File aktif: Jumlah file yang sedang dibaca dan dikirim. File yang diputar dengan nama logis yang sama dikirim secara serial dan dihitung sebagai satu file aktif.
Instans Logtail: Jumlah proses Logtail. Secara default, setiap server memiliki satu instans. Oleh karena itu, jumlah ini biasanya sama dengan jumlah server.
Karena alasan kinerja, Logtail tidak memanggil `sync` untuk menulis checkpoint ke disk secara default. Jika server dimulai ulang sebelum data yang dibuffer ditulis ke disk, checkpoint mungkin hilang. Untuk mengaktifkan penulisan sinkron, tambahkan "enable_checkpoint_sync_write": true, ke file konfigurasi startup Logtail (/usr/local/ilogtail/ilogtail_config.json). Untuk informasi selengkapnya, lihat Atur parameter startup Logtail.