Support for stderr output in TRACE log level (#25)
* exported stderr * version bump
This commit is contained in:
parent
8b3b015492
commit
ceeea75b3c
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "prometheus_wireguard_exporter"
|
||||
version = "3.2.3"
|
||||
version = "3.2.4"
|
||||
authors = ["Francesco Cogno <francesco.cogno@outlook.com>"]
|
||||
description = "Prometheus WireGuard Exporter"
|
||||
edition = "2018"
|
||||
@ -25,5 +25,5 @@ failure = "0.1.5"
|
||||
hyper = { version = "0.13.0-alpha.4" , features = ["unstable-stream"] }
|
||||
http = "0.1.17"
|
||||
tokio = "0.2.0-alpha.6"
|
||||
prometheus_exporter_base = { version = "0.30.1" }
|
||||
prometheus_exporter_base = { version = "0.30.2" }
|
||||
regex = "1.3.1"
|
||||
|
@ -4,11 +4,11 @@
|
||||
|
||||
[![Crate](https://img.shields.io/crates/v/prometheus_wireguard_exporter.svg)](https://crates.io/crates/prometheus_wireguard_exporter) [![cratedown](https://img.shields.io/crates/d/prometheus_wireguard_exporter.svg)](https://crates.io/crates/prometheus_wireguard_exporter) [![cratelastdown](https://img.shields.io/crates/dv/prometheus_wireguard_exporter.svg)](https://crates.io/crates/prometheus_wireguard_exporter)
|
||||
|
||||
[![release](https://img.shields.io/github/release/MindFlavor/prometheus_wireguard_exporter.svg)](https://github.com/MindFlavor/prometheus_wireguard_exporter/tree/3.2.3)
|
||||
[![tag](https://img.shields.io/github/tag/mindflavor/prometheus_wireguard_exporter.svg)](https://github.com/MindFlavor/prometheus_wireguard_exporter/tree/3.2.3)
|
||||
[![release](https://img.shields.io/github/release/MindFlavor/prometheus_wireguard_exporter.svg)](https://github.com/MindFlavor/prometheus_wireguard_exporter/tree/3.2.4)
|
||||
[![tag](https://img.shields.io/github/tag/mindflavor/prometheus_wireguard_exporter.svg)](https://github.com/MindFlavor/prometheus_wireguard_exporter/tree/3.2.4)
|
||||
|
||||
[![Build Status](https://travis-ci.org/MindFlavor/prometheus_wireguard_exporter.svg?branch=master)](https://travis-ci.org/MindFlavor/prometheus_wireguard_exporter)
|
||||
[![commitssince](https://img.shields.io/github/commits-since/mindflavor/prometheus_wireguard_exporter/3.2.3.svg)](https://img.shields.io/github/commits-since/mindflavor/prometheus_wireguard_exporter/3.2.3.svg)
|
||||
[![commitssince](https://img.shields.io/github/commits-since/mindflavor/prometheus_wireguard_exporter/3.2.4.svg)](https://img.shields.io/github/commits-since/mindflavor/prometheus_wireguard_exporter/3.2.4.svg)
|
||||
|
||||
## Intro
|
||||
|
||||
|
28
src/main.rs
28
src/main.rs
@ -23,13 +23,13 @@ use std::sync::Arc;
|
||||
|
||||
fn wg_with_text(
|
||||
wg_config_str: &str,
|
||||
wg_output_str: &str,
|
||||
wg_output_stdout_str: &str,
|
||||
options: Arc<Options>,
|
||||
) -> Result<String, failure::Error> {
|
||||
let pehm = peer_entry_hashmap_try_from(wg_config_str)?;
|
||||
trace!("pehm == {:?}", pehm);
|
||||
|
||||
let wg = WireGuard::try_from(wg_output_str)?;
|
||||
let wg = WireGuard::try_from(wg_output_stdout_str)?;
|
||||
Ok(wg.render_with_names(
|
||||
Some(&pehm),
|
||||
options.separate_allowed_ips,
|
||||
@ -61,30 +61,40 @@ async fn perform_request(
|
||||
.arg(&interface_str)
|
||||
.arg("dump")
|
||||
.output()?;
|
||||
let output_str = String::from_utf8(output.stdout)?;
|
||||
trace!("wg show output == {}", output_str);
|
||||
let output_stdout_str = String::from_utf8(output.stdout)?;
|
||||
trace!(
|
||||
"wg show {} dump stdout == {}",
|
||||
interface_str,
|
||||
output_stdout_str
|
||||
);
|
||||
let output_stderr_str = String::from_utf8(output.stderr)?;
|
||||
trace!(
|
||||
"wg show {} dump stderr == {}",
|
||||
interface_str,
|
||||
output_stderr_str
|
||||
);
|
||||
|
||||
// the output of wg show is different if we use all or we specify an interface.
|
||||
// In the first case the first column will be the interface name. In the second case
|
||||
// the interface name will be omitted. We need to compensate for the skew somehow (one
|
||||
// column less in the second case). We solve this prepending the interface name in every
|
||||
// line so the output of the second case will be equal to the first case.
|
||||
let output_str = if interface_str != "all" {
|
||||
let output_stdout_str = if interface_str != "all" {
|
||||
debug!("injecting {} to the wg show output", interface_str);
|
||||
let mut result = String::new();
|
||||
for s in output_str.lines() {
|
||||
for s in output_stdout_str.lines() {
|
||||
result.push_str(&format!("{}\t{}\n", interface_str, s));
|
||||
}
|
||||
result
|
||||
} else {
|
||||
output_str
|
||||
output_stdout_str
|
||||
};
|
||||
|
||||
if let Some(extract_names_config_file) = &options.extract_names_config_file {
|
||||
let wg_config_string = ::std::fs::read_to_string(extract_names_config_file)?;
|
||||
wg_with_text(&wg_config_string as &str, &output_str, options)
|
||||
wg_with_text(&wg_config_string as &str, &output_stdout_str, options)
|
||||
} else {
|
||||
let wg = WireGuard::try_from(&output_str as &str)?;
|
||||
let wg = WireGuard::try_from(&output_stdout_str as &str)?;
|
||||
Ok(wg.render_with_names(
|
||||
None,
|
||||
options.separate_allowed_ips,
|
||||
|
Loading…
Reference in New Issue
Block a user