Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5fa83ba60d |
Generated
+25
-1
@@ -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
@@ -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
@@ -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())
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user