Skip to content

Commit

Permalink
WIP reorg metrics code
Browse files Browse the repository at this point in the history
  • Loading branch information
the2pizza committed Nov 28, 2024
1 parent 143c508 commit 12c61ed
Show file tree
Hide file tree
Showing 15 changed files with 156 additions and 41 deletions.
122 changes: 121 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ time = "0.3"
tonic = "0.12"
prost = "0.13"
prost-derive = "0.13"
zmq = "0.10"

[build-dependencies]
tonic-build = "0.12"
Expand Down
14 changes: 7 additions & 7 deletions src/clickhouse.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ pub async fn fetch_metrics_value(
) -> Result<Vec<MetricValue>, Box<dyn Error>> {
let metric_value_req = format!(
"SELECT
toInt64(toUnixTimestamp(toDateTime(anyLast(Timestamp)))) AS latest,
Path AS metric,
toFloat64(anyLast(Value)) AS value
FROM default.graphite_data
WHERE metric LIKE '{env}.{cluster}%.{metric_postfix}'
AND Timestamp >= now() - INTERVAL {fetch_interval} MINUTE
GROUP BY metric"
toInt64(toUnixTimestamp(toDateTime(anyLast(Timestamp)))) AS latest,
Path AS metric,
toFloat64(anyLast(Value)) AS value
FROM default.graphite_data
WHERE metric LIKE '{env}.{cluster}%.{metric_postfix}'
AND Timestamp >= now() - INTERVAL {fetch_interval} MINUTE
GROUP BY metric"
);

debug!("Running query - {metric_value_req}");
Expand Down
31 changes: 12 additions & 19 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,28 +10,23 @@ use std::fmt;
use std::sync::Arc;
use tokio::task::JoinHandle;

mod bandwidth;
mod clickhouse;
mod config2;
mod connections;
mod cpuusage;
mod geoip;
mod loadavg;
mod memory;
mod metrics;
mod utils;
mod web;
mod webhook;
mod xray_api;
mod xray_op;

use crate::bandwidth::bandwidth_metrics;
use crate::config2::{read_config, Settings};
use crate::connections::connections_metric;
use crate::cpuusage::cpu_metrics;
use crate::metrics::bandwidth::bandwidth_metrics;
use crate::metrics::connections::connections_metric;
use crate::metrics::cpuusage::cpu_metrics;
use crate::metrics::loadavg::loadavg_metrics;
use crate::metrics::memory::mem_metrics;

use crate::loadavg::loadavg_metrics;
use crate::memory::mem_metrics;
use crate::utils::{current_timestamp, human_readable_date, level_from_settings};
use crate::web::not_found;

Expand Down Expand Up @@ -82,12 +77,12 @@ async fn main() -> std::io::Result<()> {

let carbon_server = settings.carbon.address.clone();

//if settings.app.metrics_mode && settings.app.api_mode
// || !settings.app.metrics_mode && !settings.app.api_mode
//{
// error!("Api and metrics mode enabled in the same time, choose mode");
// std::process::exit(1);
//}
if settings.app.metrics_mode && settings.app.api_mode
|| !settings.app.metrics_mode && !settings.app.api_mode
{
error!("Api and metrics mode enabled in the same time, choose mode");
std::process::exit(1);
}

let mut tasks: Vec<JoinHandle<()>> = vec![];

Expand Down Expand Up @@ -141,11 +136,9 @@ async fn main() -> std::io::Result<()> {
}

if settings.app.xray_api_mode {
let _settings_clone = settings.clone();

let xray_api_clients = match xray_op::client::create_clients(settings).await {
Ok(clients) => clients,
Err(e) => panic!("Не удалось создать клиентов: {}", e),
Err(e) => panic!("Can't create clients: {}", e),
};

let user_info = xray_op::vmess::UserInfo {
Expand Down
2 changes: 1 addition & 1 deletion src/bandwidth.rs → src/metrics/bandwidth.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use sysinfo::Networks;
use tokio::time::sleep;

use crate::config2::Settings;
use crate::metrics::{AsMetric, Metric};
use crate::metrics::metrics::{AsMetric, Metric};
use crate::utils::{current_timestamp, send_to_carbon};

#[derive(Debug)]
Expand Down
2 changes: 1 addition & 1 deletion src/connections.rs → src/metrics/connections.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use tokio::task::JoinHandle;
use tokio::time::sleep;

use crate::config2::Settings;
use crate::metrics::{AsMetric, Metric};
use crate::metrics::metrics::{AsMetric, Metric};
use crate::utils::{country, current_timestamp, send_to_carbon};

#[derive(Hash, Eq, PartialEq, Clone, Debug)]
Expand Down
2 changes: 1 addition & 1 deletion src/cpuusage.rs → src/metrics/cpuusage.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use sysinfo::{CpuRefreshKind, RefreshKind, System};
use tokio::time::sleep;

use crate::config2::Settings;
use crate::metrics::{AsMetric, Metric};
use crate::metrics::metrics::{AsMetric, Metric};
use crate::utils::{current_timestamp, round_to_two_decimal_places, send_to_carbon};

struct CpuUsage<'a> {
Expand Down
2 changes: 1 addition & 1 deletion src/loadavg.rs → src/metrics/loadavg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use sysinfo::{LoadAvg, System};
use tokio::time::sleep;

use crate::config2::Settings;
use crate::metrics::{AsMetric, Metric};
use crate::metrics::metrics::{AsMetric, Metric};
use crate::utils::{current_timestamp, send_to_carbon};

struct LoadAvgWrapper {
Expand Down
2 changes: 1 addition & 1 deletion src/memory.rs → src/metrics/memory.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use sysinfo::{MemoryRefreshKind, System};
use tokio::time::sleep;

use crate::config2::Settings;
use crate::metrics::{AsMetric, Metric};
use crate::metrics::metrics::{AsMetric, Metric};
use crate::utils::{current_timestamp, send_to_carbon};

struct MemUsage {
Expand Down
File renamed without changes.
6 changes: 6 additions & 0 deletions src/metrics/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
pub mod bandwidth;
pub mod connections;
pub mod cpuusage;
pub mod loadavg;
pub mod memory;
pub mod metrics;
7 changes: 3 additions & 4 deletions src/utils.rs
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
use chrono::{TimeZone, Utc};
use log::{error, info, warn, LevelFilter};
use std::error::Error;
use std::io;
use std::net::IpAddr;
use std::net::SocketAddr;

use chrono::{TimeZone, Utc};
use std::time::{SystemTime, UNIX_EPOCH};
use tokio::io::AsyncWriteExt;
use tokio::net::TcpStream;

use crate::geoip;
use crate::metrics::Metric;
use std::net::IpAddr;
use crate::metrics::metrics::Metric;

pub async fn send_to_carbon<T: ToString>(
metric: &Metric<T>,
Expand Down
2 changes: 1 addition & 1 deletion src/webhook.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use std::str::FromStr;
use std::sync::Arc;

use crate::config2::Settings;
use crate::metrics::{AsMetric, Metric};
use crate::metrics::metrics::{AsMetric, Metric};
use crate::utils::send_to_carbon;

#[derive(Deserialize)]
Expand Down
3 changes: 0 additions & 3 deletions src/xray_op/client.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
use crate::config2::Settings;
use crate::xray_api::xray::app::proxyman::command::handler_service_client::HandlerServiceClient;
use crate::xray_api::xray::app::stats::command::stats_service_client::StatsServiceClient;
use crate::xray_api::xray::app::stats::command::GetStatsRequest;
use crate::xray_api::xray::app::stats::command::GetStatsResponse;
use std::sync::Arc;
use tokio::sync::Mutex;
use tonic::transport::Channel;
use tonic::Request;

#[derive(Clone)]
pub struct XrayClients {
Expand Down
1 change: 0 additions & 1 deletion src/xray_op/vmess.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ use crate::xray_api::xray::app::proxyman::command::{
AddUserOperation, AlterInboundRequest, RemoveUserOperation,
};

use std::sync::Arc;
use tonic::Request;

use crate::xray_api::xray::common::protocol::User;
Expand Down

0 comments on commit 12c61ed

Please sign in to comment.