src/collectd-nagios.c: Copy the NAN-defines from `collectd.h'.
[collectd.git] / contrib / collection.cgi
index 9fd504c..de42b78 100755 (executable)
@@ -424,6 +424,8 @@ sub action_show_host
   my $host_url = uri_escape ($host);
   my %plugins = _find_plugins ($host);
 
+  print qq(    <div><a href="${\script_name ()}?action=overview">Back to list of hosts</a></div>\n);
+
   print "<ul>\n";
   for (sort (keys %plugins))
   {
@@ -463,6 +465,8 @@ sub action_show_plugin
   my $url_prefix = script_name () . "?host=$host_url;plugin=$plugin_url";
   $url_prefix .= ";plugin_instance=$plugin_instance_url" if (defined ($plugin_instance));
 
+  print qq(    <div><a href="${\script_name ()}?action=show_host;host=$host_url">Back to list of plugins</a></div>\n);
+
   for (sort (keys %types))
   {
     my $type = $_;
@@ -501,11 +505,17 @@ sub action_show_type
 
   my $host_url = uri_escape ($host);
   my $plugin_url = uri_escape ($plugin);
+  my $plugin_html = encode_entities ($plugin);
   my $plugin_instance_url = defined ($plugin_instance) ? uri_escape ($plugin_instance) : undef;
   my $type_url = uri_escape ($type);
   my $type_instance_url = defined ($type_instance) ? uri_escape ($type_instance) : undef;
 
-  my $url_prefix = script_name () . "?action=show_graph;host=$host_url;plugin=$plugin_url";
+  my $url_prefix = script_name () . "?action=show_plugin;host=$host_url;plugin=$plugin_url";
+  $url_prefix .= ";plugin_instance=$plugin_instance_url" if (defined ($plugin_instance));
+
+  print qq(    <div><a href="$url_prefix">Back to plugin &quot;$plugin_html&quot;</a></div>\n);
+
+  $url_prefix = script_name () . "?action=show_graph;host=$host_url;plugin=$plugin_url";
   $url_prefix .= ";plugin_instance=$plugin_instance_url" if (defined ($plugin_instance));
   $url_prefix .= ";type=$type_url";
   $url_prefix .= ";type_instance=$type_instance_url" if (defined ($type_instance));
@@ -531,7 +541,7 @@ sub action_show_graph
   my %times = (hour => -3600, day => -86400, week => 7 * -86400, month => 31 * -86400, year => 366 * -86400);
   my $start_time = $times{$Args->{'timespan'}} || -86400;
 
-  print STDERR Data::Dumper->Dump ([$Args], ['Args']);
+  #print STDERR Data::Dumper->Dump ([$Args], ['Args']);
 
   return if (!defined ($GraphDefs->{$type}));
   @rrd_args = @{$GraphDefs->{$type}};
@@ -634,7 +644,7 @@ sub main
 
 sub load_graph_definitions
 {
-  my $Canvas = 'F5F5F5';
+  my $Canvas = 'FFFFFF';
 
   my $FullRed    = 'FF0000';
   my $FullGreen  = '00E000';
@@ -676,10 +686,8 @@ sub load_graph_definitions
     apache_requests => ['DEF:min={file}:count:MIN',
     'DEF:avg={file}:count:AVERAGE',
     'DEF:max={file}:count:MAX',
-    'CDEF:moving_average=PREV,UN,avg,PREV,IF,0.8,*,avg,0.2,*,+',
     "AREA:max#$HalfBlue",
     "AREA:min#$Canvas",
-    'LINE1:moving_average#000000',
     "LINE1:avg#$FullBlue:Requests/s",
     'GPRINT:min:MIN:%6.2lf Min,',
     'GPRINT:avg:AVERAGE:%6.2lf Avg,',
@@ -993,17 +1001,29 @@ sub load_graph_definitions
     'GPRINT:max:MAX:%4.0lfbit Max,',
     'GPRINT:avg:LAST:%4.0lfbit Last\l'
     ],
-    fanspeed => [
-    'DEF:temp_avg={file}:value:AVERAGE',
-    'DEF:temp_min={file}:value:MIN',
-    'DEF:temp_max={file}:value:MAX',
-    "AREA:temp_max#$HalfMagenta",
-    "AREA:temp_min#$Canvas",
-    "LINE1:temp_avg#$FullMagenta:RPM",
-    'GPRINT:temp_min:MIN:%4.1lf Min,',
-    'GPRINT:temp_avg:AVERAGE:%4.1lf Avg,',
-    'GPRINT:temp_max:MAX:%4.1lf Max,',
-    'GPRINT:temp_avg:LAST:%4.1lf Last\l'
+    fanspeed => ['-v', 'RPM',
+    'DEF:avg={file}:value:AVERAGE',
+    'DEF:min={file}:value:MIN',
+    'DEF:max={file}:value:MAX',
+    "AREA:max#$HalfMagenta",
+    "AREA:min#$Canvas",
+    "LINE1:avg#$FullMagenta:RPM",
+    'GPRINT:min:MIN:%4.1lf Min,',
+    'GPRINT:avg:AVERAGE:%4.1lf Avg,',
+    'GPRINT:max:MAX:%4.1lf Max,',
+    'GPRINT:avg:LAST:%4.1lf Last\l'
+    ],
+    frequency => ['-v', 'Hertz',
+    'DEF:avg={file}:frequency:AVERAGE',
+    'DEF:min={file}:frequency:MIN',
+    'DEF:max={file}:frequency:MAX',
+    "AREA:max#$HalfBlue",
+    "AREA:min#$Canvas",
+    "LINE1:avg#$FullBlue:Frequency [Hz]",
+    'GPRINT:min:MIN:%4.1lf Min,',
+    'GPRINT:avg:AVERAGE:%4.1lf Avg,',
+    'GPRINT:max:MAX:%4.1lf Max,',
+    'GPRINT:avg:LAST:%4.1lf Last\l'
     ],
     frequency_offset => [ # NTPd
     'DEF:ppm_avg={file}:ppm:AVERAGE',
@@ -1017,6 +1037,18 @@ sub load_graph_definitions
     'GPRINT:ppm_max:MAX:%5.2lf Max,',
     'GPRINT:ppm_avg:LAST:%5.2lf Last'
     ],
+    gauge => ['-v', 'Exec value',
+    'DEF:temp_avg={file}:value:AVERAGE',
+    'DEF:temp_min={file}:value:MIN',
+    'DEF:temp_max={file}:value:MAX',
+    "AREA:temp_max#$HalfBlue",
+    "AREA:temp_min#$Canvas",
+    "LINE1:temp_avg#$FullBlue:Exec value",
+    'GPRINT:temp_min:MIN:%6.2lf Min,',
+    'GPRINT:temp_avg:AVERAGE:%6.2lf Avg,',
+    'GPRINT:temp_max:MAX:%6.2lf Max,',
+    'GPRINT:temp_avg:LAST:%6.2lf Last\l'
+    ],
     hddtemp => [
     'DEF:temp_avg={file}:value:AVERAGE',
     'DEF:temp_min={file}:value:MIN',
@@ -1029,6 +1061,36 @@ sub load_graph_definitions
     'GPRINT:temp_max:MAX:%4.1lf Max,',
     'GPRINT:temp_avg:LAST:%4.1lf Last\l'
     ],
+    if_errors => ['-v', 'Errors/s',
+    'DEF:tx_min={file}:tx:MIN',
+    'DEF:tx_avg={file}:tx:AVERAGE',
+    'DEF:tx_max={file}:tx:MAX',
+    'DEF:rx_min={file}:rx:MIN',
+    'DEF:rx_avg={file}:rx:AVERAGE',
+    'DEF:rx_max={file}:rx:MAX',
+    'CDEF:overlap=tx_avg,rx_avg,GT,rx_avg,tx_avg,IF',
+    'CDEF:mytime=tx_avg,TIME,TIME,IF',
+    'CDEF:sample_len_raw=mytime,PREV(mytime),-',
+    'CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF',
+    'CDEF:tx_avg_sample=tx_avg,UN,0,tx_avg,IF,sample_len,*',
+    'CDEF:tx_avg_sum=PREV,UN,0,PREV,IF,tx_avg_sample,+',
+    'CDEF:rx_avg_sample=rx_avg,UN,0,rx_avg,IF,sample_len,*',
+    'CDEF:rx_avg_sum=PREV,UN,0,PREV,IF,rx_avg_sample,+',
+    "AREA:tx_avg#$HalfGreen",
+    "AREA:rx_avg#$HalfBlue",
+    "AREA:overlap#$HalfBlueGreen",
+    "LINE1:tx_avg#$FullGreen:TX",
+    '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. %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. %4.0lf%s Total)\l'
+    ],
     if_packets => ['-v', 'Packets/s',
     'DEF:tx_min={file}:tx:MIN',
     'DEF:tx_avg={file}:tx:AVERAGE',
@@ -1059,6 +1121,42 @@ sub load_graph_definitions
     'GPRINT:rx_avg:LAST:%5.1lf%s Last',
     'GPRINT:rx_avg_sum:LAST:(ca. %4.0lf%s Total)\l'
     ],
+    ipt_bytes => ['-v', 'Bits/s',
+    'DEF:min_raw={file}:value:MIN',
+    'DEF:avg_raw={file}:value:AVERAGE',
+    'DEF:max_raw={file}:value:MAX',
+    'CDEF:min=min_raw,8,*',
+    'CDEF:avg=avg_raw,8,*',
+    'CDEF:max=max_raw,8,*',
+    'CDEF:mytime=avg_raw,TIME,TIME,IF',
+    'CDEF:sample_len_raw=mytime,PREV(mytime),-',
+    'CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF',
+    'CDEF:avg_sample=avg_raw,UN,0,avg_raw,IF,sample_len,*',
+    'CDEF:avg_sum=PREV,UN,0,PREV,IF,avg_sample,+',
+    "AREA:max#$HalfBlue",
+    "AREA:min#$Canvas",
+    "LINE1:avg#$FullBlue:Bits/s",
+    #'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',
+    'GPRINT:avg_sum:LAST:(ca. %5.1lf%sB Total)\l'
+    ],
+    ipt_packets => ['-v', 'Packets/s',
+    'DEF:min_raw={file}:value:MIN',
+    'DEF:avg_raw={file}:value:AVERAGE',
+    'DEF:max_raw={file}:value:MAX',
+    'CDEF:min=min_raw,8,*',
+    'CDEF:avg=avg_raw,8,*',
+    'CDEF:max=max_raw,8,*',
+    "AREA:max#$HalfBlue",
+    "AREA:min#$Canvas",
+    "LINE1:avg#$FullBlue:Packets/s",
+    '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'
+    ],
     irq => ['-v', 'Issues/s',
     'DEF:avg={file}:value:AVERAGE',
     'DEF:min={file}:value:MIN',
@@ -1182,7 +1280,7 @@ sub load_graph_definitions
     'GPRINT:used_max:MAX:%5.1lf%s Max,',
     'GPRINT:used_avg:LAST:%5.1lf%s Last'
     ],
-    mysql_commands => [
+    mysql_commands => ['-v', 'Issues/s',
     "DEF:val_avg={file}:value:AVERAGE",
     "DEF:val_min={file}:value:MIN",
     "DEF:val_max={file}:value:MAX",
@@ -1194,7 +1292,7 @@ sub load_graph_definitions
     'GPRINT:val_max:MAX:%5.2lf Max,',
     'GPRINT:val_avg:LAST:%5.2lf Last'
     ],
-    mysql_handler => [
+    mysql_handler => ['-v', 'Issues/s',
     "DEF:val_avg={file}:value:AVERAGE",
     "DEF:val_min={file}:value:MIN",
     "DEF:val_max={file}:value:MAX",
@@ -1206,7 +1304,36 @@ sub load_graph_definitions
     'GPRINT:val_max:MAX:%5.2lf Max,',
     'GPRINT:val_avg:LAST:%5.2lf Last'
     ],
-    mysql_qcache => [
+    mysql_octets => ['-v', 'Bytes/s',
+    'DEF:out_min={file}:tx:MIN',
+    'DEF:out_avg={file}:tx:AVERAGE',
+    'DEF:out_max={file}:tx:MAX',
+    'DEF:inc_min={file}:rx:MIN',
+    'DEF:inc_avg={file}:rx:AVERAGE',
+    'DEF:inc_max={file}:rx:MAX',
+    'CDEF:overlap=out_avg,inc_avg,GT,inc_avg,out_avg,IF',
+    'CDEF:mytime=out_avg,TIME,TIME,IF',
+    'CDEF:sample_len_raw=mytime,PREV(mytime),-',
+    'CDEF:sample_len=sample_len_raw,UN,0,sample_len_raw,IF',
+    'CDEF:out_avg_sample=out_avg,UN,0,out_avg,IF,sample_len,*',
+    'CDEF:out_avg_sum=PREV,UN,0,PREV,IF,out_avg_sample,+',
+    'CDEF:inc_avg_sample=inc_avg,UN,0,inc_avg,IF,sample_len,*',
+    'CDEF:inc_avg_sum=PREV,UN,0,PREV,IF,inc_avg_sample,+',
+    "AREA:out_avg#$HalfGreen",
+    "AREA:inc_avg#$HalfBlue",
+    "AREA:overlap#$HalfBlueGreen",
+    "LINE1:out_avg#$FullGreen:Written",
+    'GPRINT:out_avg:AVERAGE:%5.1lf%s Avg,',
+    'GPRINT:out_max:MAX:%5.1lf%s Max,',
+    'GPRINT:out_avg:LAST:%5.1lf%s Last',
+    'GPRINT:out_avg_sum:LAST:(ca. %5.1lf%sB Total)\l',
+    "LINE1:inc_avg#$FullBlue:Read   ",
+    'GPRINT:inc_avg:AVERAGE:%5.1lf%s Avg,',
+    'GPRINT:inc_max:MAX:%5.1lf%s Max,',
+    'GPRINT:inc_avg:LAST:%5.1lf%s Last',
+    'GPRINT:inc_avg_sum:LAST:(ca. %5.1lf%sB Total)\l'
+    ],
+    mysql_qcache => ['-v', 'Queries/s',
     "DEF:hits_min={file}:hits:MIN",
     "DEF:hits_avg={file}:hits:AVERAGE",
     "DEF:hits_max={file}:hits:MAX",
@@ -1255,7 +1382,7 @@ sub load_graph_definitions
     'GPRINT:queries_max:MAX:%5.0lf Max,',
     'GPRINT:queries_avg:LAST:%5.0lf Last\l'
     ],
-    mysql_threads => [
+    mysql_threads => ['-v', 'Threads',
     "DEF:running_min={file}:running:MIN",
     "DEF:running_avg={file}:running:AVERAGE",
     "DEF:running_max={file}:running:MAX",
@@ -1294,6 +1421,18 @@ sub load_graph_definitions
     'GPRINT:created_max:MAX:%5.0lf Max,',
     'GPRINT:created_avg:LAST:%5.0lf Last\l'
     ],
+    nfs_procedure => ['-v', 'Issues/s',
+    'DEF:avg={file}:value:AVERAGE',
+    'DEF:min={file}:value:MIN',
+    'DEF:max={file}:value:MAX',
+    "AREA:max#$HalfBlue",
+    "AREA:min#$Canvas",
+    "LINE1:avg#$FullBlue:Issues/s",
+    'GPRINT:min:MIN:%6.2lf Min,',
+    'GPRINT:avg:AVERAGE:%6.2lf Avg,',
+    'GPRINT:max:MAX:%6.2lf Max,',
+    'GPRINT:avg:LAST:%6.2lf Last\l'
+    ],
     nfs3_procedures => [
     "DEF:null_avg={file}:null:AVERAGE",
     "DEF:getattr_avg={file}:getattr:AVERAGE",
@@ -1424,7 +1563,7 @@ sub load_graph_definitions
     'GPRINT:rbyte_max:MAX:%5.1lf%s Max,',
     'GPRINT:rbyte_avg:LAST:%5.1lf%s Last\l'
     ],
-    percent => [
+    percent => ['-v', 'Percent',
     'DEF:avg={file}:percent:AVERAGE',
     'DEF:min={file}:percent:MIN',
     'DEF:max={file}:percent:MAX',
@@ -1679,7 +1818,7 @@ sub load_graph_definitions
     'GPRINT:used_max:MAX:%5.1lf%s Max,',
     'GPRINT:used_avg:LAST:%5.1lf%s Last\l'
     ],
-    temperature => [
+    temperature => ['-v', 'Celsius',
     'DEF:temp_avg={file}:value:AVERAGE',
     'DEF:temp_min={file}:value:MIN',
     'DEF:temp_max={file}:value:MAX',
@@ -1787,7 +1926,7 @@ sub load_graph_definitions
     'GPRINT:users_max:MAX:%4.1lf Max,',
     'GPRINT:users_avg:LAST:%4.1lf Last\l'
     ],
-    voltage => [
+    voltage => ['-v', 'Voltage',
     'DEF:avg={file}:value:AVERAGE',
     'DEF:min={file}:value:MIN',
     'DEF:max={file}:value:MAX',