Sunrabbit

[オブザーバビリティ] ログコレクターVectorに挑戦

作成: 2024-03-09

作成: 2024-03-09 00:03

今日は、Vectorというツールを紹介する予定です。

それはDataDogが出している製品です。

[オブザーバビリティ] ログコレクターVectorに挑戦


私たちが知っているpromtailやotelなどが担っている役割を担っています。
ログの収集と集計、変換をサポートします。

特徴は以下の通りです。

1. Go言語ではなくRustで記述されている。
2. otelと比べて、ログ変換コードを書きやすい。
3. 宣言的に管理可能。
4. よく書かれた公式ドキュメント。

公式ウェブサイトに行くと、以下のような点を長所として挙げていますが

[オブザーバビリティ] ログコレクターVectorに挑戦


ほとんどの長所は、他のツールも主張している点ではないかと考え、上記では除外しました。

そして、使用してみて感じた短所を話すとすると
1. 最新情報が反映されていない公式ドキュメント。
2. 関連資料を見つけるのが難しい。

このくらいでしょうか。
使用していて大きく不便な点はなかったのですが、関連資料が不足していたり、最新情報が反映されていないものが多く、残念でした。



私はHelmしか使用していないため、Helm基準で記述していることを予めお詫び申し上げます…。

次のようなシンプルなvalues.yamlを作成し


上記のコマンドで、k8sから出力されるログを簡単にLokiと統合することができました。


作成中にいくつかの問題が発生しました。

まず、customConfigを作成する際、デフォルトで適用されていたオプションはすべて無効になるため、source、transform、sinksをすべて自分で記述する必要があります。


2つ目に、k8sのログの特性上、行単位でログが入力されるため、エラートレースなどの複数行のログは結合する必要があります。
source.fileにはマルチラインに関するオプションがありますが、k8sには全くありません。
そして、Vectorチームの内部議論で、transform.reduceをサポートし、それを使ってくださいという結論に至りました。


3つ目に、root.data_dirだけでなく、custom_config内部のdata_dirも設定する必要があるようです…

[オブザーバビリティ] ログコレクターVectorに挑戦


内部にこのように値が埋め込まれており、設定されていない場合、ログ関連で権限不足エラーが頻繁に発生していました…ㅎ


4つ目に、私はHelmを使ってデプロイを行いましたが、そのため構文が重複する箇所があり、エスケープが必要な場合がありました。
そのため、ドキュメントには「{{ metadata }}」のように記述されているので、そのまま貼り付けたらエラーが発生しました…

そのため、Helmでは必ず「{{ {{ metadata }} }}」のようにエスケープ処理を行う必要があります!


さらに、アーキテクチャに関する悩みがある場合は、以下の記事を参照することをお勧めします。
https://vector.dev/docs/setup/deployment/topologies/

コメント0