collection.cgi: Added `qtype'
[collectd.git] / contrib / collection.cgi
index 098c702..fb76f60 100755 (executable)
@@ -304,13 +304,13 @@ our $GraphDefs;
                        'GPRINT:tx_avg:AVERAGE:%5.1lf%s Avg,',
                        'GPRINT:tx_max:MAX:%5.1lf%s Max,',
                        'GPRINT:tx_avg:LAST:%5.1lf%s Last',
-                       'GPRINT:tx_avg_sum:LAST:(ca. %.0lf Total)\l',
+                       'GPRINT:tx_avg_sum:LAST:(ca. %4.0lf%s Total)\l',
                        "LINE1:rx_avg#$FullBlue:RX",
                        #'GPRINT:rx_min:MIN:%5.1lf %s Min,',
                        'GPRINT:rx_avg:AVERAGE:%5.1lf%s Avg,',
                        'GPRINT:rx_max:MAX:%5.1lf%s Max,',
                        'GPRINT:rx_avg:LAST:%5.1lf%s Last',
-                       'GPRINT:rx_avg_sum:LAST:(ca. %.0lf Total)\l'
+                       'GPRINT:rx_avg_sum:LAST:(ca. %4.0lf%s Total)\l'
                ],
                load => ['DEF:s_avg={file}:shortterm:AVERAGE',
                        'DEF:s_min={file}:shortterm:MIN',
@@ -712,6 +712,97 @@ our $GraphDefs;
                        'GPRINT:sleeping_max:MAX:%5.1lf Max,',
                        'GPRINT:sleeping_avg:LAST:%5.1lf Last\l'
                ],
+               ps_rss => [
+                       'DEF:avg={file}:byte:AVERAGE',
+                       'DEF:min={file}:byte:MIN',
+                       'DEF:max={file}:byte:MAX',
+                       "AREA:avg#$HalfBlue",
+                       "LINE1:avg#$FullBlue:RSS",
+                       'GPRINT:min:MIN:%5.1lf%s Min,',
+                       'GPRINT:avg:AVERAGE:%5.1lf%s Avg,',
+                       'GPRINT:max:MAX:%5.1lf%s Max,',
+                       'GPRINT:avg:LAST:%5.1lf%s Last\l'
+               ],
+               ps_cputime => [
+                       'DEF:user_avg_raw={file}:user:AVERAGE',
+                       'DEF:user_min_raw={file}:user:MIN',
+                       'DEF:user_max_raw={file}:user:MAX',
+                       'DEF:syst_avg_raw={file}:syst:AVERAGE',
+                       'DEF:syst_min_raw={file}:syst:MIN',
+                       'DEF:syst_max_raw={file}:syst:MAX',
+                       'CDEF:user_avg=user_avg_raw,1000000,/',
+                       'CDEF:user_min=user_min_raw,1000000,/',
+                       'CDEF:user_max=user_max_raw,1000000,/',
+                       'CDEF:syst_avg=syst_avg_raw,1000000,/',
+                       'CDEF:syst_min=syst_min_raw,1000000,/',
+                       'CDEF:syst_max=syst_max_raw,1000000,/',
+                       'CDEF:user_syst=syst_avg,UN,0,syst_avg,IF,user_avg,+',
+                       "AREA:user_syst#$HalfBlue",
+                       "AREA:syst_avg#$HalfRed",
+                       "LINE1:user_syst#$FullBlue:User  ",
+                       'GPRINT:user_min:MIN:%5.1lf%s Min,',
+                       'GPRINT:user_avg:AVERAGE:%5.1lf%s Avg,',
+                       'GPRINT:user_max:MAX:%5.1lf%s Max,',
+                       'GPRINT:user_avg:LAST:%5.1lf%s Last\l',
+                       "LINE1:syst_avg#$FullRed:System",
+                       'GPRINT:syst_min:MIN:%5.1lf%s Min,',
+                       'GPRINT:syst_avg:AVERAGE:%5.1lf%s Avg,',
+                       'GPRINT:syst_max:MAX:%5.1lf%s Max,',
+                       'GPRINT:syst_avg:LAST:%5.1lf%s Last\l'
+               ],
+               ps_count => [
+                       'DEF:procs_avg={file}:processes:AVERAGE',
+                       'DEF:procs_min={file}:processes:MIN',
+                       'DEF:procs_max={file}:processes:MAX',
+                       'DEF:thrds_avg={file}:threads:AVERAGE',
+                       'DEF:thrds_min={file}:threads:MIN',
+                       'DEF:thrds_max={file}:threads:MAX',
+                       "AREA:thrds_avg#$HalfBlue",
+                       "AREA:procs_avg#$HalfRed",
+                       "LINE1:thrds_avg#$FullBlue:Threads  ",
+                       'GPRINT:thrds_min:MIN:%5.1lf Min,',
+                       'GPRINT:thrds_avg:AVERAGE:%5.1lf Avg,',
+                       'GPRINT:thrds_max:MAX:%5.1lf Max,',
+                       'GPRINT:thrds_avg:LAST:%5.1lf Last\l',
+                       "LINE1:procs_avg#$FullRed:Processes",
+                       'GPRINT:procs_min:MIN:%5.1lf Min,',
+                       'GPRINT:procs_avg:AVERAGE:%5.1lf Avg,',
+                       'GPRINT:procs_max:MAX:%5.1lf Max,',
+                       'GPRINT:procs_avg:LAST:%5.1lf Last\l'
+               ],
+               ps_pagefaults => [
+                       'DEF:minor_avg={file}:minflt:AVERAGE',
+                       'DEF:minor_min={file}:minflt:MIN',
+                       'DEF:minor_max={file}:minflt:MAX',
+                       'DEF:major_avg={file}:majflt:AVERAGE',
+                       'DEF:major_min={file}:majflt:MIN',
+                       'DEF:major_max={file}:majflt:MAX',
+                       'CDEF:minor_major=major_avg,UN,0,major_avg,IF,minor_avg,+',
+                       "AREA:minor_major#$HalfBlue",
+                       "AREA:major_avg#$HalfRed",
+                       "LINE1:minor_major#$FullBlue:Minor",
+                       'GPRINT:minor_min:MIN:%5.1lf%s Min,',
+                       'GPRINT:minor_avg:AVERAGE:%5.1lf%s Avg,',
+                       'GPRINT:minor_max:MAX:%5.1lf%s Max,',
+                       'GPRINT:minor_avg:LAST:%5.1lf%s Last\l',
+                       "LINE1:major_avg#$FullRed:Major",
+                       'GPRINT:major_min:MIN:%5.1lf%s Min,',
+                       'GPRINT:major_avg:AVERAGE:%5.1lf%s Avg,',
+                       'GPRINT:major_max:MAX:%5.1lf%s Max,',
+                       'GPRINT:major_avg:LAST:%5.1lf%s Last\l'
+               ],
+               qtype => [
+                       'DEF:avg={file}:value:AVERAGE',
+                       'DEF:min={file}:value:MIN',
+                       'DEF:max={file}:value:MAX',
+                       "AREA:max#$HalfBlue",
+                       "AREA:min#$Canvas",
+                       "LINE1:avg#$FullBlue:Queries/s",
+                       'GPRINT:min:MIN:%9.3lf Min,',
+                       'GPRINT:avg:AVERAGE:%9.3lf Average,',
+                       'GPRINT:max:MAX:%9.3lf Max,',
+                       'GPRINT:avg:LAST:%9.3lf Last\l'
+               ],
                swap => [
                        'DEF:used_avg={file}:used:AVERAGE',
                        'DEF:used_min={file}:used:MIN',
@@ -839,6 +930,18 @@ our $GraphDefs;
                         'GPRINT:cpufreq_max:MAX:%5.1lf%s Max,',
                         'GPRINT:cpufreq_avg:LAST:%5.1lf%s Last\l'
                 ],
+               multimeter => [
+                           'DEF:multimeter_avg={file}:value:AVERAGE',
+                           'DEF:multimeter_min={file}:value:MIN',
+                           'DEF:multimeter_max={file}:value:MAX',
+                           "AREA:multimeter_max#$HalfBlue",
+                           "AREA:multimeter_min#$Canvas",
+                           "LINE1:multimeter_avg#$FullBlue:Multimeter",
+                           'GPRINT:multimeter_min:MIN:%4.1lf Min,',
+                           'GPRINT:multimeter_avg:AVERAGE:%4.1lf Average,',
+                           'GPRINT:multimeter_max:MAX:%4.1lf Max,',
+                           'GPRINT:multimeter_avg:LAST:%4.1lf Last\l'
+               ],
                users => [
                            'DEF:users_avg={file}:users:AVERAGE',
                            'DEF:users_min={file}:users:MIN',
@@ -984,6 +1087,11 @@ our $GraphArgs =
        partition => ['-t', '{host} partition {inst} usage', '-v', 'Byte/s'],
        ping => ['-t', '{host} ping to {inst}', '-v', 'ms'],
        processes => ['-t', '{host} processes', '-v', 'Processes'],
+       ps_rss => ['-t', '{host} process {inst} RSS', '-v', 'Bytes', '-b', '1024'],
+       ps_cputime => ['-t', '{host} process {inst} CPU usage', '-v', 'Seconds'],
+       ps_count => ['-t', '{host} process {inst} count', '-v', 'Threads/Processes'],
+       ps_pagefaults => ['-t', '{host} process {inst} pagefaults', '-v', 'Pagefaults/s'],
+       qtype => ['-t', 'QType {inst}', '-v', 'Queries/s'],
        sensors => ['-t', '{host} sensor {inst}', '-v', '°Celsius'],
        swap => ['-t', '{host} swap usage', '-v', 'Bytes', '-b', '1024', '-l', '0'],
        temperature => ['-t', '{host} temperature {inst}', '-v', '°Celsius'],
@@ -992,6 +1100,7 @@ our $GraphArgs =
        time_dispersion => ['-t', 'NTPd time dispersion ({inst})', '-v', 'Seconds'],
        traffic => ['-t', '{host} {inst} traffic', '-v', 'Bit/s'],
        users => ['-t', '{host} users', '-v', 'Users'],
+       multimeter => ['-t', '{host} multimeter', '-v', 'Value'],
        voltage => ['-t', '{host} voltage', '-v', 'Volts'],
        vs_threads => ['-t', '{host} threads', '-v', 'Threads'],
        vs_memory => ['-t', '{host} memory usage', '-v', 'Bytes'],
@@ -1011,9 +1120,11 @@ our $GraphMulti =
        mysql_handler => \&output_graph_mysql_handler,
        partition => 1,
        ping    => \&output_graph_ping,
+       qtype => \&output_graph_named_qtype,
        sensors => 1,
        traffic => 1,
-       users => 1
+       users => 1,
+       multimeter => 1
 };
 
 our @Info;
@@ -1275,6 +1386,49 @@ sub output_graph_mysql_handler
        return (@ret);
 }
 
+sub output_graph_named_qtype
+{
+       my @inst = @_;
+       my @ret = ();
+
+       die if (@inst < 2);
+
+       my @colors = get_n_colors (scalar (@inst));
+
+       for (my $i = 0; $i < scalar (@inst); $i++)
+       {
+               my $inst = $inst[$i];
+               push (@ret,
+                       "DEF:avg_$i=$AbsDir/qtype-$inst.rrd:value:AVERAGE",
+                       "DEF:min_$i=$AbsDir/qtype-$inst.rrd:value:MIN",
+                       "DEF:max_$i=$AbsDir/qtype-$inst.rrd:value:MAX");
+       }
+
+       for (my $i = 0; $i < scalar (@inst); $i++)
+       {
+               my $inst = $inst[$i];
+               my $color = $colors[$i];
+               my $type = ($i == 0) ? 'AREA' : 'STACK';
+
+               if (length ($inst) > 5)
+               {
+                       $inst = substr ($inst, 0, 5);
+               }
+               else
+               {
+                       $inst = sprintf ('%-5s', $inst);
+               }
+
+               push (@ret,
+                       "$type:avg_$i#$color:$inst",
+                       "GPRINT:min_$i:MIN:%9.3lf Min,",
+                       "GPRINT:avg_$i:AVERAGE:%9.3lf Avg,",
+                       "GPRINT:max_$i:MAX:%9.3lf Max,",
+                       "GPRINT:avg_$i:LAST:%9.3lf Last\\l");
+       }
+
+       return (@ret);
+}
 sub output_graph
 {
        die unless (defined ($GraphDefs->{$Type}));