こんにちは!Datadog JapanでSales Engineerをしているitakafuです。
Datadog Advent Calendar 2021も22日目となり残り少なくなってきました。この記事ではちょっと趣向を変えて、半分ネタ的な話を書いていきたいと思います!
Vector とは?
タイトルのとおりですが、Vector by Datadog (以下Vector)を皆様ご存知でしょうか。VectorはもともとTimber.ioにより開発されていましたがDatadogにより買収され、現在はVector by Datadogとして継続して開発が進められているAgent/Aggregatorとなります。
実はしれっとDatadogのドキュメント中にもページがあったりします。
Aggregating Multiple Agents Using Vector
https://docs.datadoghq.com/agent/vector_aggregation/
何ができるの?
Vectorは様々なデータを集約、加工、また様々なツールへとそのデータを連携することが可能な、daemonやsidecarとしてデプロイできるAgent/Aggregatorです。
上記の図にあるように、
Sources (データソース)
Transfroms (加工)
Sinks(データ連携先)
と、シンプルに設定することが可能です。
例えばSourceにFluentを設定し、SinksへAWS S3とDatadog Logsを設定すると、FluentからのログをVectorへ集約し、AWS S3とDatadog Logsへ同時に連携することが可能となります。
またSinksへ2つの異なるDatadog Organizationを設定する、なんてことも可能ですので「このデータ、こっちとあっちのOrganizationにも送りたいんだよなぁ」なんてことも可能となります。
以下は、実際に1つのログをAとBという2つのOrganizationに送信し、Bに送信する際にはTransformsで「sender:なんちゃか」というタグを付与した例です。
また1つのログをDatadog LogsとAWS CloudWatch Logsの両方へログを送ってみる、なんてこともやってみました。
と、なかなか色々な想像が膨らんできて夢が広がりますね!!!
まとめ
by Datadogという形で、Datadog自身Observabilityプラットフォームを提供する身ではありますが、Datadogだけでは無く「Observability」という意味で様々なデータを集約し、様々なプラットフォームへと連携できるようなものになっています。まさに「Take control of your observability data」です。
どなたでも試せるようになっていますので、ぜひご興味あるかたは覗いてみてください!
注意点
Vectorは現在絶賛開発中ですので、例えば Datadog Agent -> Vecotr
というようなDatadog AgentをSourceとする場合、現状ログのみ対応(Metricsは現状非対応)や、Vector自身SourceとしてのTraceのサポートは絶賛開発中、など、まだいくつか制限があります。
VectorのドキュメントやGithubのほうでにてそれぞれ設定可能なSourceの対応状況、Sinksの対応状況、またTransformsの書き方などなど確認可能ですのでぜひご参照ください。
おまけ
VectorはRustで実装されていて、実は --enable-datadog-tracing
というオプションが存在します。これは、APMが有効となっているDatadog Agentが動作している環境で、このオプションを付与してVectorを起動すると、Datadog APMにてVector自身の動作のTracingが確認することができます。
「Datadog APMってRust対応してなかったような…」と思ったそこのあなた、正解です。Datadog APM自身はRustに対応していません。どうなってるのかな、と気になった方は、VectorのRepositoryに自身のTracingのRFCなんかもありますので探してみると面白いかもしれません