Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Vector

Related Books

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

  • Be the first to like this

Vector

  1. 1. by 齋藤健太郎 1
  2. 2. What is Vector Vectorはハイパフォーマンスな可 観測性データプラットフォーム すべてのログ、メトリック、トレー スを収集して、変換して、ローテー ションするRust製ソフトウェア 2
  3. 3. Vector の強み https://vector.dev/#performance FluentDよりCPUを消費するが、メモリ、ファイルIOの⾯で軍配 Configファイルがシンプルでわかりやすい 基本的な⼊⼒、処理、出⼒についてはサポートしている 検索がしづらい なのにgithub のStar数が6.6K https://github.com/timberio/vector (202103現在) 3
  4. 4. Vector の使い⽅ 1. curl でインストールする $ curl --proto '=https' --tlsv1.2 -sSf https://sh.vector.dev | sh $ vector -c vector.toml 2. docker を使う $ docker run -v `pwd`:/etc/vector -v /tmp/log:/tmp/log timberio/vector:0.10.0-alpine 4
  5. 5. デモ1 1. /tmp/log/sample.log に書き込まれたものを転送して、コンソールに表⽰する data_dir = "/tmp/" [sources.log] type = "file" include = ["/tmp/log/sample.log"] fingerprinting.strategy = "device_and_inode" [transforms.add_type] type = "add_fields" inputs = ["log"] fields.type = "log" [sinks.console] type = "console" inputs = ["add_type"] target = "stdout" encoding.codec = "json" 5
  6. 6. Vectorの考え⽅ 6
  7. 7. Vectorの考え⽅① source: データの⼊⼒先。 ログかメトリックの2種類 対応しているデータソースは、 file , s3 , docker log , Kubernetes log , host metrics , postgres metrics , statsd などたくさん [sources.log] type = "file" include = ["/tmp/log/sample.log"] fingerprinting.strategy = "device_and_inode" 7
  8. 8. Vectorの考え⽅② transform: データの変更 ⼊⼒をパースしたり、サンプリング したりする。他にはec2のメタデータ を付与して⼊⼒を強化する、ログの 重複を排除するなどある.カスタマイ ズ可能 [transforms.add_type] type = "add_fields" inputs = ["log"] fields.type = "log" 8
  9. 9. Vectorの考え⽅③ sinks: データの出⼒ transformで加⼯したイベントを指定 されたデータソースにアップロード する。 stdout , file , s3 , datadog , elastics earch , new relic などメジャーどこ ろは抑えてそう [sinks.console] type = "console" inputs = ["add_type"] target = "stdout" encoding.codec = "json" 9
  10. 10. Vectorの考え⽅④ 共通で必要なのは source , sinks コンポーネントと [xxxx.yyy] , type , inculde data_dir = "/tmp/" [sources.log] type = "file" include = ["/tmp/log/sample.log"] fingerprinting.strategy = "device_and_inode" [transforms.add_type] type = "add_fields" inputs = ["log"] fields.type = "log" [sinks.console] type = "console" inputs = ["add_type"] target = "stdout" encoding.codec = "json" 10
  11. 11. デモ2: ローカルのメトリックを収集し、ファイルに出⼒する [sources.host_metrics] type = "host_metrics" # required collectors = ["cpu", "disk", "filesystem", "load", "host", "memory", "network"] scrape_interval_secs = 15 # optional, default, seconds [transforms.add_type] type = "add_fields" inputs = ["host_metrics"] fields.type = "metrics" (標準出⼒に出すので、あとは省略) 11
  12. 12. デモ3 ログファイルをいい感じにパースして ElasticSearchに出す ソースは⾒せます. 12
  13. 13. その他良さそうなところ1: Lua⾔語でカスタマイズが できること [transforms.my_transform_id] # General type = "lua" # required inputs = ["my-source-or-transform-id"] # required version = "2" # required # Hooks hooks.process = """ function (event, emit) event.log.field = "追加フィールド" -- フィールドをセット event.log.another_field = nil -- フィールドを削除 event.log.first, event.log.second = nil, event.log.first --フィールドの名前を変更 emit(event) end """ 13
  14. 14. その他良さそうなところ2: 単体テストができる [transforms.add_fields] type = "add_fields" inputs = ["log"] fields.instance_id = "foo-${INSTANCE_ID:-AABB}" fields.static = "carry" [[tests]] name = "check_simple_log" [[tests.inputs]] insert_at = "add_fields" type = "log" log_fields.message = "some message contents" log_fields.host = "Ubuntu" [[tests.outputs]] extract_from = "add_fields" [[tests.outputs.conditions]] type = "check_fields" "instance_id.equals" = "foo-AABB" "static.equals" = "ramen" "host.equals" = "Ubuntu" 14
  15. 15. 所感 fluentDを触ったことない⾃分でさえ、esにデータを送信するのは容易だった 設定ファイルが書きやすいのが良かった。⼊⼒/加⼯/出⼒の考え⽅が理解しやす い 基本のパイプラインを修正していくだけでできるのは本当に楽だった。 FluentDは設定ファイルがxmlで個⼈的には使いづらい 性能も良いし、基本的な部分でIOも⾼いのでログ収集基盤について即戦⼒クラス 単体テストがかけるので実際に本番適⽤の前に⼗分検証してからデプロイできる のは安⼼できる. エラー時の処理については、もう少し調査したい。 15

    Be the first to comment

Views

Total views

91

On Slideshare

0

From embeds

0

Number of embeds

3

Actions

Downloads

0

Shares

0

Comments

0

Likes

0

×