[pve-devel] [PATCH manager v2 1/2] fix #1683: do not send non-numeric values to graphite
Dominik Csapak
d.csapak at proxmox.com
Mon Mar 5 09:58:40 CET 2018
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 <d.csapak at proxmox.com>
---
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
More information about the pve-devel
mailing list