the graphite daemons which accept the data (carbon), only accepts numeric values, and logs all invalid lines
since that were about 5 values per vm/ct this generated lot of noise in the carbon log so we check with a regex if a value is numeric, and additionally we have a blacklist of keys which seem to be numeric but are either boolean (e.g. template) or a state (e.g. pid) Signed-off-by: Dominik Csapak <[email protected]> --- changes from v1: * improve number regex (thanks thomas :) ) * add blacklist for non-numeric values * add explaining comment for all other values PVE/Status/Graphite.pm | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/PVE/Status/Graphite.pm b/PVE/Status/Graphite.pm index 849930f0..64ca89c0 100644 --- a/PVE/Status/Graphite.pm +++ b/PVE/Status/Graphite.pm @@ -36,6 +36,14 @@ sub options { }; } +# we do not want boolean/state information to export to graphite +my $key_blacklist = { + 'template' => 1, + 'pid' => 1, + 'agent' => 1, + 'serial' => 1, +}; + # Plugin implementation sub update_node_status { my ($class, $plugin_config, $node, $data, $ctime) = @_; @@ -93,9 +101,12 @@ sub write_graphite { if ( defined $value ) { if ( ref $value eq 'HASH' ) { write_graphite($carbon_socket, $value, $ctime, $path); - }else { - $carbon_socket->send( "$path $value $ctime\n" ); - } + } elsif ($value =~ m/^[+-]?[0-9]*\.?[0-9]+$/ && + !$key_blacklist->{$key}) { + $carbon_socket->send( "$path $value $ctime\n" ); + } else { + # do not send blacklisted or non-numeric values + } } $path = $oldpath; } -- 2.11.0 _______________________________________________ pve-devel mailing list [email protected] https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
