Open-source project
vectordotdev/vector avatar
vectordotdev/vector

Vector: A Rust Observability Pipeline for Logs and Metrics

A high-performance observability data pipeline.

22,563 stars2,283 forksRustMPL-2.0

At a glance

What is it?
Vector is an open source agent and aggregator that collects, transforms and routes logs and metrics, written in Rust and licensed under MPL-2.0. It is a strong fit when you want vendor-neutral routing and disk buffering; it is a weaker fit when your pipeline is regex-heavy or you need traces today.
Who is it for?
Adopt Vector if you need one binary that reads logs and metrics from many sources and writes them to more than one vendor, and if disk buffering between restarts matters to you. Do not adopt it if your dominant workload is regex parsing (the README's own table puts FluentBit ahead there) or if you need traces now, since the README lists traces as coming soon.
Can I use it commercially?
Yes, with conditions. MPL-2.0 is a weak copyleft licence: you can use it inside commercial and closed-source software, but if you distribute changes to its own files, you must publish those changes under the same licence.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Rust, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The Problem Vector Targets: Vendor Lock-In and Agent Sprawl

Most observability stacks accumulate agents. One daemon tails files, another scrapes metrics, a third forwards to a vendor-specific endpoint. Each has its own config format, its own upgrade cycle and its own buffer semantics. Vector's README frames the problem in terms of control: it describes a pipeline that lets you collect, transform and route logs and metrics to any vendor you want today and any other vendor you may want tomorrow. The stated use cases are cost reduction, vendor transitions without workflow disruption, data enrichment, and consolidating agents to eliminate what the README calls agent fatigue.

The audience is therefore platform and infrastructure engineers who own telemetry collection rather than the people who query it. If you run a single application and ship straight to one backend, the abstraction Vector introduces is overhead you do not need. The value appears when more than one team, environment or backend is involved, or when the routing decision itself needs to be version-controlled alongside the rest of your infrastructure.

Sources, Transforms and Sinks: The Three-Stage Data Model

Vector's architecture is a directed graph with three component types. Sources ingest data. Transforms modify it. Sinks emit it. The README names these directly as the collect, transform and route stages, and links each to its own documentation section.

What distinguishes this from a simple forwarder is that the stages are composable and the data model is unified. The README states that Vector handles logs and metrics, with metrics marked beta, and traces listed as coming soon. The data model documentation is split accordingly, with separate pages for the log data model and the metric data model. A single pipeline can therefore carry both signal types, which is the mechanism behind the consolidation claim: instead of one agent for logs and another for metrics, both flow through the same process and the same buffering layer.

The agent and aggregator roles are worth separating. The README describes Vector as end-to-end and says it deploys as either an agent or an aggregator, linking to a roles page. The agent sits close to the workload and forwards; the aggregator receives from many agents and fans out to backends. The same binary serves both roles, so the split is a deployment decision rather than a build-time one. This is the part of the design that actually reduces operational surface area, because the config language, the buffer behaviour and the upgrade process are identical at both tiers.

Getting It Running: Install Paths and Configuration

The README points to a quickstart guide and an installation page as the two entry points, and offers a download link at vector.dev/releases/latest/download/ plus container images published to the GitHub Container Registry under ghcr.io/vectordotdev/vector. Rust crate documentation is hosted separately at rust-doc.vector.dev, which matters if you intend to build against the internals rather than run the binary.

Configuration is file-based, organised around the source, transform and sink component names. The README does not reproduce a full config example, so the authoritative reference is the components page at vector.dev/components/, which lists each available component. That page is the first thing to check before designing a pipeline, because component availability is not uniform: some are gated behind build features, and the README's own CI badges include a dedicated Component Features workflow, which implies the feature set is configurable at build time rather than fixed.

The practical sequence the documentation implies is: pick sources from the components list, chain transforms, terminate in one or more sinks, then run the binary against the config file. Container deployments use the published image. Nothing in the README suggests a separate control plane or hosted component, so configuration lives in your repository and is deployed like any other file.

Disk Buffering Is the Differentiator, Not Throughput Alone

The README's correctness table is more informative than its performance table. It lists a Disk Buffer Persistence test and marks Vector with a check, alongside Filebeat, Splunk UF and Splunk HF, while FluentBit and FluentD are left blank and Logstash is marked with a warning. The same table covers file rotation via create and copytruncate, and file truncation.

This is the concrete mechanism behind the reliability claim in the principles section, which states that reliability is Vector's primary design goal and that it is built in Rust. A pipeline that buffers to disk can survive a restart or a backend outage without dropping the events it has already accepted. For an aggregator receiving from many agents, that property is the difference between a backend maintenance window being invisible and it being a data loss event.

The performance table is worth reading carefully rather than skimming. Vector leads on TCP to Blackhole, File to TCP, TCP to HTTP and TCP to TCP, but in the Regex Parsing row FluentBit is the bolded winner at 20.5mib/s against Vector's 13.2mib/s. The README itself presents that exception explicitly. It is the single most useful number in the document for anyone whose pipeline is dominated by pattern matching, because it shows the advantage is workload-dependent rather than universal.

Where Vector Is the Wrong Tool

The regex parsing result is the clearest limitation, and it comes from the project's own test harness rather than from an outside critique. If your ingestion is mostly unstructured text that must be parsed with regular expressions, Vector is not the fastest option in its own comparison table. That does not make it unusable, but it changes the calculus: you would be adopting it for routing and buffering while accepting a parsing penalty.

Traces are the second boundary. The README lists traces as coming soon and describes the unified data model as logs, metrics in beta, and traces. Anyone building a pipeline that must handle all three signal types today should treat traces as unavailable and plan accordingly. Metrics carry a beta label as well, which is a statement about maturity that the README makes explicitly.

There is also a governance consideration that the README surfaces without dwelling on. Vector is maintained by Datadog's Community Open Source Engineering team. That is disclosed plainly, and the project is MPL-2.0 licensed, but engineers evaluating a vendor-neutral routing layer should note that the maintainer is also a vendor of observability services. The licence and the component model are what actually constrain lock-in, not the maintainer's identity, so read the licence rather than reasoning from the affiliation.

Finally, the README's own claims about scale, download volume, contributor numbers and named production users are marketing assertions. They are not evidence about whether Vector fits your throughput profile, and the test harness links are the only reproducible material in the document.

How It Compares to FluentBit and FluentD

The natural comparison is with the Fluent family, which appears throughout both tables. The difference in approach is language and scope. FluentBit and FluentD are the incumbent agents in many Kubernetes clusters, and the README's numbers put FluentBit ahead of Vector specifically on regex parsing while Vector leads on the file-to-TCP and TCP-to-HTTP paths.

The architectural difference is that Vector presents itself as end-to-end, covering both the agent and aggregator roles with one binary and one configuration model. The Fluent family splits those roles across two projects with different codebases and different plugin ecosystems. If you already run FluentBit as a DaemonSet and FluentD as a aggregator, replacing both with a single Vector deployment removes a layer, but it also means a single upgrade touches both tiers.

On the correctness table, the gap is starker than on performance. FluentBit has no mark in the Disk Buffer Persistence row, FluentD has none, and Logstash carries a warning. If durable buffering is a requirement rather than a preference, that row is the one to weigh most heavily, and it favours Vector, Filebeat and the Splunk forwarders over the Fluent options.

Maintenance, Licensing and Upgrade Surface

Vector is MPL-2.0 licensed. That is a file-level copyleft licence: modifications to MPL-covered files must be made available under the same terms, while larger works that combine Vector with other code can generally be distributed under other terms. This is not legal advice, and anyone embedding Vector in a distributed product should have counsel review the specific obligation around modified files rather than relying on a summary.

The release cadence visible in the supplied material is active. The most recent tagged releases include v0.58.0 dated 2026-08-26 and a separate vdev-v0.3.18 line dated 2026-09-03, with vdev-v0.3.17 the day before. The presence of two version series suggests the main pipeline and a separate tooling component version independently, which means upgrade planning has to account for both rather than assuming a single version number covers the deployment.

The README links to dedicated versioning and releases policy documents. Those, not the release list, define what a version bump promises. The maintenance cost that matters operationally is configuration churn: because sources, transforms and sinks are named components with their own documentation pages, a component's configuration keys can change between minor versions. Pinning a version and reading the release notes before moving is cheaper than discovering a renamed key during an incident. The component features workflow in CI also implies that if you build Vector yourself rather than using the published image or container, you control which components are compiled in, and that build configuration becomes part of your maintenance burden.

Editorial conclusion

Adopt Vector if you need one binary that reads logs and metrics from many sources and writes them to more than one vendor, and if disk buffering between restarts matters to you. Do not adopt it if your dominant workload is regex parsing (the README's own table puts FluentBit ahead there) or if you need traces now, since the README lists traces as coming soon. Before committing, verify three things on your own data: that the sources you need exist in the components list, that your transform chain does not depend on regex parsing, and that your sink configuration supports the buffering behaviour you expect.

Official sources

  1. License: MPL-2.0
  2. Project website
  3. README
  4. Releases
  5. vectordotdev/vector on GitHub
Community notes

Community notes