Mengonfigurasi agen Logging
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Halaman ini memberikan detail tentang konfigurasi default dan
kustom agen Cloud Logging.
Sebagian besar pengguna tidak perlu membaca halaman ini. Baca halaman ini jika:
Anda tertarik untuk mempelajari detail teknis mendalam tentang konfigurasi agen Cloud Logging.
Anda ingin mengubah konfigurasi agen Cloud Logging.
Konfigurasi default
Agen Logging google-fluentd adalah versi yang diubah dari pengumpul data log
fluentd.
Agen Logging dilengkapi dengan konfigurasi default; dalam sebagian besar kasus umum, tidak diperlukan konfigurasi tambahan.
Dalam konfigurasi defaultnya, agen Logging mengalirkan log, sebagaimana disertakan dalam daftar log default, ke Cloud Logging. Anda dapat mengonfigurasi agen untuk melakukan streaming log tambahan;
untuk mengetahui detailnya, lihat bagian Menyesuaikan konfigurasi agen Logging
di halaman ini.
Agen Logging menggunakan plugin input fluentd untuk
mengambil dan menarik log peristiwa dari sumber eksternal, seperti file di disk, atau
untuk mengurai data log yang masuk. Plugin input dipaketkan dengan agen atau dapat diinstal secara terpisah sebagai gem Ruby; tinjau daftar plugin yang dipaketkan.
Agen membaca catatan log yang disimpan dalam file log di instance VM menggunakan
plugin in_tail bawaan fluentd. Setiap catatan log dikonversi menjadi struktur
entri log untuk
Cloud Logging. Sebagian besar konten setiap catatan log dicatat dalam
payload entri log, tetapi entri log juga berisi elemen
standar seperti stempel waktu dan tingkat keparahan. Agen Logging
mewajibkan setiap kumpulan data log diberi tag dengan tag format string; semua
kueri dan plugin output cocok dengan sekumpulan tag tertentu. Nama log biasanya mengikuti format projects/[PROJECT_ID]/logs/[TAG]. Misalnya, nama log ini menyertakan
tag structured-log:
Plugin output mengubah setiap pesan terstruktur yang diinternalisasi menjadi entri log di Cloud Logging. Payload menjadi payload teks atau JSON.
Bagian berikut di halaman ini membahas konfigurasi default secara mendetail.
Definisi konfigurasi default
Bagian berikut menjelaskan definisi konfigurasi default untuk
syslog, plugin input penerusan, konfigurasi input untuk log aplikasi pihak ketiga, seperti yang ada dalam
daftar log default, dan plugin output Google Cloud
fluentd.
Lokasi file konfigurasi root
Linux: /etc/google-fluentd/google-fluentd.conf
File konfigurasi root ini juga mengimpor semua file konfigurasi dari folder
/etc/google-fluentd/config.d.
Jalur file posisi untuk input log ini. fluentd mencatat posisi terakhir yang dibaca ke dalam file ini. Tinjau dokumentasi fluentd yang mendetail.
read_from_head
bool
true
Apakah akan mulai membaca log dari bagian atas file, bukan dari bagian bawah. Tinjau dokumentasi fluentd yang mendetail.
tag
string
syslog
Tag log untuk input log ini.
Konfigurasi plugin input in_forward
Lokasi file konfigurasi: /etc/google-fluentd/config.d/forward.conf
Deskripsi: File ini mencakup konfigurasi untuk
plugin input in_forwardfluentd. Plugin input in_forward memungkinkan Anda
meneruskan log menggunakan soket TCP.
Alamat bind yang akan dipantau. Secara default, hanya koneksi dari localhost yang diterima. Untuk membukanya, konfigurasi ini harus diubah menjadi 0.0.0.0.
Konfigurasi input log aplikasi pihak ketiga
Lokasi file konfigurasi:
/etc/google-fluentd/config.d/[APPLICATION_NAME].conf
Deskripsi: Direktori ini mencakup file konfigurasi untuk menentukan file log aplikasi pihak ketiga sebagai input log. Setiap file, kecuali
syslog.conf dan forward.conf, mewakili satu aplikasi
(misalnya, apache.conf untuk aplikasi Apache).
Jalur file log. Beberapa jalur dapat ditentukan, dipisahkan dengan ','. Format strftime dan karakter pengganti * dapat disertakan untuk menambahkan atau menghapus file yang dipantau secara dinamis. Tinjau dokumentasi fluentd yang mendetail.
pos_file
string
Bervariasi per aplikasi
Jalur file posisi untuk input log ini. fluentd mencatat posisi terakhir yang dibaca ke dalam file ini. Tinjau dokumentasi fluentd yang mendetail.
read_from_head
bool
true
Apakah akan mulai membaca log dari bagian atas file, bukan dari bagian bawah. Tinjau dokumentasi fluentd yang mendetail.
tag
string
Bervariasi; nama aplikasi.
Tag log untuk input log ini.
1 Jika Anda menggunakan stanza , tentukan format
log menggunakan @type.
Saat data log masuk, data yang tidak dapat ditulis ke komponen hilir dengan cukup cepat akan dimasukkan ke dalam antrean potongan. Konfigurasi ini menetapkan batas ukuran setiap potongan. Secara default, batas potongan ditetapkan secara konservatif untuk menghindari terlampauinya ukuran potongan yang direkomendasikan, yaitu 5 MB per permintaan tulis di Logging API. Entri log dalam permintaan API bisa 5-8 kali lebih besar daripada ukuran log asli dengan semua metadata tambahan yang dilampirkan. Chunk buffer akan di-flush jika salah satu dari dua kondisi terpenuhi: 1. flush_interval tercapai. 2. Ukuran buffer mencapai buffer_chunk_limit.
flush_interval
string
5s
Saat data log masuk, data yang tidak dapat ditulis ke komponen hilir dengan cukup cepat akan dimasukkan ke dalam antrean potongan. Konfigurasi ini menetapkan berapa lama sebelum potongan buffer dibersihkan. Chunk buffer akan di-flush jika salah satu dari dua kondisi terpenuhi: 1. flush_interval tercapai. 2. Ukuran buffer mencapai buffer_chunk_limit.
disable_retry_limit
bool
false
Menerapkan batas pada jumlah percobaan ulang flush chunk buffer yang gagal. Tinjau spesifikasi mendetail di retry_limit, retry_wait, dan max_retry_wait.
retry_limit
int
3
Jika chunk buffer gagal dikosongkan, fluentd akan mencoba lagi nanti secara default. Konfigurasi ini menetapkan jumlah percobaan ulang yang akan dilakukan sebelum menjatuhkan satu bagian buffer yang bermasalah.
retry_wait
int
10s
Jika chunk buffer gagal dikosongkan, fluentd akan mencoba lagi nanti secara default. Konfigurasi ini menetapkan interval tunggu dalam detik sebelum percobaan ulang pertama. Interval tunggu berlipat ganda pada setiap percobaan ulang berikutnya (20 dtk, 40 dtk, ...) hingga retry_limit atau max_retry_wait tercapai.
max_retry_wait
int
300
Jika chunk buffer gagal dikosongkan, fluentd akan mencoba lagi nanti secara default. Interval tunggu berlipat ganda pada setiap percobaan ulang berikutnya (20 detik, 40 detik, ...). Konfigurasi ini menetapkan interval tunggu maksimum dalam detik. Jika interval tunggu mencapai batas ini, penggandaan akan berhenti.
num_threads
int
8
Jumlah flush log serentak yang dapat diproses oleh plugin output.
use_grpc
bool
true
Apakah akan menggunakan gRPC, bukan REST/JSON, untuk berkomunikasi dengan Logging API. Dengan gRPC diaktifkan, penggunaan CPU biasanya lebih rendah.
grpc_compression_algorithm
enum
none
Jika menggunakan gRPC, tetapkan skema kompresi yang akan digunakan. Dapat berupa none atau gzip.
partial_success
bool
true
Apakah akan mendukung keberhasilan sebagian untuk penyerapan log. Jika true, entri log yang tidak valid dalam set lengkap akan dihapus, dan entri log yang valid akan berhasil diserap ke dalam Logging API. Jika false, seluruh set akan dihapus jika berisi entri log yang tidak valid.
enable_monitoring
bool
true
Jika disetel ke true, agen Logging akan mengekspor telemetri internal. Lihat Output telemetri plugin untuk mengetahui detailnya.
monitoring_type
string
opencensus
Jenis pemantauan. Opsi yang didukung adalah opencensus dan prometheus. Lihat Output telemetri plugin untuk mengetahui detailnya.
autoformat_stackdriver_trace
bool
true
Jika disetel ke true, rekaman aktivitas akan diformat ulang jika nilai kolom payload terstruktur logging.googleapis.com/trace cocok dengan format traceIdResourceTrace. Detail pemformatan otomatis dapat ditemukan di Kolom khusus dalam payload terstruktur di halaman ini.
Konfigurasi pemantauan
Bagian ini menjelaskan konfigurasi Cloud Monitoring.
Telemetri plugin output
Opsi enable_monitoring mengontrol apakah plugin output Google Cloud fluentd
mengumpulkan telemetri internalnya. Jika disetel ke true, agen Logging akan melacak jumlah entri log yang diminta untuk dikirim ke Cloud Logging dan jumlah entri log yang berhasil di-ingest oleh Cloud Logging. Jika ditetapkan ke false, tidak ada metrik yang dikumpulkan oleh
plugin output.
Opsi monitoring_type mengontrol cara telemetri ini diekspos oleh
agen. Lihat daftar metrik berikut.
Jika disetel ke prometheus, agen Logging akan menampilkan metrik dalam format Prometheus di endpoint Prometheus (localhost:24231/metrics secara default; lihat konfigurasi plugin prometheus dan prometheus_monitor untuk mengetahui detail tentang cara menyesuaikannya). Di VM Compute Engine, agar metrik tersebut dapat ditulis ke Monitoring API, agen Monitoring harus diinstal dan berjalan juga.
Jika disetel ke opencensus (default sejak
v1.6.25),
agen Logging akan langsung menulis metrik kondisi sistemnya sendiri ke
Monitoring API. Hal ini mengharuskan peran roles/monitoring.metricWriter
diberikan ke
akun layanan default Compute Engine,
meskipun agen Monitoring tidak diinstal.
Metrik berikut ditulis ke Monitoring API oleh agen Monitoring dan agen Logging dalam mode opencensus:
agent.googleapis.com/agent/uptime dengan label version:
Uptime agen Logging.
agent.googleapis.com/agent/log_entry_count dengan label response_code:
Jumlah entri log yang ditulis oleh agen Logging.
agent.googleapis.com/agent/log_entry_retry_count dengan label response_code
:
Jumlah entri log yang ditulis oleh agen Logging.
agent.googleapis.com/agent/request_count dengan label response_code:
Jumlah permintaan API dari agen Logging.
Metrik ini dijelaskan secara lebih mendetail di halaman
Metrik agen.
Selain itu, metrik Prometheus berikut diekspos oleh plugin output
dalam mode prometheus:
uptime dengan label version:
Uptime agen Logging.
stackdriver_successful_requests_count dengan label grpc dan code:
Jumlah permintaan yang berhasil ke Logging API.
stackdriver_failed_requests_count dengan label grpc dan code:
Jumlah permintaan yang gagal ke Logging API, yang dikelompokkan
berdasarkan kode error.
stackdriver_ingested_entries_count dengan label grpc dan code:
Jumlah entri log yang di-ingest oleh Logging API.
stackdriver_dropped_entries_count dengan label grpc dan code:
Jumlah entri log yang ditolak oleh Logging API.
stackdriver_retried_entries_count dengan label grpc dan code:
Jumlah entri log yang gagal di-ingest oleh plugin output Google Cloud
fluentd karena error sementara dan dicoba lagi.
Konfigurasi plugin prometheus dan prometheus_monitor
Lokasi file konfigurasi:
/etc/google-fluentd/google-fluentd.conf
Deskripsi:
File ini mencakup opsi konfigurasi untuk mengontrol perilaku plugin
prometheus dan prometheus_monitor. Plugin prometheus_monitor memantau infrastruktur inti Fluentd. Plugin prometheus mengekspos
metrik, termasuk metrik dari plugin prometheus_monitor dan metrik dari
plugin google_cloud menggunakan port lokal dalam format Prometheus.
Untuk mengetahui informasi selengkapnya, lihat bagian Monitoring oleh Prometheus.
Untuk memantau Fluentd, server metrik http Prometheus bawaan diaktifkan secara default. Anda dapat menghapus bagian berikut dari konfigurasi untuk menghentikan
endpoint ini agar tidak dimulai:
# Prometheus monitoring.
@type prometheus
port 24231
@type prometheus_monitor
Memproses payload
Sebagian besar log yang didukung dalam konfigurasi default agen Logging berasal dari file log dan diserap sebagai payload tidak terstruktur (teks) dalam entri log.
Satu-satunya pengecualian adalah plugin input in_forward, yang juga diaktifkan secara default, hanya menerima log terstruktur dan menyerapnya sebagai payload terstruktur (JSON) dalam entri log. Untuk mengetahui detailnya, baca bagian
Menyalurkan rekaman log terstruktur (JSON) menggunakan plugin in_forward
di halaman ini.
Jika baris log adalah objek JSON yang diserialkan dan opsi
detect_json diaktifkan, plugin output akan mengubah
entri log menjadi payload terstruktur (JSON). Opsi ini diaktifkan secara default di instance VM yang berjalan di lingkungan fleksibel App Engine. Opsi ini tidak diaktifkan secara default di instance VM yang berjalan di lingkungan standar App Engine. JSON apa pun yang diurai dengan opsi detect_json diaktifkan akan selalu di-ingest sebagai jsonPayload.
Payload catatan log yang di-streaming oleh agen Logging yang dikonfigurasi secara kustom dapat berupa pesan teks tunggal yang tidak terstruktur (textPayload) atau pesan JSON terstruktur (jsonPayload).
Kolom khusus dalam payload terstruktur
Saat menerima catatan log terstruktur, agen Logging akan memindahkan kunci apa pun yang cocok dengan tabel berikut ke kolom yang sesuai dalam objek LogEntry. Jika tidak, kunci akan menjadi bagian dari
kolom LogEntry.jsonPayload. Perilaku ini memungkinkan Anda menetapkan kolom tertentu dalam objek
LogEntry, yang ditulis ke Logging API.
Misalnya, jika data log terstruktur berisi kunci severity, maka agen Logging akan mengisi kolom LogEntry.severity.
Agen Logging mencoba mencocokkan berbagai string tingkat keparahan umum, yang mencakup daftar string LogSeverity yang dikenali oleh Logging API.
"severity":"ERROR"
message
textPayload
(atau bagian dari
jsonPayload)
Pesan yang muncul di baris entri log di Logs Explorer.
"message":"There was an error in the application."
Catatan: message disimpan sebagai textPayload jika merupakan
satu-satunya kolom yang tersisa setelah agen
Logging memindahkan kolom khusus lainnya dandetect_json tidak diaktifkan; jika tidak, message
tetap berada di jsonPayload. detect_json tidak berlaku untuk lingkungan logging terkelola seperti Google Kubernetes Engine. Jika entri log Anda berisi stack trace pengecualian, stack trace pengecualian harus ditetapkan di kolom log JSON message ini, sehingga stack trace pengecualian dapat diuraikan dan disimpan ke Error Reporting.
log
(Google Kubernetes Engine
lama saja)
textPayload
Hanya berlaku untuk Google Kubernetes Engine lama:
jika, setelah memindahkan kolom tujuan khusus, hanya kolom log yang tersisa, maka kolom tersebut disimpan sebagai textPayload.
httpRequest
httpRequest
Kumpulan data terstruktur dalam format
kolom LogEntryHttpRequest.
Nilai kolom ini juga digunakan oleh Logs Explorer untuk mengelompokkan entri log terkait.
Untuk mengetahui informasi selengkapnya, lihat operation di halaman LogEntry.
Informasi lokasi kode sumber yang terkait dengan entri log, jika ada.
Untuk mengetahui informasi selengkapnya, lihat LogEntrySourceLocation di halaman LogEntry.
Catatan: Jika tidak menulis ke stdout atau stderr, format kolom ini sebagai
[TRACE_ID] atau gunakan format lama
projects/[PROJECT_ID]/traces/[TRACE_ID]. Kedua format memungkinkan Logs Explorer dan Trace Explorer mengorelasikan data log dan trace.
Jika autoformat_stackdriver_trace benar (true) dan [V] cocok dengan format
kolom traceId dalam objek ResourceTrace, maka kolom
LogEntry trace memiliki nilai projects/[PROJECT_ID]/traces/[V].
logging.googleapis.com/trace_sampled
traceSampled
Nilai kolom ini
harus berupa true atau
false.
Untuk mengetahui informasi selengkapnya, lihat traceSampled di halaman LogEntry.
"logging.googleapis.com/trace_sampled": false
Kolom terkait waktu
Secara umum, informasi terkait waktu tentang entri log disimpan di kolom
timestamp
objek LogEntry:
Jika sumber entri log adalah data terstruktur, agen Logging menggunakan aturan berikut untuk menelusuri kolom dalam entri jsonPayload untuk informasi terkait waktu:
Cari kolom timestamp yang merupakan objek JSON yang menyertakan kolom
seconds dan nanos, yang masing-masing merepresentasikan jumlah detik bertanda
dari epoch UTC dan jumlah detik fraksional non-negatif:
Jika penelusuran sebelumnya gagal, telusuri kolom time yang berupa string dalam format RFC 3339:
jsonPayload: {
...
"time": CURRENT_TIME_RFC3339
}
Saat informasi terkait waktu ditemukan, agen Logging menggunakan informasi tersebut
untuk menetapkan nilai LogEntry.timestamp, dan tidak menyalin
informasi tersebut dari rekaman terstruktur ke dalam objek LogEntry.jsonPayload.
Kolom terkait waktu yang tidak digunakan untuk menetapkan nilai kolom
LogEntry.timestamp disalin dari rekaman terstruktur ke objek
LogEntry.jsonPayload. Misalnya, jika
kumpulan data terstruktur berisi objek JSON timestamp dan kolom time,
maka data dalam objek JSON timestamp digunakan untuk menetapkan
kolom LogEntry.timestamp. Objek LogEntry.jsonPayload berisi kolom time, karena kolom ini tidak digunakan untuk menetapkan nilai LogEntry.timestamp.
Menyesuaikan konfigurasi agen
Selain daftar log default yang di-streaming oleh agen Logging secara default, Anda dapat menyesuaikan agen Logging untuk mengirim log tambahan ke Logging atau menyesuaikan setelan agen dengan menambahkan konfigurasi input.
Definisi konfigurasi di bagian ini hanya berlaku untuk plugin output
fluent-plugin-google-cloud dan menentukan cara log diubah dan dimasukkan ke Cloud Logging.
Anda dapat menyesuaikan agen Logging untuk mengirim log tambahan ke Logging dengan menambahkan konfigurasi input.
Mengalirkan log tidak terstruktur (teks) menggunakan file log
Dari command prompt Linux, buat file log:
touch/tmp/test-unstructured-log.log
Buat file konfigurasi baru berlabel test-unstructured-log.conf
di direktori konfigurasi tambahan /etc/google-fluentd/config.d:
sudotee/etc/google-fluentd/config.d/test-unstructured-log.conf<source>
@typetail
# 'none' indicates the log is unstructured (text).@typenone
# The path of the log file.path/tmp/test-unstructured-log.log
# The path of the position file that records the position in the log# file that has already been processed. This is useful when the agent# restarts.pos_file/var/lib/google-fluentd/pos/test-unstructured-log.pos
read_from_headtrue# The log tag for this log input.tagunstructured-log
EOF
Alternatif untuk membuat file baru adalah menambahkan informasi
konfigurasi ke file konfigurasi yang ada.
Mulai ulang agen untuk menerapkan perubahan konfigurasi:
sudoservicegoogle-fluentdrestart
Buat rekaman log ke dalam file log:
echo'This is a log from the log file at test-unstructured-log.log' >> /tmp/test-unstructured-log.log
Periksa Logs Explorer untuk melihat entri log yang di-ingest:
{
insertId: "eps2n7g1hq99qp"
labels: {
compute.googleapis.com/resource_name: "add-unstructured-log-resource"
}
logName: "projects/my-sample-project-12345/logs/unstructured-log"
receiveTimestamp: "2018-03-21T01:47:11.475065313Z"
resource: {
labels: {
instance_id: "3914079432219560274"
project_id: "my-sample-project-12345"
zone: "us-central1-c"
}
type: "gce_instance"
}
textPayload: "This is a log from the log file at test-unstructured-log.log"
timestamp: "2018-03-21T01:47:05.051902169Z"
}
Streaming log terstruktur (JSON) menggunakan file log
Anda dapat mengonfigurasi agen Logging agar setiap entri log
untuk input log tertentu bersifat terstruktur.
Anda juga dapat menyesuaikan agen Logging untuk menyerap konten berformat JSON dari file log. Jika agen dikonfigurasi untuk menyerap konten JSON, input harus diformat sehingga setiap objek JSON berada di baris baru:
Untuk mengonfigurasi agen Logging agar dapat memproses konten berformat JSON, lakukan hal berikut:
Dari command prompt Linux, buat file log:
touch/tmp/test-structured-log.log
Buat file konfigurasi baru berlabel test-structured-log.conf
di direktori konfigurasi tambahan /etc/google-fluentd/config.d:
sudotee/etc/google-fluentd/config.d/test-structured-log.conf<source>
@typetail
# 'json' indicates the log is structured (JSON).@typejson
# The path of the log file.path/tmp/test-structured-log.log
# The path of the position file that records the position in the log# file that has already been processed. This is useful when the agent# restarts.pos_file/var/lib/google-fluentd/pos/test-structured-log.pos
read_from_headtrue# The log tag for this log input.tagstructured-log
EOF
Alternatif untuk membuat file baru adalah menambahkan informasi
konfigurasi ke file konfigurasi yang ada.
Mulai ulang agen untuk menerapkan perubahan konfigurasi:
sudoservicegoogle-fluentdrestart
Buat rekaman log ke dalam file log:
echo'{"code": "structured-log-code", "message": "This is a log from the log file at test-structured-log.log"}' >> /tmp/test-structured-log.log
Periksa Logs Explorer untuk melihat entri log yang di-ingest:
{
insertId: "1m9mtk4g3mwilhp"
jsonPayload: {
code: "structured-log-code"
message: "This is a log from the log file at test-structured-log.log"
}
labels: {
compute.googleapis.com/resource_name: "add-structured-log-resource"
}
logName: "projects/my-sample-project-12345/logs/structured-log"
receiveTimestamp: "2018-03-21T01:53:41.118200931Z"
resource: {
labels: {
instance_id: "5351724540900470204"
project_id: "my-sample-project-12345"
zone: "us-central1-c"
}
type: "gce_instance"
}
timestamp: "2018-03-21T01:53:39.071920609Z"
}
Di Logs Explorer, filter menurut jenis resource dan logNamestructured-log.
Streaming log terstruktur (JSON) menggunakan plugin in_forward
Selain itu, Anda dapat mengirim log menggunakan plugin fluentdin_forward.
fluentd-cat adalah alat bawaan yang membantu mengirim log ke plugin in_forward. Dokumentasi fluentd
berisi detail selengkapnya untuk alat ini.
Untuk mengirim log menggunakan plugin fluentdin_forward, baca petunjuk berikut:
Jalankan perintah berikut di VM dengan agen Logging yang diinstal:
echo'{"code": "send-log-via-fluent-cat", "message": "This is a log from in_forward plugin."}'|/opt/google-fluentd/embedded/bin/fluent-catlog-via-in-forward-plugin
Periksa Logs Explorer untuk melihat entri log yang di-ingest:
Mengalirkan rekaman log terstruktur (JSON) dari kode aplikasi
Anda dapat mengaktifkan konektor dalam berbagai bahasa untuk mengirim log terstruktur dari kode aplikasi; untuk mengetahui informasi selengkapnya, tinjau dokumentasi fluentd.
Konektor ini didasarkan pada plugin in_forward.
Menetapkan label entri log
Opsi konfigurasi berikut memungkinkan Anda mengganti label LogEntry dan label MonitoredResource saat memasukkan log ke Cloud Logging.
Semua entri log dikaitkan dengan resource yang dipantau; untuk mengetahui informasi selengkapnya, tinjau daftar jenis resource yang dimonitor Cloud Logging.
Nama konfigurasi
Jenis
Default
Deskripsi
label_map
hash
nil
label_map (ditentukan sebagai objek JSON) adalah kumpulan nama kolom fluentd yang tidak berurutan dan nilainya dikirim sebagai label, bukan sebagai bagian dari payload terstruktur. Setiap entri dalam peta adalah pasangan {field_name: label_name}. Saat field_name (seperti yang diuraikan oleh plugin input) ditemukan, label dengan label_name yang sesuai akan ditambahkan ke entri log. Nilai kolom digunakan sebagai nilai label. Peta memberi Anda fleksibilitas tambahan dalam menentukan nama label, termasuk kemampuan untuk menggunakan karakter yang tidak akan sah sebagai bagian dari nama kolom fluentd. Untuk melihat contoh, lihat Menetapkan label dalam entri log terstruktur.
labels
hash
nil
labels (ditentukan sebagai objek JSON) adalah sekumpulan label kustom yang diberikan pada waktu konfigurasi. Dengan begitu, Anda dapat menyisipkan informasi lingkungan tambahan ke dalam setiap pesan atau menyesuaikan label yang terdeteksi secara otomatis. Setiap entri dalam peta adalah pasangan {label_name: label_value}.
Plugin output agen Logging mendukung tiga cara untuk menyetel label
LogEntry:
Secara dinamis, mengganti label tertentu dalam entri terstruktur dengan label
yang berbeda. Untuk mengetahui detailnya, lihat Menetapkan label dalam entri log terstruktur
di halaman ini.
Secara statis, melampirkan label ke setiap kemunculan nilai. Untuk mengetahui detailnya, lihat
Menetapkan label secara statis di halaman ini.
Menetapkan label dalam entri log terstruktur
Misalnya, Anda menulis payload entri log terstruktur seperti ini:
{ "message": "This is a log message", "timestamp": "Aug 10 20:07:00", "env": "production" }
Misalnya, Anda ingin menerjemahkan kolom payload env ke label metadata environment. Untuk melakukannya, tambahkan kode berikut ke konfigurasi plugin output
di file konfigurasi utama
(/etc/google-fluentd/google-fluentd.conf di Linux atau
C:\Program Files (x86)\Stackdriver\LoggingAgent\fluent.conf di Windows):
# Configure all sources to output to Cloud Logging **>
@typegoogle_cloud
label_map{"env":"environment"}...
Setelan label_map di sini menggantikan label env dalam payload dengan
environment, sehingga entri log yang dihasilkan memiliki label environment dengan
nilai production.
Menetapkan label secara statis
Jika Anda tidak memiliki informasi ini di payload dan ingin menambahkan label metadata statis bernama environment, tambahkan kode berikut ke konfigurasi plugin output di file konfigurasi utama (/etc/google-fluentd/google-fluentd.conf di Linux atau C:\Program Files (x86)\Stackdriver\LoggingAgent\fluent.conf di Windows):
# Configure all sources to output to Cloud Logging **>
@typegoogle_cloud
labels{"environment":"production"}...
Dalam hal ini, alih-alih menggunakan peta untuk mengganti satu label dengan label lain, kita menggunakan setelan
labels untuk melampirkan label dengan nilai literal tertentu ke entri log,
terlepas dari apakah entri sudah memiliki label atau tidak. Pendekatan ini dapat
digunakan meskipun Anda mengirim log tidak terstruktur.
Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi labels, label_map, dan setelan agen Logging lainnya, lihat bagian Menetapkan Label Entri Log di halaman ini.
Mengubah Catatan Log
Fluentd menyediakan
plugin filter bawaan
yang dapat digunakan untuk mengubah entri log.
Plugin filter yang paling umum digunakan adalah
filter_record_transformer.
Dengan fitur ini, Anda dapat melakukan hal berikut:
Menambahkan kolom baru ke entri log
Memperbarui kolom dalam entri log
Menghapus kolom dalam entri log
Beberapa plugin output juga memungkinkan Anda mengubah entri log. Plugin output
fluent-plugin-record-reformer
menyediakan fungsi yang mirip dengan plugin filter filter_record_transformer, kecuali plugin ini juga memungkinkan Anda mengubah tag log.
Penggunaan resource yang lebih besar diperkirakan terjadi dengan plugin ini: setiap kali tag log diperbarui, plugin ini akan membuat entri log baru dengan tag baru.
Perhatikan bahwa kolom tag dalam konfigurasi wajib diisi. Sebaiknya Anda juga mengubah kolom ini untuk menghindari memasuki loop tak terbatas.
Plugin output fluent-plugin-detect-exceptions
memindai aliran log, baik
catatan log tidak terstruktur (teks) atau berformat JSON, untuk stack pengecualian multi-baris
trace. Jika urutan entri log yang berurutan membentuk stack trace pengecualian,
entri log diteruskan sebagai satu pesan log gabungan. Jika tidak,
entri log akan diteruskan sebagaimana adanya.
Definisi konfigurasi lanjutan (non-default)
Jika Anda ingin menyesuaikan konfigurasi
Agen logging, di luar
konfigurasi default, lanjutkan membaca halaman ini.
Data yang tidak dapat ditulis ke Logging API dengan cukup cepat akan didorong ke dalam buffer. Buffer dapat berada dalam memori atau dalam file. Nilai yang direkomendasikan: buf_file. buf_memory default cepat, tetapi tidak persisten. Ada risiko kehilangan log. Jika buffer_type adalah buf_file, buffer_path juga harus ditentukan.
buffer_path
string
Ditentukan pengguna
Jalur tempat potongan buffer disimpan. Parameter ini wajib diisi jika buffer_type adalah buf_file. Konfigurasi ini harus unik untuk menghindari kondisi race.
buffer_queue_limit
int
64
Menentukan batas panjang antrean chunk. Saat antrean buffer mencapai batas ini, perilaku buffer dikontrol oleh buffer_queue_full_action. Secara default, pengecualian akan ditampilkan. Opsi ini bersama dengan buffer_chunk_limit menentukan ruang disk maksimum yang digunakan fluentd untuk buffering.
buffer_queue_full_action
string
exception
Mengontrol perilaku buffer saat antrean buffer penuh. Nilai yang mungkin: 1. exception: Melempar BufferQueueLimitError saat antrean penuh. Cara BufferQueueLimitError ditangani bergantung pada plugin input. Misalnya, plugin input in_tail berhenti membaca baris baru, sedangkan plugin input in_forward menampilkan error. 2. block: Mode ini menghentikan thread plugin input hingga kondisi buffer penuh teratasi. Tindakan ini cocok untuk kasus penggunaan seperti batch. fluentd tidak merekomendasikan penggunaan tindakan pemblokiran untuk menghindari BufferQueueLimitError. Jika Anda sering mengalami BufferQueueLimitError, artinya kapasitas tujuan Anda tidak mencukupi untuk traffic Anda. 3. drop_oldest_chunk: Mode ini menghapus chunk terlama.
Opsi konfigurasi terkait project dan resource yang dipantau
Opsi konfigurasi berikut memungkinkan Anda menentukan project dan
kolom tertentu dari objek MonitoredResource secara manual. Nilai ini dikumpulkan secara otomatis oleh agen Logging; sebaiknya Anda tidak menentukannya secara manual.
Nama konfigurasi
Jenis
Default
Deskripsi
project_id
string
nil
Jika ditentukan, parameter ini akan menggantikan project_id yang mengidentifikasi project AWS atau Google Cloud yang mendasarinya tempat agen Logging berjalan.
zone
string
nil
Jika ditentukan, zona ini akan diganti.
vm_id
string
nil
Jika ditentukan, ID ini akan menggantikan ID VM.
vm_name
string
nil
Jika ditentukan, ini akan menggantikan nama VM.
Opsi konfigurasi plugin output lainnya
Nama konfigurasi
Jenis
Default
Deskripsi
detect_json1
bool
false
Apakah akan mencoba mendeteksi apakah entri log adalah entri log teks dengan konten JSON yang perlu diuraikan. Jika opsi ini adalah true, dan entri log tidak terstruktur (teks) terdeteksi dalam format JSON, maka entri tersebut diuraikan dan dikirim sebagai payload terstruktur (JSON).
coerce_to_utf8
bool
true
Apakah akan mengizinkan karakter non-UTF-8 dalam log pengguna. Jika disetel ke true, karakter non-UTF-8 akan diganti dengan string yang ditentukan oleh non_utf8_replacement_string. Jika disetel ke false, karakter non-UTF-8 akan menyebabkan error pada plugin.
require_valid_tags
bool
false
Apakah akan menolak entri log dengan tag yang tidak valid. Jika opsi ini disetel ke false, tag akan divalidasi dengan mengonversi tag non-string menjadi string, dan membersihkan karakter non-UTF-8 atau karakter tidak valid lainnya.
non_utf8_replacement_string
string
"" (string kosong) atau " "(spasi)
Jika coerce_to_utf8 disetel ke true, karakter non-UTF-8 akan diganti dengan string yang ditentukan di sini.
1Fitur ini diaktifkan secara default di instance VM yang berjalan di
lingkungan fleksibel App Engine.
Menerapkan konfigurasi agen yang disesuaikan
Dengan menyesuaikan agen Logging, Anda dapat menambahkan file konfigurasi fluentd Anda sendiri:
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2026-10-07 UTC."],[],[]]