Sunrabbit

[可觀察性] 日誌收集器 Vector 挑戰記

  • 撰写语言: 韓国語
  • 基准国家: 所有国家country-flag
  • 信息技术

撰写: 2024-03-09

撰写: 2024-03-09 00:03

今天要來介紹一個名為 Vector 的工具。

它是 DataDog 推出的產品。

[可觀察性] 日誌收集器 Vector 挑戰記


它承擔著我們熟知的 promtail、otel 等工具的功能。
支援日誌收集、彙總和轉換。

其特點如下:

1. 使用 Rust 語言編寫,而非 Golang。
2. 與 otel 相比,編寫日誌轉換程式碼更加方便。
3. 可宣告式管理。
4. 文件撰寫良好。

雖然官方網站將以下列出的內容作為優勢,

[可觀察性] 日誌收集器 Vector 挑戰記


但大多數優勢其他工具也都有,因此我在上面省略了這些內容。

此外,在使用過程中我遇到了一些缺點,例如:
1. 官方文件未及時更新。
2. 查找相關資料很困難。

大概就是這些了。
在使用的過程中,我沒有遇到什麼太大的不便,但相關資料的缺乏以及文件更新不及時,確實讓人感到遺憾。



由於我僅使用 helm,因此本文以 helm 為基準進行撰寫,在此先致歉….

然後撰寫以下簡單的 values.yaml 檔案,


透過上述指令,可以輕鬆地將 Kubernetes 中產生的日誌與 Loki 整合。


在撰寫過程中,我遇到了一些問題。

首先,在撰寫 customConfig 時,預設套用的選項都會被停用,因此您需要自行撰寫 source、transform 和 sinks。


其次,由於 Kubernetes 日誌的特性,日誌是以行作為單位輸入的,因此對於錯誤追蹤等多行日誌,需要進行合併。
source.file 中有處理多行日誌的選項,但 Kubernetes 沒有。
經過 Vector 團隊內部的討論,最終決定支援 transform.reduce 並透過它來解決這個問題。


第三,除了 root.data_dir 之外,custom_config 內部的 data_dir 也需要進行設定…

[可觀察性] 日誌收集器 Vector 挑戰記


這些值會被儲存在內部,如果沒有設定,就會經常發生與日誌相關的權限不足錯誤… 哈哈。


第四,我使用 helm 進行部署,因此出現了語法重疊的情況,需要進行轉義。
文件上寫著 "{{ metadata }}",我直接照搬就出錯了…

因此,在使用 helm 時,務必將其轉義為 "{{ {{ metadata }} }}"!


此外,如果您對架構有疑問,建議您參考以下文章。
https://vector.dev/docs/setup/deployment/topologies/

评论0