mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-08-12 09:19:44 +00:00
feat: Support export metric in remote write format (#2928)
* feat: remote write metric task * chore: pass stanalone task to frontend * chore: change name to system metric * fix: add header and rename to export metrics
This commit is contained in:
@@ -28,6 +28,7 @@ use meta_client::MetaClientOptions;
|
||||
use mito2::config::MitoConfig;
|
||||
use secrecy::SecretString;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use servers::export_metrics::ExportMetricsOption;
|
||||
use servers::heartbeat_options::HeartbeatOptions;
|
||||
use servers::http::HttpOptions;
|
||||
use servers::Mode;
|
||||
@@ -242,6 +243,7 @@ pub struct DatanodeOptions {
|
||||
pub region_engine: Vec<RegionEngineConfig>,
|
||||
pub logging: LoggingOptions,
|
||||
pub enable_telemetry: bool,
|
||||
pub export_metrics: ExportMetricsOption,
|
||||
}
|
||||
|
||||
impl Default for DatanodeOptions {
|
||||
@@ -267,6 +269,7 @@ impl Default for DatanodeOptions {
|
||||
logging: LoggingOptions::default(),
|
||||
heartbeat: HeartbeatOptions::datanode_default(),
|
||||
enable_telemetry: true,
|
||||
export_metrics: ExportMetricsOption::default(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,6 +43,7 @@ use mito2::engine::MitoEngine;
|
||||
use object_store::manager::{ObjectStoreManager, ObjectStoreManagerRef};
|
||||
use object_store::util::normalize_dir;
|
||||
use query::QueryEngineFactory;
|
||||
use servers::export_metrics::ExportMetricsTask;
|
||||
use servers::grpc::{GrpcServer, GrpcServerConfig};
|
||||
use servers::http::HttpServerBuilder;
|
||||
use servers::metrics_handler::MetricsHandler;
|
||||
@@ -84,6 +85,7 @@ pub struct Datanode {
|
||||
greptimedb_telemetry_task: Arc<GreptimeDBTelemetryTask>,
|
||||
leases_notifier: Option<Arc<Notify>>,
|
||||
plugins: Plugins,
|
||||
export_metrics_task: Option<ExportMetricsTask>,
|
||||
}
|
||||
|
||||
impl Datanode {
|
||||
@@ -95,6 +97,10 @@ impl Datanode {
|
||||
|
||||
self.start_telemetry();
|
||||
|
||||
if let Some(t) = self.export_metrics_task.as_ref() {
|
||||
t.start()
|
||||
}
|
||||
|
||||
self.start_services().await
|
||||
}
|
||||
|
||||
@@ -277,6 +283,10 @@ impl DatanodeBuilder {
|
||||
None
|
||||
};
|
||||
|
||||
let export_metrics_task =
|
||||
ExportMetricsTask::try_new(&self.opts.export_metrics, Some(&self.plugins))
|
||||
.context(StartServerSnafu)?;
|
||||
|
||||
Ok(Datanode {
|
||||
services,
|
||||
heartbeat_task,
|
||||
@@ -285,6 +295,7 @@ impl DatanodeBuilder {
|
||||
region_event_receiver,
|
||||
leases_notifier,
|
||||
plugins: self.plugins.clone(),
|
||||
export_metrics_task,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user