Skip to content
Open
Show file tree
Hide file tree
Changes from 36 commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
ff17cb8
unsolve 307 Temporary Redirect
bingquanzhao Apr 9, 2025
534f19b
fix redirect
bingquanzhao Apr 11, 2025
9b3cdba
u
bingquanzhao Apr 11, 2025
975c677
Complete the main code
bingquanzhao Apr 14, 2025
cf5ff46
fmt
bingquanzhao Apr 14, 2025
f603887
fix log fmt and annotation
bingquanzhao Apr 15, 2025
23491c1
Merge master into doris_sink and update dependencies
bingquanzhao Apr 18, 2025
027ce76
Resolve rebase conflicts with master branch
bingquanzhao Apr 26, 2025
1cfdbd8
fix client build request
bingquanzhao May 12, 2025
d899ae7
optimize
bingquanzhao May 13, 2025
ab7db3a
add buffer bound config
bingquanzhao May 19, 2025
8bf5dc6
fix
bingquanzhao May 21, 2025
bbe6326
modify integration test
bingquanzhao May 27, 2025
0192c15
fix
bingquanzhao May 28, 2025
ee9c302
feat(doris sink): add comprehensive documentation
bingquanzhao May 28, 2025
c0e2c50
chore: auto-format CUE files after documentation generation
bingquanzhao May 28, 2025
c375db8
fix
bingquanzhao May 28, 2025
26b9317
fmt
bingquanzhao May 28, 2025
0c8e5b8
changelog authors
bingquanzhao May 28, 2025
3476daa
Fix some error descriptions for doris.cue
bingquanzhao Jun 3, 2025
bf51c3c
modify the document sinks/doris.cue
bingquanzhao Jun 3, 2025
ea7aa9c
add health check auth
bingquanzhao Jul 9, 2025
9eb55ef
Reversing this action should not affect the modifications made to the…
bingquanzhao Jul 11, 2025
f8d7a0d
Merge branch 'master' into doris_sink
thomasqueirozb Sep 10, 2025
eb1e5e6
make fmt
bingquanzhao Sep 11, 2025
20085a8
fix unrecognized words
bingquanzhao Sep 11, 2025
750b803
Merge branch 'master' into doris_sink
pront Oct 15, 2025
cf88b49
Modify the code according to the review comments
bingquanzhao Oct 17, 2025
4149eac
use emit
bingquanzhao Oct 27, 2025
8f72bbd
fmt
bingquanzhao Oct 27, 2025
7137e05
u
bingquanzhao Oct 27, 2025
38a0176
u
bingquanzhao Nov 13, 2025
df9f5e3
fix Test Suit
bingquanzhao Nov 13, 2025
be278bb
fix CI
bingquanzhao Nov 14, 2025
9adfcd9
Merge branch 'master' into doris_sink
thomasqueirozb Dec 5, 2025
f83555a
Add NamedInternalEvent
thomasqueirozb Dec 10, 2025
4ed4b94
Merge branch 'master' into doris_sink
thomasqueirozb Dec 10, 2025
127ab55
Modify the code according to the review comments
bingquanzhao Dec 11, 2025
e3ee379
internal_metrics doc
bingquanzhao Dec 11, 2025
1b9b08a
Use UriSerde instead of string
bingquanzhao Dec 12, 2025
dc2e4e7
Merge branch 'master' into doris_sink
thomasqueirozb Dec 22, 2025
52cdd96
Fix integration test in ci and locally
thomasqueirozb Dec 22, 2025
b2977a6
Fix doris integration tests paths
thomasqueirozb Dec 22, 2025
90cdc4a
Apply suggestions from code review
thomasqueirozb Dec 22, 2025
62d4dd4
Further fix doris int tests but not completely
thomasqueirozb Dec 22, 2025
aeec78a
fix base url and integreation test
bingquanzhao Dec 25, 2025
d92e0df
add group commit fix
bingquanzhao Jan 4, 2026
ac9435e
make generate-component-docs
bingquanzhao Jan 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ seahash = { version = "4.1.0", default-features = false }
smallvec = { version = "1", default-features = false, features = ["union", "serde"] }
snap = { version = "1.1.1", default-features = false }
socket2.workspace = true
sqlx = { version = "0.8.6", default-features = false, features = ["derive", "postgres", "chrono", "runtime-tokio"], optional = true }
sqlx = { version = "0.8.6", default-features = false, features = ["derive", "postgres", "mysql", "chrono", "runtime-tokio"], optional=true }
stream-cancel = { version = "0.8.2", default-features = false }
strip-ansi-escapes = { version = "0.2.1", default-features = false }
syslog = { version = "6.1.1", default-features = false, optional = true }
Expand All @@ -436,6 +436,7 @@ heim = { git = "https://github.com/vectordotdev/heim.git", branch = "update-nix"
mlua = { version = "0.10.5", default-features = false, features = ["lua54", "send", "vendored", "macros"], optional = true }
sysinfo = "0.37.2"
byteorder = "1.5.0"
reqwest = { version = "0.11", features = ["blocking"] }

[target.'cfg(windows)'.dependencies]
windows-service = "0.8.0"
Expand Down Expand Up @@ -791,6 +792,7 @@ sinks-logs = [
"sinks-datadog_events",
"sinks-datadog_logs",
"sinks-datadog_traces",
"sinks-doris",
"sinks-elasticsearch",
"sinks-file",
"sinks-gcp",
Expand Down Expand Up @@ -858,6 +860,9 @@ sinks-datadog_events = []
sinks-datadog_logs = []
sinks-datadog_metrics = ["protobuf-build", "dep:prost", "dep:prost-reflect"]
sinks-datadog_traces = ["protobuf-build", "dep:prost", "dep:rmpv", "dep:rmp-serde", "dep:serde_bytes"]
sinks-doris = [
"dep:sqlx"
]
sinks-elasticsearch = ["transforms-metric_to_log"]
sinks-file = ["dep:async-compression"]
sinks-gcp = ["sinks-gcp-chronicle", "dep:base64", "gcp"]
Expand Down Expand Up @@ -911,6 +916,7 @@ all-integration-tests = [
"datadog-traces-integration-tests",
"dnstap-integration-tests",
"docker-logs-integration-tests",
"doris-integration-tests",
"es-integration-tests",
"eventstoredb_metrics-integration-tests",
"fluent-integration-tests",
Expand Down Expand Up @@ -976,6 +982,9 @@ datadog-logs-integration-tests = ["sinks-datadog_logs"]
datadog-metrics-integration-tests = ["sinks-datadog_metrics", "dep:prost"]
datadog-traces-integration-tests = ["sources-datadog_agent", "sinks-datadog_traces", "axum/tokio"]
docker-logs-integration-tests = ["sources-docker_logs", "unix"]
doris-integration-tests = [
"dep:sqlx"
]
es-integration-tests = ["sinks-elasticsearch", "aws-core"]
eventstoredb_metrics-integration-tests = ["sources-eventstoredb_metrics"]
fluent-integration-tests = ["docker", "sources-fluent"]
Expand Down
3 changes: 3 additions & 0 deletions changelog.d/doris_sink_support.feature.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Add new Apache Doris sink for sending log data to Apache Doris databases using the Stream Load API. The sink supports configurable batching, custom HTTP headers for Doris-specific options, authentication, rate limiting, adaptive concurrency control, and includes comprehensive health checks.

authors: bingquanzhao
13 changes: 13 additions & 0 deletions scripts/integration/doris/compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
version: "3"
services:
doris:
image: docker.io/yagagagaga/doris-standalone:${CONFIG_VERSION}
container_name: doris
restart: unless-stopped
privileged: true
ports:
- "8030"
- "9030"
- "8040"
environment:
- SKIP_CHECK_ULIMIT=true
17 changes: 17 additions & 0 deletions scripts/integration/doris/test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
features:
- sinks-doris

test_filter: '::doris::integration_test::'

env:
DORIS_ADDRESS: http://doris:8030

matrix:
version: ['2.1.7']

# changes to these files/paths will invoke the integration test in CI
# expressions are evaluated using https://github.com/micromatch/picomatch
paths:
- "src/sinks/doris/**"
- "src/sinks/util/**"
- "scripts/integration/doris/**"
44 changes: 44 additions & 0 deletions src/internal_events/doris.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
use metrics::counter;
use vector_lib::{NamedInternalEvent, internal_event::InternalEvent};

/// Emitted when rows are successfully loaded into Doris.
#[derive(Debug, NamedInternalEvent)]
pub struct DorisRowsLoaded {
pub loaded_rows: i64,
pub load_bytes: i64,
}

impl InternalEvent for DorisRowsLoaded {
fn emit(self) {
trace!(
message = "Doris rows loaded successfully.",
loaded_rows = %self.loaded_rows,
load_bytes = %self.load_bytes,
internal_log_rate_limit = true
);

// Record the number of rows loaded
counter!("doris_rows_loaded_total").increment(self.loaded_rows as u64);

// Record the number of bytes loaded
counter!("doris_bytes_loaded_total").increment(self.load_bytes as u64);
}
}

/// Emitted when rows are filtered by Doris during loading.
#[derive(Debug, NamedInternalEvent)]
pub struct DorisRowsFiltered {
pub filtered_rows: i64,
}

impl InternalEvent for DorisRowsFiltered {
fn emit(self) {
warn!(
message = "Doris rows filtered during loading.",
filtered_rows = %self.filtered_rows,
internal_log_rate_limit = true
);

counter!("doris_rows_filtered_total").increment(self.filtered_rows as u64);
}
}
4 changes: 4 additions & 0 deletions src/internal_events/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ mod demo_logs;
mod dnstap;
#[cfg(feature = "sources-docker_logs")]
mod docker_logs;
#[cfg(feature = "sinks-doris")]
mod doris;
mod encoding_transcode;
#[cfg(feature = "sources-eventstoredb_metrics")]
mod eventstoredb_metrics;
Expand Down Expand Up @@ -197,6 +199,8 @@ pub(crate) use self::demo_logs::*;
pub(crate) use self::dnstap::*;
#[cfg(feature = "sources-docker_logs")]
pub(crate) use self::docker_logs::*;
#[cfg(feature = "sinks-doris")]
pub(crate) use self::doris::*;
#[cfg(feature = "sources-eventstoredb_metrics")]
pub(crate) use self::eventstoredb_metrics::*;
#[cfg(feature = "sources-exec")]
Expand Down
Loading
Loading