[pbs-devel] [PATCH proxmox/proxmox-backup v4] add metrics server capability

Matthias Heiserer m.heiserer at proxmox.com
Tue Feb 1 12:01:19 CET 2022


The patch generally works (connecting with influxdb server, sending 
data, using api to create config), but some issues/suggestions:

Passing a value to the --enable in api create parameter always results 
in an error:
"Error: parameter verification errors
parameter 'enable': Expected boolean value."

Some personal preferences: I'd prefer if "api get" showed whether a 
token was set in the config, instead of leaving the field blank.

When adding a metricserver via "api create" using an already existing 
id, the old server gets overwritten. This might be 
undesired/problematic. Potential fix would be to forbid creating metric 
servers with an existing id.

On 17.01.2022 11:48, Dominik Csapak wrote:
> this series adds support for exporting metrics data to external
> metric servers.
> 
> for now this includes only data we gather for RRD, though it should
> not be hard to extend that functionality
> 
> also only influxdb (udp/http(s)) is currently supported, but it should
> also not be too hard to include more options here
> 
> i did not include gui/cli patches yet, as i find the
> proxmox-backup-manager options are already too much and i waited for
> the gui for some feedback.
> 
> for testing, the metric servers can be added either by
> calling 'proxmox-backup debug api ...' or by manually editing the
> file
> 
> ofc, proxmox-backup depends on bumped versions of the proxmox-* crates
> 
> changes from v3:
> * rebase on master
> * introduced helper functions instead of InfluxDBHttp::new
> * start tokio task directly in the helper
> * combine channel close + join
> * fix api description
> * combine host/port/protocol in the api types
> * introduce a connect_to_udp helper
> * use NixPath in the fs_info helper
> 
> changes from v2:
> * rebase on master
> * rustfmt
> * clippy (fixed not everything)
> * renamed DiskUsage in proxmox-sys and added some more fields
> * added 'enable' property for the config (like we have in pve)
> * subtracted 50bytes from mtu in the udp variant (for ip header)
> 
> changes from v1:
> * fixed ipv6 support for udp (tested it this time ;) )
> * dropped the 'flush' functionality of the MetricsChannel, but kept the
>    wrapper struct: it did not do what i intended, and after rethinking it,
>    turns out it's not necessary (as we autoflush when the data gets to large,
>    or when we close the channel). kept the struct so that the interface
>    can stay the same even if we want to implement a manual flush in the future
> * improved the influxdb line formatter
> * removed variables like 'names2' by reorganizing the code
> * used Arc::clone(&foo) instead of foo.clone() (better visibilty)
> * used CamelCase for the DeletableProperties
> 
> proxmox:
> 
> Dominik Csapak (4):
>    proxmox-sys: make some structs serializable
>    proxmox-sys: add FileSystemInformation struct and helper
>    proxmox-async: add connect_to_udp helper
>    proxmox-metrics: implement metrics server client code
> 
>   Cargo.toml                            |   1 +
>   proxmox-async/Cargo.toml              |   2 +-
>   proxmox-async/src/io/mod.rs           |   3 +
>   proxmox-async/src/io/udp_connect.rs   |  18 ++++
>   proxmox-metrics/Cargo.toml            |  21 ++++
>   proxmox-metrics/debian/changelog      |   5 +
>   proxmox-metrics/debian/copyright      |  16 ++++
>   proxmox-metrics/debian/debcargo.toml  |   7 ++
>   proxmox-metrics/src/influxdb/http.rs  | 132 ++++++++++++++++++++++++++
>   proxmox-metrics/src/influxdb/mod.rs   |   7 ++
>   proxmox-metrics/src/influxdb/udp.rs   |  80 ++++++++++++++++
>   proxmox-metrics/src/influxdb/utils.rs |  50 ++++++++++
>   proxmox-metrics/src/lib.rs            | 117 +++++++++++++++++++++++
>   proxmox-sys/Cargo.toml                |   1 +
>   proxmox-sys/src/fs/mod.rs             |  37 ++++++++
>   proxmox-sys/src/linux/procfs/mod.rs   |   7 +-
>   16 files changed, 500 insertions(+), 4 deletions(-)
>   create mode 100644 proxmox-async/src/io/udp_connect.rs
>   create mode 100644 proxmox-metrics/Cargo.toml
>   create mode 100644 proxmox-metrics/debian/changelog
>   create mode 100644 proxmox-metrics/debian/copyright
>   create mode 100644 proxmox-metrics/debian/debcargo.toml
>   create mode 100644 proxmox-metrics/src/influxdb/http.rs
>   create mode 100644 proxmox-metrics/src/influxdb/mod.rs
>   create mode 100644 proxmox-metrics/src/influxdb/udp.rs
>   create mode 100644 proxmox-metrics/src/influxdb/utils.rs
>   create mode 100644 proxmox-metrics/src/lib.rs
> 
> proxmox-backup:
> 
> Dominik Csapak (6):
>    use 'fs_info' from proxmox-sys
>    pbs-api-types: add metrics api types
>    pbs-config: add metrics config class
>    backup-proxy: decouple stats gathering from rrd update
>    proxmox-backup-proxy: send metrics to configured metrics server
>    api: add metricserver endpoints
> 
>   Cargo.toml                                   |   1 +
>   pbs-api-types/src/lib.rs                     |  15 +
>   pbs-api-types/src/metrics.rs                 | 138 ++++++++
>   pbs-config/Cargo.toml                        |   1 +
>   pbs-config/src/lib.rs                        |   1 +
>   pbs-config/src/metrics.rs                    | 115 +++++++
>   src/api2/admin/datastore.rs                  |   4 +-
>   src/api2/config/metricserver/influxdbhttp.rs | 266 +++++++++++++++
>   src/api2/config/metricserver/influxdbudp.rs  | 243 +++++++++++++
>   src/api2/config/metricserver/mod.rs          |  16 +
>   src/api2/config/mod.rs                       |   2 +
>   src/api2/node/status.rs                      |  11 +-
>   src/api2/status.rs                           |   4 +-
>   src/bin/proxmox-backup-proxy.rs              | 342 +++++++++++++++----
>   src/tools/disks/mod.rs                       |  21 +-
>   15 files changed, 1081 insertions(+), 99 deletions(-)
>   create mode 100644 pbs-api-types/src/metrics.rs
>   create mode 100644 pbs-config/src/metrics.rs
>   create mode 100644 src/api2/config/metricserver/influxdbhttp.rs
>   create mode 100644 src/api2/config/metricserver/influxdbudp.rs
>   create mode 100644 src/api2/config/metricserver/mod.rs
> 





More information about the pbs-devel mailing list