aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorHazel Atkinson <yellowsink@riseup.net>2025-04-04 16:21:49 +0100
committerHazel Atkinson <yellowsink@riseup.net>2025-04-04 16:21:49 +0100
commit01e8739edec3979a32c94df3eced77b04db83c26 (patch)
tree707956822a8fcef50de34c6c99f8437418e96b47 /src/main.rs
parent9b56e89c21b2348d1381bc2d48a11eaf563dfa75 (diff)
downloadcontainerspy-01e8739edec3979a32c94df3eced77b04db83c26.tar.gz
containerspy-01e8739edec3979a32c94df3eced77b04db83c26.tar.bz2
containerspy-01e8739edec3979a32c94df3eced77b04db83c26.zip
docker event loop
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs34
1 files changed, 22 insertions, 12 deletions
diff --git a/src/main.rs b/src/main.rs
index 3e1b75c..9763138 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -5,13 +5,14 @@ use bollard::Docker;
use config::CONFIG;
use opentelemetry::{metrics::MeterProvider, KeyValue};
use opentelemetry_otlp::{MetricExporter, Protocol, WithExportConfig};
-use opentelemetry_sdk::{metrics::SdkMeterProvider, Resource};
+use opentelemetry_sdk::{metrics::SdkMeterProvider, resource::{ResourceDetector, SdkProvidedResourceDetector}, Resource};
+use tokio_util::sync::CancellationToken;
mod config;
#[tokio::main(flavor = "current_thread")]
async fn main() -> Result<()> {
- /* // open a docker connection
+ // open a docker connection
let docker =
if let Some(path) = &CONFIG.docker_socket {
Docker::connect_with_socket(path, 60, bollard::API_DEFAULT_VERSION)?
@@ -22,7 +23,7 @@ async fn main() -> Result<()> {
let info = docker.info().await?;
- println!("Connected to Docker Daemon version {:?}", info.server_version); */
+ println!("Connected to Docker Daemon version {:?}", info.server_version);
// connect the OTLP exporter
let metric_exporter =
@@ -53,21 +54,30 @@ async fn main() -> Result<()> {
},
};
- //let test_resource = Resource::builder().with_service_name("containerspy").build();
-
let meter_provider = SdkMeterProvider::builder()
- //.with_resource(test_resource)
- //.with_periodic_exporter(opentelemetry_stdout::MetricExporter::default())
.with_periodic_exporter(metric_exporter)
.build();
- let m = meter_provider
- .meter("test_meter")
- .u64_gauge("testing_gauge")
- .build();
+ // fetch-report loop with graceful shutdown
+ let shutdown_token = CancellationToken::new();
+ let st2 = shutdown_token.clone(); // to be moved into the task
+
+ tokio::spawn(async move {
+ tokio::signal::ctrl_c().await.expect("Failed to setup ctrl-c handler");
+ st2.cancel();
+ });
- m.record(10, &[KeyValue::new("label", 4)]);
+ let mut interval = tokio::time::interval(Duration::from_secs(1));
+
+ loop {
+ tokio::select! {
+ _ = interval.tick() => {}
+ _ = shutdown_token.cancelled() => { break }
+ }
+ let list_res = docker.list_containers::<String>(None).await?;
+ println!("{list_res:?}");
+ }
Ok(())
}