]> git.proxmox.com Git - pve-manager.git/commitdiff
influxdb : use multi values measurement
authorAlexandre Derumier <aderumier@odiso.com>
Wed, 25 Nov 2015 06:57:02 +0000 (07:57 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Fri, 22 Jan 2016 10:24:19 +0000 (11:24 +0100)
influxdb (> 0.9.5) now support fastly multiple values by mesuerement,
through a new column store engine.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
PVE/Status/InfluxDB.pm

index 507f9b2193c6909d8b65aee3a2d92b33d4e1a0de..4d1a23726a8f3e4e9f0dacca03b61e737e99395a 100644 (file)
@@ -100,37 +100,42 @@ sub write_influxdb_hash {
 }
 
 sub build_influxdb_payload {
-    my ($payload, $d, $ctime, $tags, $keyprefix, $depth) = @_;
+    my ($payload, $d, $ctime, $tags, $measurement, $depth) = @_;
 
     $depth = 0 if !$depth;
+    my @values = ();
 
     for my $key (keys %$d) {
 
         my $value = $d->{$key};
         my $oldtags = $tags;
-
+       
         if ( defined $value ) {
             if ( ref $value eq 'HASH' ) {
 
                if($depth == 0) {
-                   $keyprefix = $key;
+                   $measurement = $key;
                }elsif($depth == 1){
                    $tags .= ",instance=$key";
                }
 
                $depth++;
-                build_influxdb_payload($payload, $value, $ctime, $tags, $keyprefix, $depth);
+                build_influxdb_payload($payload, $value, $ctime, $tags, $measurement, $depth);
                $depth--;
 
             }elsif ($value =~ m/^\d+$/) {
 
-               $keyprefix = "system" if !$keyprefix && $depth == 0;
-
-                $payload->{string} .= $keyprefix."_"."$key,$tags value=$value $ctime\n";
+               $measurement = "system" if !$measurement && $depth == 0;
+               push(@values, "$key=$value");
             }
         }
         $tags = $oldtags;
     }
+
+    if(@values > 0) {
+       my $valuestr =  join(',', @values);
+       $payload->{string} .= $measurement.",$tags $valuestr $ctime\n";
+    }
 }
 
 1;