コンテンツにスキップ

Vector - 高性能 可観測性 データ パイプライン チートシート

Vector - 高性能 可観測性 データ パイプライン チートシート

Vector (Datadog、オープンソース) は Rust で書かれた高性能可観測性 データ パイプライン。ログ、メトリクス、トレースを任意のソースから収集し、トランスフォームを通じて変形し、任意のシンクに配信 — すべてベンダー非依存で、再インストルメント化なしでバックエンドを切り替えられる。通常、Logstash または Fluentd の CPU とメモリの一部を使用し、エージェントはすべてのノードで実行される場合、これは重要。

インストール

方法コマンド
インストール スクリプト`curl —proto ‘=https’ —tlsv1.2 -sSf https://sh.vector.dev
Debian/UbuntuVector リリースの.deb
macOS (Homebrew)brew install vectordotdev/brew/vector
Dockerdocker run -v $PWD/vector.yaml:/etc/vector/vector.yaml timberio/vector:latest-alpine
確認vector --version

モデル:ソース → トランスフォーム → シンク

# vector.yaml
sources:
  app_logs:
    type: file
    include: ["/var/log/app/*.log"]

transforms:
  parse:
    type: remap
    inputs: ["app_logs"]
    source: |
      . = parse_json!(.message)
      .env = "production"
      del(.password)

sinks:
  out:
    type: elasticsearch
    inputs: ["parse"]
    endpoints: ["http://es:9200"]
ステージ目的
sourcesデータがどこから来るか
transforms解析、フィルター、エンリッチ、マスク、集約
sinksデータがどこに行くか
inputsコンポーネントを DAG にワイヤ

共通のソース

ソース収集
fileログ ファイル (テーリング)
journaldsystemd ジャーナル
kubernetes_logsk8s メタデータ付き Pod ログ
docker_logsコンテナ ログ
http_serverプッシュ エンドポイント
syslogTCP/UDP Syslog
prometheus_scrapeメトリクス エンドポイント をスクレイプ
opentelemetryOTLP 取り込み

共通のシンク

シンク送信先
elasticsearchElasticsearch/OpenSearch
lokiGrafana Loki
clickhouseClickHouse
aws_s3S3 (アーカイブ)
prometheus_exporterスクレイプ用メトリクスを公開
datadog_logs / splunk_hecベンダー バックエンド
consolestdout (デバッグ)
blackhole破棄 (テスト)

VRL (Vector Remap Language)

remap トランスフォームはほとんどの作業がされる場所。

# 解析、エンリッチ、マスク、ノイズを削除
. = parse_json!(.message)
.timestamp = parse_timestamp!(.ts, "%+")
.service = "checkout"
del(.credit_card)
if .level == "debug" { abort }
VRL 関数目的
parse_json!parse_regex!parse_grok!生テキストを構造化
del(.field)フィールドを削除 (PII マスク)
to_int!to_float!型強制
abortイベントをドロップ
mergeflattenオブジェクトを変形

便利なトランスフォーム

トランスフォーム行うこと
remapVRL ベースの変形 (主力)
filter条件に一致するイベントを保持
routeストリームを名前付きブランチに分割
aggregate間隔以上のメトリクスをロール アップ
throttleうるさいイベントをレート制限
dedupe重複を削除
sampleイベントのパーセンテージを保持

Vector の操作

コマンド説明
vector --config vector.yamlコンフィギュレーション で実行
vector validateデプロイ前にコンフィギュレーション をチェック
vector testコンフィギュレーション で定義されたユニット テストを実行
vector topコンポーネント当たりのスループット のライブ TUI
vector tap <component>コンポーネント を通じて流れるイベントをストリーム
--watch-configコンフィギュレーション 変更時にホット リロード
# トランスフォーム が実際に何を出力しているかをデバッグ
vector tap parse

信頼性

機能注記
ディスク バッファ再起動/バックプレッシャーを生き残る (buffer.type: disk)
確認応答エンド ツー エンド配信保証
適応 同時実行性シンク リクエスト レートを自動調整
ヘルス チェック到達不可能なシンク で高速フェイル

Vector vs 代替

側面VectorFluent BitLogstash
言語RustCJRuby/JVM
リソース使用非常に低い非常に低い高い
トランスフォーム言語VRL (豊か)Lua/フィルターRuby/grok
データ タイプログ、メトリクス、トレースログ、メトリクスログ
最適用途ベンダー非依存パイプラインウルトラ ライト エッジ エージェントレガシー ELK スタック

OpenObserveLokiElasticsearchのようなシンク をフィード;Fluentdと比較。

リソース