all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH manager] fix #3815: influxdb vmname should always be a string
@ 2022-01-27 11:13 markus frank
  2022-01-27 11:38 ` Thomas Lamprecht
  0 siblings, 1 reply; 2+ messages in thread
From: markus frank @ 2022-01-27 11:13 UTC (permalink / raw)
  To: pve-devel

InfluxDB interprets the vmname 66601 as a number and the vmname vm42 as a String. This leads to problematic metrics, that will be dropped by influxdb.
To change that I added a $quoted hashmap (simular to $excluded) to quote a value. In this case the value of name.

Signed-off-by: markus frank <m.frank@proxmox.com>
---
 PVE/Status/InfluxDB.pm | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/PVE/Status/InfluxDB.pm b/PVE/Status/InfluxDB.pm
index def7e2fd..f49feac4 100644
--- a/PVE/Status/InfluxDB.pm
+++ b/PVE/Status/InfluxDB.pm
@@ -116,7 +116,7 @@ sub update_qemu_status {
     $object =~ s/\s/\\ /g;
 
     # VMID is already added in base $object above, so exclude it from being re-added
-    build_influxdb_payload($class, $txn, $data, $ctime, $object, { 'vmid' => 1 });
+    build_influxdb_payload($class, $txn, $data, $ctime, $object, { 'vmid' => 1 }, { 'name' => 1 });
 }
 
 sub update_lxc_status {
@@ -131,7 +131,7 @@ sub update_lxc_status {
     $object =~ s/\s/\\ /g;
 
     # VMID is already added in base $object above, so exclude it from being re-added
-    build_influxdb_payload($class, $txn, $data, $ctime, $object, { 'vmid' => 1 });
+    build_influxdb_payload($class, $txn, $data, $ctime, $object, { 'vmid' => 1 }, { 'name' => 1 });
 }
 
 sub update_storage_status {
@@ -274,7 +274,7 @@ sub test_connection {
 }
 
 sub build_influxdb_payload {
-    my ($class, $txn, $data, $ctime, $tags, $excluded, $measurement, $instance) = @_;
+    my ($class, $txn, $data, $ctime, $tags, $excluded, $quoted, $measurement, $instance) = @_;
 
     my @values = ();
 
@@ -283,6 +283,10 @@ sub build_influxdb_payload {
 	my $value = $data->{$key};
 	next if !defined($value);
 
+	if (defined($quoted) && $quoted->{$key}){
+	    $value =~ s/\"/\\\"/g;
+            $value = "\"$value\"";
+        }
 	if (!ref($value) && $value ne '') {
 	    # value is scalar
 
@@ -293,9 +297,9 @@ sub build_influxdb_payload {
 	    # value is a hash
 
 	    if (!defined($measurement)) {
-		build_influxdb_payload($class, $txn, $value, $ctime, $tags, $excluded, $key);
+		build_influxdb_payload($class, $txn, $value, $ctime, $tags, $excluded, $quoted, $key);
 	    } elsif(!defined($instance)) {
-		build_influxdb_payload($class, $txn, $value, $ctime, $tags, $excluded, $measurement, $key);
+		build_influxdb_payload($class, $txn, $value, $ctime, $tags, $excluded, $quoted, $measurement, $key);
 	    } else {
 		push @values, get_recursive_values($value);
 	    }
-- 
2.30.2





^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-01-27 11:38 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-27 11:13 [pve-devel] [PATCH manager] fix #3815: influxdb vmname should always be a string markus frank
2022-01-27 11:38 ` Thomas Lamprecht

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal