diff --git a/contrib/collection.cgi b/contrib/collection.cgi
index cab7543f0e844d32b1c60861bd19ce893d180f97..cbdb76e846df35eed803e7de3940c03d00b98bdd 100755 (executable)
--- a/contrib/collection.cgi
+++ b/contrib/collection.cgi
'GPRINT:max:MAX:%5.1lf%sAh Max,',
'GPRINT:avg:LAST:%5.1lf%sAh Last\l'
],
+ connections => ['-v', 'Connections',
+ 'DEF:avg={file}:value:AVERAGE',
+ 'DEF:min={file}:value:MIN',
+ 'DEF:max={file}:value:MAX',
+ "AREA:max#$HalfBlue",
+ "AREA:min#$Canvas",
+ "LINE1:avg#$FullBlue:Connections",
+ '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'
+ ],
cpu => ['-v', 'CPU load',
'DEF:avg={file}:value:AVERAGE',
'DEF:min={file}:value:MIN',
'GPRINT:avg:LAST:%4.1lf Last\l'
],
spam_check => [
- 'DEF:avg={file}:hits:AVERAGE',
- 'DEF:min={file}:hits:MIN',
- 'DEF:max={file}:hits:MAX',
+ 'DEF:avg={file}:value:AVERAGE',
+ 'DEF:min={file}:value:MIN',
+ 'DEF:max={file}:value:MAX',
"AREA:max#$HalfMagenta",
"AREA:min#$Canvas",
"LINE1:avg#$FullMagenta:Count ",
'GPRINT:max:MAX:%4.1lf Max,',
'GPRINT:avg:LAST:%4.1lf Last\l'
],
+ conntrack => ['-v', 'Entries',
+ 'DEF:avg={file}:entropy:AVERAGE',
+ 'DEF:min={file}:entropy:MIN',
+ 'DEF:max={file}:entropy:MAX',
+ "AREA:max#$HalfBlue",
+ "AREA:min#$Canvas",
+ "LINE1:avg#$FullBlue:Count",
+ 'GPRINT:min:MIN:%4.0lf Min,',
+ 'GPRINT:avg:AVERAGE:%4.0lf Avg,',
+ 'GPRINT:max:MAX:%4.0lf Max,',
+ 'GPRINT:avg:LAST:%4.0lf Last\l'
+ ],
entropy => ['-v', 'Bits',
'DEF:avg={file}:entropy:AVERAGE',
'DEF:min={file}:entropy:MIN',
'GPRINT:spam:LAST:%4.1lf Last',
'HRULE:0#000000'
],
+ memcached_command => ['-v', 'Commands',
+ 'DEF:avg={file}:value:AVERAGE',
+ 'DEF:min={file}:value:MIN',
+ 'DEF:max={file}:value:MAX',
+ "AREA:max#$HalfBlue",
+ "AREA:min#$Canvas",
+ "LINE1:avg#$FullBlue:Commands",
+ 'GPRINT:min:MIN:%5.1lf%s Min,',
+ 'GPRINT:avg:AVERAGE:%5.1lf Avg,',
+ 'GPRINT:max:MAX:%5.1lf Max,',
+ 'GPRINT:avg:LAST:%5.1lf Last\l'
+ ],
+ memcached_connections => ['-v', 'Connections',
+ 'DEF:avg={file}:value:AVERAGE',
+ 'DEF:min={file}:value:MIN',
+ 'DEF:max={file}:value:MAX',
+ "AREA:max#$HalfBlue",
+ "AREA:min#$Canvas",
+ "LINE1:avg#$FullBlue:Connections",
+ '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'
+ ],
+ memcached_items => ['-v', 'Items',
+ 'DEF:avg={file}:value:AVERAGE',
+ 'DEF:min={file}:value:MIN',
+ 'DEF:max={file}:value:MAX',
+ "AREA:max#$HalfBlue",
+ "AREA:min#$Canvas",
+ "LINE1:avg#$FullBlue:Items",
+ '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'
+ ],
+ memcached_octets => ['-v', 'Bits/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: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,+',
+ 'CDEF:out_bit_min=out_min,8,*',
+ 'CDEF:out_bit_avg=out_avg,8,*',
+ 'CDEF:out_bit_max=out_max,8,*',
+ 'CDEF:inc_bit_min=inc_min,8,*',
+ 'CDEF:inc_bit_avg=inc_avg,8,*',
+ 'CDEF:inc_bit_max=inc_max,8,*',
+ 'CDEF:overlap=out_bit_avg,inc_bit_avg,GT,inc_bit_avg,out_bit_avg,IF',
+ "AREA:out_bit_avg#$HalfGreen",
+ "AREA:inc_bit_avg#$HalfBlue",
+ "AREA:overlap#$HalfBlueGreen",
+ "LINE1:out_bit_avg#$FullGreen:Written",
+ 'GPRINT:out_bit_avg:AVERAGE:%5.1lf%s Avg,',
+ 'GPRINT:out_bit_max:MAX:%5.1lf%s Max,',
+ 'GPRINT:out_bit_avg:LAST:%5.1lf%s Last',
+ 'GPRINT:out_avg_sum:LAST:(ca. %5.1lf%sB Total)\l',
+ "LINE1:inc_bit_avg#$FullBlue:Read ",
+ 'GPRINT:inc_bit_avg:AVERAGE:%5.1lf%s Avg,',
+ 'GPRINT:inc_bit_max:MAX:%5.1lf%s Max,',
+ 'GPRINT:inc_bit_avg:LAST:%5.1lf%s Last',
+ 'GPRINT:inc_avg_sum:LAST:(ca. %5.1lf%sB Total)\l'
+ ],
+ memcached_ops => ['-v', 'Ops',
+ 'DEF:avg={file}:value:AVERAGE',
+ 'DEF:min={file}:value:MIN',
+ 'DEF:max={file}:value:MAX',
+ "AREA:max#$HalfBlue",
+ "AREA:min#$Canvas",
+ "LINE1:avg#$FullBlue:Ops",
+ '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'
+ ],
memory => ['-b', '1024', '-v', 'Bytes',
'DEF:avg={file}:value:AVERAGE',
'DEF:min={file}:value:MIN',
'GPRINT:pg_blks_avg:AVERAGE:%4.1lf%s Avg,',
'GPRINT:pg_blks_max:MAX:%4.1lf%s Max,',
'GPRINT:pg_blks_avg:LAST:%4.1lf%s Last'],
+ pg_db_size => ['DEF:pg_db_size_avg={file}:value:AVERAGE',
+ 'DEF:pg_db_size_min={file}:value:MIN',
+ 'DEF:pg_db_size_max={file}:value:MAX',
+ "AREA:pg_db_size_max#$HalfBlue",
+ "AREA:pg_db_size_min#$Canvas",
+ "LINE1:pg_db_size_avg#$FullBlue:Bytes",
+ 'GPRINT:pg_db_size_min:MIN:%4.1lf%s Min,',
+ 'GPRINT:pg_db_size_avg:AVERAGE:%4.1lf%s Avg,',
+ 'GPRINT:pg_db_size_max:MAX:%4.1lf%s Max,',
+ 'GPRINT:pg_db_size_avg:LAST:%4.1lf%s Last'],
pg_n_tup_c => ['DEF:pg_n_tup_avg={file}:value:AVERAGE',
'DEF:pg_n_tup_min={file}:value:MIN',
'DEF:pg_n_tup_max={file}:value:MAX',
'GPRINT:max:MAX:%5.1lf Max,',
'GPRINT:avg:LAST:%5.1lf Last\l',
],
+ vmpage_number => ['-v', 'Pages',
+ 'DEF:avg={file}:value:AVERAGE',
+ 'DEF:min={file}:value:MIN',
+ 'DEF:max={file}:value:MAX',
+ "AREA:max#$HalfBlue",
+ "AREA:min#$Canvas",
+ "LINE1:avg#$FullBlue:Number",
+ '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'
+ ],
+ vmpage_faults => [
+ "DEF:minf_avg={file}:minflt:AVERAGE",
+ "DEF:minf_min={file}:minflt:MIN",
+ "DEF:minf_max={file}:minflt:MAX",
+ "DEF:majf_avg={file}:majflt:AVERAGE",
+ "DEF:majf_min={file}:majflt:MIN",
+ "DEF:majf_max={file}:majflt:MAX",
+ 'CDEF:overlap=majf_avg,minf_avg,GT,minf_avg,majf_avg,IF',
+ "AREA:majf_avg#$HalfGreen",
+ "AREA:minf_avg#$HalfBlue",
+ "AREA:overlap#$HalfBlueGreen",
+ "LINE1:majf_avg#$FullGreen:Major",
+ 'GPRINT:majf_min:MIN:%5.1lf%s Min,',
+ 'GPRINT:majf_avg:AVERAGE:%5.1lf%s Avg,',
+ 'GPRINT:majf_max:MAX:%5.1lf%s Max,',
+ 'GPRINT:majf_avg:LAST:%5.1lf%s Last\l',
+ "LINE1:minf_avg#$FullBlue:Minor",
+ 'GPRINT:minf_min:MIN:%5.1lf%s Min,',
+ 'GPRINT:minf_avg:AVERAGE:%5.1lf%s Avg,',
+ 'GPRINT:minf_max:MAX:%5.1lf%s Max,',
+ 'GPRINT:minf_avg:LAST:%5.1lf%s Last\l'
+ ],
+ vmpage_io => [
+ "DEF:rpag_avg={file}:in:AVERAGE",
+ "DEF:rpag_min={file}:in:MIN",
+ "DEF:rpag_max={file}:in:MAX",
+ "DEF:wpag_avg={file}:out:AVERAGE",
+ "DEF:wpag_min={file}:out:MIN",
+ "DEF:wpag_max={file}:out:MAX",
+ 'CDEF:overlap=wpag_avg,rpag_avg,GT,rpag_avg,wpag_avg,IF',
+ "AREA:wpag_avg#$HalfGreen",
+ "AREA:rpag_avg#$HalfBlue",
+ "AREA:overlap#$HalfBlueGreen",
+ "LINE1:wpag_avg#$FullGreen:OUT",
+ 'GPRINT:wpag_min:MIN:%5.1lf%s Min,',
+ 'GPRINT:wpag_avg:AVERAGE:%5.1lf%s Avg,',
+ 'GPRINT:wpag_max:MAX:%5.1lf%s Max,',
+ 'GPRINT:wpag_avg:LAST:%5.1lf%s Last\l',
+ "LINE1:rpag_avg#$FullBlue:IN ",
+ 'GPRINT:rpag_min:MIN:%5.1lf%s Min,',
+ 'GPRINT:rpag_avg:AVERAGE:%5.1lf%s Avg,',
+ 'GPRINT:rpag_max:MAX:%5.1lf%s Max,',
+ 'GPRINT:rpag_avg:LAST:%5.1lf%s Last\l'
+ ],
+ vmpage_action => ['-v', 'Pages',
+ 'DEF:avg={file}:value:AVERAGE',
+ 'DEF:min={file}:value:MIN',
+ 'DEF:max={file}:value:MAX',
+ "AREA:max#$HalfBlue",
+ "AREA:min#$Canvas",
+ "LINE1:avg#$FullBlue:Number",
+ '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'
+ ],
+ virt_cpu_total => ['-v', 'Milliseconds',
+ 'DEF:avg_raw={file}:ns:AVERAGE',
+ 'DEF:min_raw={file}:ns:MIN',
+ 'DEF:max_raw={file}:ns:MAX',
+ 'CDEF:avg=avg_raw,1000000,/',
+ 'CDEF:min=min_raw,1000000,/',
+ 'CDEF:max=max_raw,1000000,/',
+ "AREA:avg#$HalfBlue",
+ "LINE1:avg#$FullBlue:CPU time",
+ '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'
+ ],
};
$GraphDefs->{'if_multicast'} = $GraphDefs->{'ipt_packets'};
$GraphDefs->{'if_tx_errors'} = $GraphDefs->{'if_rx_errors'};
$GraphDefs->{'dns_qtype'} = $GraphDefs->{'dns_opcode'};
$GraphDefs->{'dns_rcode'} = $GraphDefs->{'dns_opcode'};
+ $GraphDefs->{'vmpage_io-memory'} = $GraphDefs->{'vmpage_io'};
+ $GraphDefs->{'vmpage_io-swap'} = $GraphDefs->{'vmpage_io'};
+ $GraphDefs->{'virt_cpu_total'} = $GraphDefs->{'virt_cpu_total'};
$MetaGraphDefs->{'cpu'} = \&meta_graph_cpu;
$MetaGraphDefs->{'dns_qtype'} = \&meta_graph_dns;
$MetaGraphDefs->{'mysql_commands'} = \&meta_graph_mysql_commands;
$MetaGraphDefs->{'mysql_handler'} = \&meta_graph_mysql_commands;
$MetaGraphDefs->{'tcp_connections'} = \&meta_graph_tcp_connections;
+ $MetaGraphDefs->{'vmpage_number'} = \&meta_graph_vmpage_number;
+ $MetaGraphDefs->{'vmpage_action'} = \&meta_graph_vmpage_action;
} # load_graph_definitions
sub meta_graph_generic_stack
return (meta_graph_generic_stack ($opts, $sources));
} # meta_graph_tcp_connections
+
+sub meta_graph_vmpage_number
+{
+ confess ("Wrong number of arguments") if (@_ != 5);
+
+ my $host = shift;
+ my $plugin = shift;
+ my $plugin_instance = shift;
+ my $type = shift;
+ my $type_instances = shift;
+
+ my $opts = {};
+ my $sources = [];
+
+ $opts->{'title'} = "$host/$plugin"
+ . (defined ($plugin_instance) ? "-$plugin_instance" : '') . "/$type";
+ $opts->{'number_format'} = '%6.2lf';
+
+ $opts->{'rrd_opts'} = ['-v', 'Pages'];
+
+ my @files = ();
+
+ $opts->{'colors'} =
+ {
+ anon_pages => '00e000',
+ bounce => '00e0ff',
+ dirty => '00e0a0',
+ file_pages => 'f000f0',
+ mapped => 'f000a0',
+ page_table_pages => 'ffb000',
+ slab => '0000f0',
+ unstable => '0000a0',
+ writeback => 'ff0000',
+ };
+
+ _custom_sort_arrayref ($type_instances,
+ [reverse qw(anon_pages bounce dirty file_pages mapped page_table_pages slab unstable writeback)]);
+
+ for (@$type_instances)
+ {
+ my $inst = $_;
+ my $file = '';
+ my $title = $opts->{'title'};
+
+ for (@DataDirs)
+ {
+ if (-e "$_/$title-$inst.rrd")
+ {
+ $file = "$_/$title-$inst.rrd";
+ last;
+ }
+ }
+ confess ("No file found for $title") if ($file eq '');
+
+ push (@$sources,
+ {
+ name => $inst,
+ file => $file
+ }
+ );
+ } # for (@$type_instances)
+
+ return (meta_graph_generic_stack ($opts, $sources));
+} # meta_graph_vmpage_number
+
+sub meta_graph_vmpage_action
+{
+ confess ("Wrong number of arguments") if (@_ != 5);
+
+ my $host = shift;
+ my $plugin = shift;
+ my $plugin_instance = shift;
+ my $type = shift;
+ my $type_instances = shift;
+
+ my $opts = {};
+ my $sources = [];
+
+ $opts->{'title'} = "$host/$plugin"
+ . (defined ($plugin_instance) ? "-$plugin_instance" : '') . "/$type";
+ $opts->{'number_format'} = '%6.2lf';
+
+ $opts->{'rrd_opts'} = ['-v', 'Pages'];
+
+ my @files = ();
+
+ $opts->{'colors'} =
+ {
+ activate => '00e000',
+ deactivate => '00e0ff',
+ free => '00e0a0',
+ alloc => 'f000f0',
+ refill => 'f000a0',
+ scan_direct => 'ffb000',
+ scan_kswapd => '0000f0',
+ steal => '0000a0',
+ };
+
+ _custom_sort_arrayref ($type_instances,
+ [reverse qw(activate deactivate alloc free refill scan_direct scan_kswapd steal)]);
+
+ for (@$type_instances)
+ {
+ my $inst = $_;
+ my $file = '';
+ my $title = $opts->{'title'};
+
+ for (@DataDirs)
+ {
+ if (-e "$_/$title-$inst.rrd")
+ {
+ $file = "$_/$title-$inst.rrd";
+ last;
+ }
+ }
+ confess ("No file found for $title") if ($file eq '');
+
+ push (@$sources,
+ {
+ name => $inst,
+ file => $file
+ }
+ );
+ } # for (@$type_instances)
+
+ return (meta_graph_generic_stack ($opts, $sources));
+} # meta_graph_vmpage_action
# vim: shiftwidth=2:softtabstop=2:tabstop=8