Vector
Configure Vector's OpenTelemetry sink to forward logs and traces from your infrastructure to Sazabi using Vector's high-throughput observability pipeline.
About
Forward logs and traces from any Vector source into Sazabi using Vector's opentelemetry sink. Vector's otlp encoding codec wraps your events in a valid OTLP envelope before delivery, making Sazabi's OTLP/HTTP intake a natural destination alongside any existing sinks.
Vector 0.51.0 or later is required for the otlp encoding codec. Metrics sent
through this source are accepted at intake but silently dropped.
Prerequisites
- Vector 0.51.0 or later. Check with
vector --version. - Your Sazabi intake URL, shown above — open the log source and copy the Intake URL from its setup screen (the public key is embedded in the URL).
Set up in the dashboard
Add the Sazabi sink to your Vector config
Add a remap transform to build the OTLP resourceLogs envelope, then an opentelemetry sink pointed at Sazabi:
transforms:
sazabi_logs_otlp:
type: remap
inputs: ["*"] # replace with explicit source/transform IDs
source: |
# The opentelemetry sink's `otlp` codec does not auto-wrap events.
# This transform builds the OTLP resourceLogs envelope Sazabi expects.
timestamp_nanos = to_unix_timestamp!(now(), unit: "nanoseconds")
service_name = .service.name ?? .service_name ?? .service ?? .app ?? .source_type ?? "vector"
severity_text = upcase(string!(.level ?? .severity ?? "INFO"))
.resourceLogs = [{
"resource": {
"attributes": [
{ "key": "service.name", "value": { "stringValue": service_name } },
{ "key": "host.name", "value": { "stringValue": .host ?? "" } }
]
},
"scopeLogs": [{
"scope": { "name": "vector" },
"logRecords": [{
"timeUnixNano": timestamp_nanos,
"body": { "stringValue": .message ?? encode_json(.) },
"severityText": severity_text
}]
}]
}]
sinks:
sazabi_logs:
type: opentelemetry
inputs: ["sazabi_logs_otlp"]
protocol:
type: http
uri: "https://<your intake host>/v1/logs"
method: post
encoding:
codec: otlpReplace <your intake host> with the hostname from your intake URL shown above.
The otlp codec does not build the OTLP envelope on its own — the remap
transform above is required to wrap events in the resourceLogs structure
before the sink serializes them.
Wire your actual sources
Replace inputs: ["*"] on the sazabi_logs_otlp transform with your specific source or transform IDs in production. ["*"] also matches internal_metrics and other unrelated components.
(Optional) Forward traces
To forward traces as well as logs, add a second opentelemetry sink whose uri ends in /v1/traces, with explicit inputs referencing an already-OTLP-shaped source — typically an opentelemetry Vector source with use_otlp_decoding.traces: true. No remap is needed for traces, and do not wire ["*"] into a traces sink:
sinks:
sazabi_traces:
type: opentelemetry
inputs: ["otlp_in.traces"]
protocol:
type: http
uri: "https://<your intake host>/v1/traces"
method: post
encoding:
codec: otlpSet up with the CLI
You can also register the Vector log source with the Sazabi CLI (installed and authenticated — see CLI reference).
Registering the source mints the same intake URL the dashboard shows above (the public key is embedded in its hostname):
sazabi log-sources create vector --mode connectionlessThe command prints the intake URL for the new source — copy the whole URL and point your sender at it using the configuration shown above. Run sazabi log-sources get <log-source-id> at any time to reprint the endpoint, or sazabi log-sources list to see every log source in the project.
Verify
Restart or redeploy Vector after updating the configuration. Open the Intake page in the Sazabi dashboard and confirm records from the Vector source appear within a minute or two.
Troubleshooting
No records after redeploying — Check Vector logs for errors on the sazabi_logs sink. Confirm the protocol.uri field includes the full https:// URL and /v1/logs path suffix.
Records arrive malformed — Confirm the sazabi_logs_otlp remap transform is listed in the sink's inputs, not the raw source. Without the transform, the sink receives events that are not wrapped in a resourceLogs envelope.
Metrics are silently dropped — Metrics sent to Sazabi's OTLP intake through this source are accepted but not stored. Use OpenTelemetry Metrics with an OTel Collector for metric data.
Version error — The otlp encoding codec requires Vector 0.51.0 or later. Upgrade Vector if you see an unknown codec error.