Sổ tay kỹ thuật

Vector – source, transform, sink và VRL hay dùng

cheatsheet#vector#vrl#telemetry· cập nhật 2026-11-06

Tra nhanh Vector (observability pipeline) - lệnh CLI validate/top/tap/test, source/transform/sink phổ biến, buffer và các hàm VRL hay dùng.

Sửa trang này
Mục lục

Vector chạy một đồ thị source → transform → sink khai báo trong YAML/TOML, mỗi component có type và inputs (tên component phía trước). Ví dụ đầy đủ cho syslog thiết bị mạng xem pipeline syslog bằng Vector.

CLI

Mục đích Lệnh
Kiểm config (gồm healthcheck sink) vector validate /etc/vector/vector.yaml
Chỉ kiểm cú pháp, không gọi sink vector validate --no-environment /etc/vector/vector.yaml
Chạy với file config vector --config /etc/vector/vector.yaml
Tự reload khi file đổi vector --config vector.yaml --watch-config
Dashboard throughput/lỗi theo component vector top (cần api.enabled: true)
Xem event đi ra từ một component vector tap --outputs-of parse
Xem event đi vào một sink vector tap --inputs-of sink_loki
REPL thử VRL vector vrl
Chạy unit test khai báo trong config vector test vector.yaml
Liệt kê component có sẵn vector list

Source hay dùng

Mục đích type Tham số chính
Syslog UDP/TCP thô socket mode: udp, address: 0.0.0.0:514
Syslog có parse sẵn syslog mode, address
Đọc file log file include: [/var/log/*.log]
Nhận HTTP/JSON http_server address, decoding.codec: json
Nhận từ Kafka kafka bootstrap_servers, topics, group_id
Scrape Prometheus prometheus_scrape endpoints
Metric của host host_metrics collectors
Metric nội bộ của Vector internal_metrics
Sinh log giả để thử demo_logs format: syslog, interval

Transform hay dùng

Mục đích type Ví dụ
Sửa/parse bằng VRL remap source: '.env = "lab"'
Lọc event filter condition: '.severity != "debug"'
Tách luồng theo điều kiện route route: { crit: '.severity == "error"' }, đầu ra route_x.crit
Gộp nhiều event thành một reduce group_by: [source], ends_when, max_events
Loại trùng dedupe fields: { match: [source, message] }
Giảm tải sample / throttle rate: 10 / threshold: 100, window_secs: 1
Log thành metric log_to_metric metrics: [{type: counter, field: mnemonic, name: syslog_total}]

Sink và buffer

Mục đích type Ghi chú
Debug ra terminal console encoding.codec: json
Loki loki labels ít, tránh label động
ClickHouse clickhouse endpoint, database, table, skip_unknown_fields
Elasticsearch elasticsearch endpoints, bulk.index
Prometheus exporter prometheus_exporter address
Ghi file file path hỗ trợ template
Vector → Vector vector Chuyển giữa agent và aggregator
Bỏ event (test tải) blackhole
vector.yaml (rút gọn)
data_dir: /var/lib/vector      # cần cho disk buffer và checkpoint file
 
sinks:
  to_loki:
    type: loki
    inputs: [parse]
    endpoint: http://loki.example.com:3100
    encoding: { codec: json }
    labels: { job: syslog, source: "{{ source }}" }
    buffer:
      type: disk               # sống sót khi restart, mặc định là memory
      max_size: 1073741824     # byte
      when_full: block         # block = tạo back-pressure; drop_newest = bỏ event

VRL cơ bản

Mục đích VRL
Gán/xoá field .site = "hni", del(.port)
Parse JSON . = parse_json!(.message)
Parse syslog p, err = parse_syslog(.message)
Parse regex m, err = parse_regex(.message, r'%(?P<mn>[A-Z_-]+)')
Parse key=value parse_key_value!(.message)
Ép kiểu .bytes = to_int!(.bytes)
Kiểm tồn tại / null exists(.a), is_null(.a)
Giá trị mặc định .host = string(.host) ?? "unknown"
Đổi chuỗi replace(.message, "a", "b"), downcase(.x)
Format thời gian format_timestamp!(now(), "%F %T")
Merge object . = merge(., parsed)
Bỏ event abort
Biến môi trường get_env_var!("ENV")

Hàm có hậu tố ! sẽ abort event nếu lỗi, hàm không có ! trả về value, err. VRL buộc xử lý mọi hàm có thể lỗi, nếu không sẽ báo unhandled fallible assignment lúc compile.

Unit test

vector.yaml (tests)
tests:
  - name: parse mnemonic
    inputs:
      - insert_at: parse
        type: log
        log_fields:
          message: "%ROUTING-BGP-5-ADJCHANGE : neighbor 203.0.113.1 Up"
    outputs:
      - extract_from: parse
        conditions:
          - type: vrl
            source: 'assert_eq!(.mnemonic, "ADJCHANGE")'