mirror of
https://github.com/microsoft/onefuzz.git
synced 2025-06-17 04:18:07 +00:00
address telemetry log message locality (#736)
This commit is contained in:
@ -4,7 +4,7 @@
|
|||||||
use super::afl;
|
use super::afl;
|
||||||
use anyhow::{Error, Result};
|
use anyhow::{Error, Result};
|
||||||
use onefuzz::jitter::delay_with_jitter;
|
use onefuzz::jitter::delay_with_jitter;
|
||||||
use onefuzz_telemetry::{track_event, Event::runtime_stats};
|
use onefuzz_telemetry::Event::runtime_stats;
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
pub const STATS_DELAY: std::time::Duration = std::time::Duration::from_secs(30);
|
pub const STATS_DELAY: std::time::Duration = std::time::Duration::from_secs(30);
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ pub async fn monitor_stats(path: Option<String>, format: Option<StatsFormat>) ->
|
|||||||
StatsFormat::AFL => afl::read_stats(&path).await,
|
StatsFormat::AFL => afl::read_stats(&path).await,
|
||||||
};
|
};
|
||||||
if let Ok(stats) = stats {
|
if let Ok(stats) = stats {
|
||||||
track_event(runtime_stats, stats);
|
log_events!(runtime_stats; stats);
|
||||||
}
|
}
|
||||||
delay_with_jitter(STATS_DELAY).await;
|
delay_with_jitter(STATS_DELAY).await;
|
||||||
}
|
}
|
||||||
|
@ -492,23 +492,22 @@ pub fn set_property(entry: EventData) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn local_log_event(event: &Event, properties: &[EventData]) {
|
pub fn format_events(events: &[EventData]) -> String {
|
||||||
let as_values = properties
|
events
|
||||||
.iter()
|
.iter()
|
||||||
.map(|x| x.as_values())
|
.map(|x| x.as_values())
|
||||||
.map(|(x, y)| format!("{}:{}", x, y))
|
.map(|(x, y)| format!("{}:{}", x, y))
|
||||||
.collect::<Vec<String>>()
|
.collect::<Vec<String>>()
|
||||||
.join(" ");
|
.join(" ")
|
||||||
log::log!(log::Level::Info, "{} {}", event.as_str(), as_values);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn track_event(event: Event, properties: Vec<EventData>) {
|
pub fn track_event(event: &Event, properties: &[EventData]) {
|
||||||
use appinsights::telemetry::Telemetry;
|
use appinsights::telemetry::Telemetry;
|
||||||
|
|
||||||
if let Some(client) = client(ClientType::Instance) {
|
if let Some(client) = client(ClientType::Instance) {
|
||||||
let mut evt = appinsights::telemetry::EventTelemetry::new(event.as_str());
|
let mut evt = appinsights::telemetry::EventTelemetry::new(event.as_str());
|
||||||
let props = evt.properties_mut();
|
let props = evt.properties_mut();
|
||||||
for property in &properties {
|
for property in properties {
|
||||||
let (name, val) = property.as_values();
|
let (name, val) = property.as_values();
|
||||||
props.insert(name.to_string(), val);
|
props.insert(name.to_string(), val);
|
||||||
}
|
}
|
||||||
@ -519,7 +518,7 @@ pub fn track_event(event: Event, properties: Vec<EventData>) {
|
|||||||
let mut evt = appinsights::telemetry::EventTelemetry::new(event.as_str());
|
let mut evt = appinsights::telemetry::EventTelemetry::new(event.as_str());
|
||||||
let props = evt.properties_mut();
|
let props = evt.properties_mut();
|
||||||
|
|
||||||
for property in &properties {
|
for property in properties {
|
||||||
if property.can_share_with_microsoft() {
|
if property.can_share_with_microsoft() {
|
||||||
let (name, val) = property.as_values();
|
let (name, val) = property.as_values();
|
||||||
props.insert(name.to_string(), val);
|
props.insert(name.to_string(), val);
|
||||||
@ -527,7 +526,6 @@ pub fn track_event(event: Event, properties: Vec<EventData>) {
|
|||||||
}
|
}
|
||||||
client.track(evt);
|
client.track(evt);
|
||||||
}
|
}
|
||||||
local_log_event(&event, &properties);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn to_log_level(level: &appinsights::telemetry::SeverityLevel) -> log::Level {
|
pub fn to_log_level(level: &appinsights::telemetry::SeverityLevel) -> log::Level {
|
||||||
@ -540,18 +538,24 @@ pub fn to_log_level(level: &appinsights::telemetry::SeverityLevel) -> log::Level
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn should_log(level: &appinsights::telemetry::SeverityLevel) -> bool {
|
|
||||||
to_log_level(level) <= log::max_level()
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn log_message(level: appinsights::telemetry::SeverityLevel, msg: String) {
|
pub fn log_message(level: appinsights::telemetry::SeverityLevel, msg: String) {
|
||||||
let log_level = to_log_level(&level);
|
|
||||||
log::log!(log_level, "{}", msg);
|
|
||||||
if let Some(client) = client(ClientType::Instance) {
|
if let Some(client) = client(ClientType::Instance) {
|
||||||
client.track_trace(msg, level);
|
client.track_trace(msg, level);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! log_events {
|
||||||
|
($name: expr; $events: expr) => {{
|
||||||
|
onefuzz_telemetry::track_event(&$name, &$events);
|
||||||
|
log::info!(
|
||||||
|
"{} {}",
|
||||||
|
$name.as_str(),
|
||||||
|
onefuzz_telemetry::format_events(&$events)
|
||||||
|
);
|
||||||
|
}};
|
||||||
|
}
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! event {
|
macro_rules! event {
|
||||||
($name: expr ; $($k: path = $v: expr),*) => {{
|
($name: expr ; $($k: path = $v: expr),*) => {{
|
||||||
@ -562,15 +566,17 @@ macro_rules! event {
|
|||||||
|
|
||||||
})*;
|
})*;
|
||||||
|
|
||||||
onefuzz_telemetry::track_event($name, events);
|
log_events!($name; events);
|
||||||
}};
|
}};
|
||||||
}
|
}
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! log {
|
macro_rules! log {
|
||||||
($level: expr, $($arg: tt)+) => {{
|
($level: expr, $($arg: tt)+) => {{
|
||||||
if onefuzz_telemetry::should_log(&$level) {
|
let log_level = onefuzz_telemetry::to_log_level(&$level);
|
||||||
|
if log_level <= log::max_level() {
|
||||||
let msg = format!("{}", format_args!($($arg)+));
|
let msg = format!("{}", format_args!($($arg)+));
|
||||||
|
log::log!(log_level, "{}", msg);
|
||||||
onefuzz_telemetry::log_message($level, msg.to_string());
|
onefuzz_telemetry::log_message($level, msg.to_string());
|
||||||
}
|
}
|
||||||
}};
|
}};
|
||||||
|
1
src/proxy-manager/Cargo.lock
generated
1
src/proxy-manager/Cargo.lock
generated
@ -1165,6 +1165,7 @@ dependencies = [
|
|||||||
"clap",
|
"clap",
|
||||||
"env_logger",
|
"env_logger",
|
||||||
"futures",
|
"futures",
|
||||||
|
"log",
|
||||||
"onefuzz-telemetry",
|
"onefuzz-telemetry",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
"reqwest-retry",
|
"reqwest-retry",
|
||||||
|
@ -21,3 +21,4 @@ url = { version = "2.2", features = ["serde"] }
|
|||||||
reqwest-retry = { path = "../agent/reqwest-retry"}
|
reqwest-retry = { path = "../agent/reqwest-retry"}
|
||||||
onefuzz-telemetry = { path = "../agent/onefuzz-telemetry" }
|
onefuzz-telemetry = { path = "../agent/onefuzz-telemetry" }
|
||||||
uuid = "0.8"
|
uuid = "0.8"
|
||||||
|
log = "0.4"
|
||||||
|
Reference in New Issue
Block a user