Working open telemetry
This commit is contained in:
32
src/main.rs
32
src/main.rs
@@ -1,10 +1,13 @@
|
||||
use opentelemetry_otlp::WithExportConfig;
|
||||
use opentelemetry_sdk::Resource;
|
||||
use ovlach_pdf::rocket_builder;
|
||||
use rocket::launch;
|
||||
|
||||
|
||||
use opentelemetry::trace::TracerProvider as _;
|
||||
use opentelemetry_sdk::trace::TracerProvider;
|
||||
use opentelemetry::trace::{TracerProvider as _, TraceError};
|
||||
use opentelemetry_sdk::trace::{TracerProvider, Config};
|
||||
use opentelemetry_stdout as stdout;
|
||||
use tokio::net::unix::pipe;
|
||||
use tracing::{error, span};
|
||||
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
|
||||
use tracing_subscriber::Registry;
|
||||
@@ -28,6 +31,23 @@ fn init_meterprovider() -> MeterProvider {
|
||||
}
|
||||
|
||||
|
||||
fn init_tracer() -> Result<opentelemetry_sdk::trace::Tracer, TraceError> {
|
||||
opentelemetry_otlp::new_pipeline()
|
||||
.tracing()
|
||||
.with_exporter(
|
||||
opentelemetry_otlp::new_exporter()
|
||||
.tonic()
|
||||
.with_endpoint("http://localhost:4317"),
|
||||
)
|
||||
.with_trace_config(
|
||||
opentelemetry_sdk::trace::config().with_resource(Resource::new(vec![KeyValue::new(
|
||||
opentelemetry_semantic_conventions::resource::SERVICE_NAME,
|
||||
"ovlach_pdf",
|
||||
)])),
|
||||
)
|
||||
.install_batch(runtime::Tokio)
|
||||
//.install_simple()
|
||||
}
|
||||
|
||||
#[rocket::main]
|
||||
async fn main() {
|
||||
@@ -36,8 +56,12 @@ async fn main() {
|
||||
.with_simple_exporter(logger)
|
||||
.build();
|
||||
|
||||
let telemetry = tracing_opentelemetry::layer().with_tracer(provider.tracer("default"));
|
||||
let meter_provider = init_meterprovider();
|
||||
let telemetry = tracing_opentelemetry::layer().with_tracer(
|
||||
provider.tracer("default")
|
||||
).with_tracer(
|
||||
init_tracer().unwrap()
|
||||
);
|
||||
let meter_provider = init_meterprovider();
|
||||
Registry::default().with(telemetry).init();
|
||||
let _ = rocket_builder().launch().await;
|
||||
}
|
||||
@@ -5,14 +5,17 @@ use std::io::prelude::*;
|
||||
use headless_chrome::Browser;
|
||||
use headless_chrome::{types::PrintToPdfOptions, LaunchOptions};
|
||||
use rocket::{get, Response, futures::Stream, tokio::net::UnixStream, fs::NamedFile};
|
||||
use tracing::{info_span, debug, info, error};
|
||||
use tracing::{info_span, debug, info, error, Span, instrument};
|
||||
|
||||
use crate::chromium::rocket::BrowserHolder;
|
||||
use crate::tools::rocket::TracingSpan;
|
||||
|
||||
fn generate_pdf(browser: Browser) {
|
||||
let tab = browser.new_tab().unwrap();
|
||||
let tab = tab.navigate_to("file:///home/6a6996c0-1609-48b6-8ca6-affbef1b4d1d/Devel/Nanobyte/ovlach/ovlach_pdf/template.html").unwrap().wait_until_navigated().unwrap();
|
||||
info_span!("open_pdf").in_scope(|| {
|
||||
tab.navigate_to("file:///home/6a6996c0-1609-48b6-8ca6-affbef1b4d1d/Devel/Nanobyte/ovlach/ovlach_pdf/template.html").unwrap().wait_until_navigated().unwrap();
|
||||
});
|
||||
|
||||
let options = PrintToPdfOptions{
|
||||
margin_bottom: Some(0.0),
|
||||
margin_left: Some(0.0),
|
||||
@@ -26,25 +29,29 @@ fn generate_pdf(browser: Browser) {
|
||||
|
||||
//thread::sleep(Duration::from_secs(10));
|
||||
|
||||
let bytes = tab.print_to_pdf(Some(options)).unwrap();
|
||||
let mut file = fs::OpenOptions::new()
|
||||
// .create(true) // To create a new file
|
||||
.write(true)
|
||||
// either use the ? operator or unwrap since it returns a Result
|
||||
.open("/tmp/foo.pdf").unwrap();
|
||||
file.write_all(&bytes).unwrap();
|
||||
let bytes = info_span!("print_pdf").in_scope(|| {
|
||||
tab.print_to_pdf(Some(options)).unwrap()
|
||||
});
|
||||
|
||||
info_span!("write_temporary_file").in_scope(|| {
|
||||
let mut file = fs::OpenOptions::new()
|
||||
// .create(true) // To create a new file
|
||||
.write(true)
|
||||
// either use the ? operator or unwrap since it returns a Result
|
||||
.open("/tmp/foo.pdf").unwrap();
|
||||
file.write_all(&bytes).unwrap();
|
||||
});
|
||||
}
|
||||
|
||||
#[get("/cv/<username>/pdf")]
|
||||
pub async fn render_pdf_cv(username: &str, browser: BrowserHolder, tracing: TracingSpan) -> NamedFile {
|
||||
let entered_span = tracing.0.enter();
|
||||
let span = info_span!("render_pdf", username = username);
|
||||
let entered_inner_span = span.enter();
|
||||
info!("generate PDF");
|
||||
generate_pdf(browser.browser);
|
||||
span.in_scope(||{
|
||||
generate_pdf(browser.browser);
|
||||
});
|
||||
info!("done generating");
|
||||
drop(entered_inner_span);
|
||||
drop(entered_span);
|
||||
"foo!".to_string();
|
||||
NamedFile::open("/tmp/foo.pdf").await.expect("failed to open foo.pdf")
|
||||
}
|
||||
Reference in New Issue
Block a user