1 Commits

5 changed files with 70 additions and 12 deletions
Generated
+25 -1
View File
@@ -4,13 +4,15 @@ version = 4
[[package]]
name = "RhythmWorks"
version = "0.6.0"
version = "0.7.0"
dependencies = [
"color-eyre",
"crossterm",
"dialoguer",
"keyring",
"opentelemetry 0.27.1",
"opentelemetry-appender-log",
"opentelemetry-appender-tracing",
"opentelemetry-otlp",
"opentelemetry-proto",
"opentelemetry-semantic-conventions",
@@ -2560,6 +2562,28 @@ dependencies = [
"thiserror 2.0.17",
]
[[package]]
name = "opentelemetry-appender-log"
version = "0.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "892c3a3fe0cf009cc180366347bfa134c662f028039bce8aa35994830c68c84f"
dependencies = [
"log",
"opentelemetry 0.27.1",
]
[[package]]
name = "opentelemetry-appender-tracing"
version = "0.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab5feffc321035ad94088a7e5333abb4d84a8726e54a802e736ce9dd7237e85b"
dependencies = [
"opentelemetry 0.27.1",
"tracing",
"tracing-core",
"tracing-subscriber",
]
[[package]]
name = "opentelemetry-http"
version = "0.27.0"
+5 -3
View File
@@ -1,6 +1,6 @@
[package]
name = "RhythmWorks"
version = "0.6.0"
version = "0.7.0"
edition = "2024"
[dependencies]
@@ -9,10 +9,12 @@ crossterm = "0.29.0"
dialoguer = "0.12.0"
keyring = { version = "3.6.3", features = ["linux-native", "windows-native"] }
opentelemetry = { version = "0.27.0", features = ["logs", "metrics", "trace"] }
opentelemetry-otlp = { version = "0.27.0", features = ["trace", "metrics", "grpc-tonic", "http-proto", "tls", "reqwest-client", "reqwest-rustls"] }
opentelemetry-appender-log = "0.27.0"
opentelemetry-appender-tracing = "0.27.0"
opentelemetry-otlp = { version = "0.27.0", features = ["trace", "metrics", "grpc-tonic", "http-proto", "tls", "reqwest-client", "reqwest-rustls", "logs"] }
opentelemetry-proto = "0.27.0"
opentelemetry-semantic-conventions = "0.27.0"
opentelemetry_sdk = { version = "0.27.0", features = ["rt-tokio", "trace"] }
opentelemetry_sdk = { version = "0.27.0", features = ["logs", "rt-tokio", "trace"] }
ratatui = { version = "0.30.0", features = ["all-widgets"] }
reqwest = { version = "0.12.28", features = ["blocking", "json"] }
semver = "1.0.27"
+15 -1
View File
@@ -18,11 +18,17 @@ use songbird::events::EventHandler as VoiceEventHandler;
use songbird::get;
use songbird::input::HlsRequest;
use songbird::input::Input;
use tracing::instrument;
use std::env;
use std::process::Command;
use std::process::Stdio;
use tokio::task::JoinHandle;
use tokio_util::sync::CancellationToken;
use tracing::level_filters::LevelFilter;
use tracing_subscriber::Layer;
use tracing_subscriber::filter::Targets;
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::util::SubscriberInitExt;
pub mod modules;
enum BotState {
@@ -89,6 +95,7 @@ impl EventHandler for Handler {
let cx = opentelemetry::Context::current_with_span(span);
let guild_id = match msg.guild_id {
Some(g) => {
tracing::info!("Received Guild ID");
cx.span().add_event(
"Received Guild ID",
vec![KeyValue::new("Server ID", g.to_string())],
@@ -387,8 +394,15 @@ async fn main() {
This program comes with ABSOLUTELY NO WARRANTY\n
This is free software, and you are welcome to redistribute it under certain conditions."
);
let tracer_provider = telemetry::init_telemetry();
let (tracer_provider, logger_provider) = telemetry::init_telemetry();
global::set_tracer_provider(tracer_provider.clone());
let filter = Targets::new()
.with_target("RhythmWorks", LevelFilter::INFO)
.with_default(LevelFilter::OFF);
let otel_log_layer =
opentelemetry_appender_tracing::layer::OpenTelemetryTracingBridge::new(&logger_provider)
.with_filter(filter);
tracing_subscriber::registry().with(otel_log_layer).init();
let tracer: global::BoxedTracer = global::tracer("tracer");
tracer
.in_span("Checking for Updates", |_cx| updator::update())
+23 -5
View File
@@ -1,9 +1,13 @@
use opentelemetry::KeyValue;
use opentelemetry::global;
use opentelemetry_otlp::{WithExportConfig, WithTonicConfig};
use opentelemetry_sdk::{Resource, runtime};
use opentelemetry_sdk::{Resource, logs, runtime};
use tonic::transport::{Channel, ClientTlsConfig};
pub fn init_telemetry() -> opentelemetry_sdk::trace::TracerProvider {
pub fn init_telemetry() -> (
opentelemetry_sdk::trace::TracerProvider,
opentelemetry_sdk::logs::LoggerProvider,
) {
let endpoint = "https://signoz.racooncity.org".to_string();
let channel = Channel::from_shared(endpoint.clone())
.unwrap()
@@ -13,14 +17,28 @@ pub fn init_telemetry() -> opentelemetry_sdk::trace::TracerProvider {
let exporter = opentelemetry_otlp::SpanExporter::builder()
.with_tonic()
.with_endpoint(endpoint.clone())
.with_channel(channel)
.with_channel(channel.clone())
.build()
.expect("Failed to Build Exporter");
opentelemetry_sdk::trace::TracerProvider::builder()
let log_exporter = opentelemetry_otlp::LogExporter::builder()
.with_tonic()
.with_endpoint(endpoint.clone())
.with_channel(channel.clone())
.build()
.expect("Failed to build log exporter");
let logger_provider = logs::LoggerProvider::builder()
.with_resource(Resource::new(vec![KeyValue::new(
"service.name",
"RhythmWorks",
)]))
.with_batch_exporter(log_exporter, runtime::Tokio)
.build();
let tracer_provider = opentelemetry_sdk::trace::TracerProvider::builder()
.with_batch_exporter(exporter, runtime::Tokio)
.with_resource(Resource::new(vec![KeyValue::new(
"service.name",
"RhythmWorks",
)]))
.build()
.build();
(tracer_provider, logger_provider)
}
+2 -2
View File
@@ -10,7 +10,7 @@ struct Release {
pub async fn update() {
let body = reqwest::get(
"https://git.racooncity.org/api/v1/repos/brotoskyj/RhythmWorks/releases/latest",
"https://git.racooncity.org/api/v1/repos/mysticmomba/RhythmWorks/releases/latest",
)
.await
.unwrap()
@@ -22,7 +22,7 @@ pub async fn update() {
let current_version = Version::parse(env!("CARGO_PKG_VERSION")).unwrap();
if latest_version > current_version {
println!("Update Available! Please download the latest version");
println!("URL: https://git.racooncity.org/brotoskyj/RhythmWorks/releases");
println!("URL: https://git.racooncity.org/mysticmomba/RhythmWorks/releases");
thread::sleep(std::time::Duration::from_secs(10));
std::process::exit(1);
}