1 Commits

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