Try using it in your preferred language.

English

  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar
translation

Ini adalah postingan yang diterjemahkan oleh AI.

Sunrabbit

[Observability] Tantangan Pengumpul Log Vector

  • Bahasa penulisan: Bahasa Korea
  • Negara referensi: Semua negara country-flag

Pilih Bahasa

  • Bahasa Indonesia
  • English
  • 汉语
  • Español
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar

Teks yang dirangkum oleh AI durumis

  • Vector, alat pengumpulan dan agregasi log yang diluncurkan oleh DataDog, dikembangkan dengan Rust, sehingga pembuatan kode konversi log lebih mudah daripada alat yang ada, dan memiliki keuntungan pengelolaan deklaratif, tetapi ada masalah dalam pembaruan dokumentasi resmi dan keterbatasan materi.
  • Saat menggunakan Vector berbasis Helm untuk mengintegrasikan log k8s dengan Loki, kami mengalami masalah seperti pengaturan customConfig, penggabungan log multibaris, pengaturan data_dir, dan konflik dengan sintaks Helm, dan menyediakan solusi dan informasi tambahan untuk masalah ini.
  • Jika Anda memiliki kekhawatiran tentang arsitektur Vector, Anda dapat memilih metode penyebaran yang tepat dengan merujuk pada artikel tentang arsitektur di dokumentasi resmi.

Hari ini, saya akan memperkenalkan alat bernama Vector.

Ini adalah produk dari DataDog.


Vector melakukan peran yang sama dengan promtail dan otel yang kita kenal.
Vector mendukung pengumpulan, agregasi, dan transformasi log.

Berikut adalah fitur-fiturnya:

1. Ditulis dalam bahasa Rust, bukan golang
2. Lebih mudah untuk menulis kode transformasi log dibandingkan dengan otel
3. Dapat dikelola secara deklaratif
4. Dokumentasi resmi yang baik

Meskipun situs resminya menyebutkan poin-poin di atas sebagai kelebihan,


Saya rasa sebagian besar kelebihan tersebut juga dimiliki oleh alat lain, jadi saya tidak menyertakannya di sini.

Berikut adalah kekurangan yang saya temukan saat menggunakannya:
1. Dokumentasi resmi yang belum diperbarui
2. Sulit untuk menemukan materi terkait

Kurang lebih itu saja.
Saya tidak menemukan kendala berarti saat menggunakannya, tetapi saya merasa sangat disayangkan karena banyak materi yang belum diperbarui atau sulit ditemukan.



Saya hanya menggunakan helm, jadi saya mohon maaf jika penjelasan ini hanya berdasarkan helm. 흑....


role: Agent

data_dir: /var/lib/vector
customConfig:
	data_dir: "/vector-data-dir"
	api:
		enabled: true
		address: 0.0.0.0:8686
		sources:
			kubernetes_logs:
  			type: kubernetes_logs
  			exclude_paths_glob_patterns:
    			- "**/*.gz"           # default
    			- "**/*.tmp"          # default
    			
	transforms:
		handle_multiline:
			type: reduce
			inputs:
				- kubernetes_logs
			expire_after_ms: 1000
			group_by:
				- kubernetes_pod_name
			merge_strategies:
				message: concat_newline
			starts_when: match(string!(.message), r'^[((\d{4}-\d{2}-\d{2})|(\d{4}/\d{2}/\d{2})|GIN|(\d{2}:\d{2}:\d{2} ))')
			
	message_parsing:
  		type: remap
  		inputs:
    		- handle_multiline
  		source: |-
    		.message = replace!(.message, r'\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]', "")
    		structured, err1 =
        		parse_grok(.message, "\\[%{YEAR}/%{MONTHNUM}/%{MONTHDAY} %{TIME}\\] %{LOGLEVEL:level} (?(.|\r|\n)*)") ?? 
        		parse_grok(.message, "\\[%{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{TIME}\\] %{LOGLEVEL:level} (?(.|\r|\n)*)")

    		if err1 == null {
      		. = merge(., structured) 
    		}
    		
    		.level = downcase(string(.level) ?? "info")
    		., err2 = merge(., .kubernetes)
    		if err2 == null {
      		del(.kubernetes)
      		del(.namespace_labels.kubernetes_io_metadata_name)
    		}
    		
	sinks:
		loki:
			type: loki
			compression: snappy
			encoding:
				codec: json
			inputs:
				- message_parsing
			endpoint: http://loki-write.monitoring:3100
			
			labels:
				forwarder: vector
				app: "{{{{container_name}}}}"
				namespace: "{{{{pod_namespace}}}}"

Buat file values.yaml sederhana seperti di bawah ini,


helm repo add vector https://helm.vector.dev

dan jalankan perintah di atas untuk mengintegrasikan log dari k8s ke loki dengan mudah.


Saat menulis kode di atas, saya menemukan beberapa masalah.

