1
0
mirror of https://github.com/chylex/Apache-Prometheus-Exporter.git synced 2025-05-01 09:34:06 +02:00

Create Prometheus labels for all files found at startup

This commit is contained in:
chylex 2023-01-07 17:44:49 +01:00
parent ae1046b6a5
commit 9d1059153d
Signed by: chylex
GPG Key ID: 4DE42C8F19A80548

View File

@ -20,6 +20,12 @@ struct LogFileInfo<'a> {
pub label: &'a String, pub label: &'a String,
} }
impl<'a> LogFileInfo<'a> {
fn get_label_set(&self) -> (&'static str, String) {
return ("file", self.label.clone());
}
}
pub async fn watch_logs_task(access_log_files: Vec<LogFilePath>, error_log_files: Vec<LogFilePath>, metrics: ApacheMetrics, shutdown_send: UnboundedSender<()>) { pub async fn watch_logs_task(access_log_files: Vec<LogFilePath>, error_log_files: Vec<LogFilePath>, metrics: ApacheMetrics, shutdown_send: UnboundedSender<()>) {
if let Err(error) = watch_logs(access_log_files, error_log_files, metrics).await { if let Err(error) = watch_logs(access_log_files, error_log_files, metrics).await {
println!("[LogWatcher] Error reading logs: {}", error); println!("[LogWatcher] Error reading logs: {}", error);
@ -58,6 +64,12 @@ impl<'a> LogWatcher<'a> {
println!("[LogWatcher] Watching {} access log file(s) and {} error log file(s).", self.count_files_of_kind(LogFileKind::Access), self.count_files_of_kind(LogFileKind::Error)); println!("[LogWatcher] Watching {} access log file(s) and {} error log file(s).", self.count_files_of_kind(LogFileKind::Access), self.count_files_of_kind(LogFileKind::Error));
for metadata in self.files.values() {
let label_set = metadata.get_label_set();
let _ = metrics.requests_total.get_or_create(&label_set);
let _ = metrics.errors_total.get_or_create(&label_set);
}
loop { loop {
if let Some(event) = self.reader.next_line().await? { if let Some(event) = self.reader.next_line().await? {
self.handle_line(event, metrics); self.handle_line(event, metrics);
@ -75,7 +87,7 @@ impl<'a> LogWatcher<'a> {
}; };
println!("[LogWatcher] Received {} line from \"{}\": {}", kind, label, event.line()); println!("[LogWatcher] Received {} line from \"{}\": {}", kind, label, event.line());
family.get_or_create(&("file", label.clone())).inc(); family.get_or_create(&metadata.get_label_set()).inc();
} }
None => { None => {
println!("[LogWatcher] Received line from unknown file: {}", event.source().display()); println!("[LogWatcher] Received line from unknown file: {}", event.source().display());