Pertama, saat menulis customConfig, semua opsi default akan dinonaktifkan, jadi Anda harus menulis source, transform, dan sinks secara manual.


Kedua, log masuk berdasarkan baris, jadi log multi-baris seperti error trace harus digabungkan.
Source.file memiliki opsi terkait multiline, tetapi k8s tidak memilikinya.
Setelah diskusi internal dengan tim Vector, kami memutuskan untuk mendukung transform.reduce dan menggunakannya.


Ketiga, Anda harus mengatur data_dir di dalam custom_config selain root.data_dir.


Nilai itu ada di dalam, dan jika tidak diatur, Anda akan sering mendapatkan kesalahan izin terkait log. ㅎ


Keempat, saya menggunakan helm untuk penyebaran, jadi ada tumpang tindih sintaks dan memerlukan escape.
Karena itu, dokumentasi menyebutkan "{{ metadata }}" seperti di bawah ini, dan saya menggunakannya begitu saja, tetapi itu menyebabkan kesalahan.

sinks:
	my_sink_id:
		type: loki
		inputs:
			- my-source-or-transform-id
		compression: snappy
		endpoint: http://localhost:3100
		labels:

Jadi, di helm, Anda harus menggunakan escape seperti "{{ {{ metadata }} }}"!


Jika Anda memiliki masalah dengan arsitektur, saya sarankan Anda untuk membaca artikel di bawah ini.
https://vector.dev/docs/setup/deployment/topologies/

Sunrabbit
Sunrabbit
More than the best, I'll do my best
Sunrabbit
[React Hook] useState Artikel ini membahas tentang alasan mengapa React useState hook merender ulang seluruh komponen saat dilakukan re-rendering, cara mempertahankan nilai, dan penjelasan terperinci tentang struktur implementasi internalnya. Analisis kode ReactFiberHooks.js m

14 Maret 2024

[Next.js] Injeksi Lingkungan Runtime Pelajari cara mengatur variabel lingkungan setelah build di Next.js. Kami memperkenalkan cara menginstal cross-env dan memodifikasi skrip yang mudah diikuti oleh pengguna Windows. Ini dapat digunakan untuk pengaturan variabel lingkungan yang berbeda seper

20 Maret 2024

[Efektif Java] Item 6. Hindari Pembuatan Objek yang Tidak Diperlukan Panduan tentang cara mengurangi pembuatan objek yang tidak diperlukan di Java. String, Boolean, dan objek tak berubah lainnya lebih baik menggunakan literal, dan ekspresi reguler lebih baik menggunakan instance Pattern yang di-cache. Selain itu, autoboxin
제이온
제이온
제이온
제이온

28 April 2024

[Java] Kumpulan Tersinkronisasi vs Kumpulan Bersamaan Dalam Java, kumpulan tersinkronisasi (Vector, Hashtable, Collections.synchronizedXXX) menjamin sinkronisasi dalam lingkungan multithreaded, tetapi dapat menyebabkan penurunan kinerja dan potensi masalah ketika menggunakan beberapa operasi secara bersamaan
제이온
제이온
제이온
제이온

25 April 2024

Memahami Risiko Investasi Leverage x3: Mengatasi Penurunan Volatilitas (volatility decay) Artikel blog ini menceritakan tentang impian untuk menjadi kaya dengan investasi leverage 3 kali lipat, tetapi juga dilengkapi dengan kekhawatiran tentang penurunan volatilitas dan kemungkinan kegagalan investasi, serta upaya untuk membangun sistem invest
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마

21 April 2024

Mr. Know-All 6 - Maret 2024 LM Studio, sebuah platform yang memungkinkan Anda menjalankan LLM open-source seperti LLaMa, Falcon, MPT, dan StarCoder secara lokal, serta berbagai alat dan layanan AI seperti Devin, seorang insinyur perangkat lunak AI, dan crewAI, platform otomatisasi m
Pilot AISmrteasy
Pilot AISmrteasy
Pilot AISmrteasy
Pilot AISmrteasy

21 Maret 2024

Panduan Pengantar Rust Panduan Pengantar Rust: Mulai dari instalasi compiler hingga pemahaman konsep dasar. Artikel ini membahas penggunaan teknologi dan library terbaru melalui dokumentasi dan tutorial resmi. Artikel ini membahas variabel, fungsi, struktur data, dan topik-topi
곽경직
곽경직
곽경직
곽경직
곽경직

30 Maret 2024

Mr. Know-All 2 – Agustus 2023 Artikel ini membahas cara memproses file PDF untuk pelatihan LLM pada data internal perusahaan. Ia menjelaskan proses integrasi vektor store FAISS dan ChromaDB menggunakan OpenAI API, LangChain, dan Streamlit. Artikel ini juga menyediakan repositori terka
Pilot AISmrteasy
Pilot AISmrteasy
Pilot AISmrteasy
Pilot AISmrteasy

21 Maret 2024