'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: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:ping_avg:AVERAGE:%4.1lf ms Avg,',
'GPRINT:ping_max:MAX:%4.1lf ms Max,',
'GPRINT:ping_avg:LAST:%4.1lf ms Last'],
+ pg_blks => ['DEF:pg_blks_avg={file}:value:AVERAGE',
+ 'DEF:pg_blks_min={file}:value:MIN',
+ 'DEF:pg_blks_max={file}:value:MAX',
+ "AREA:pg_blks_max#$HalfBlue",
+ "AREA:pg_blks_min#$Canvas",
+ "LINE1:pg_blks_avg#$FullBlue:Blocks",
+ 'GPRINT:pg_blks_min:MIN:%4.1lf%s 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',
+ "AREA:pg_n_tup_max#$HalfBlue",
+ "AREA:pg_n_tup_min#$Canvas",
+ "LINE1:pg_n_tup_avg#$FullBlue:Tuples",
+ 'GPRINT:pg_n_tup_min:MIN:%4.1lf%s Min,',
+ 'GPRINT:pg_n_tup_avg:AVERAGE:%4.1lf%s Avg,',
+ 'GPRINT:pg_n_tup_max:MAX:%4.1lf%s Max,',
+ 'GPRINT:pg_n_tup_avg:LAST:%4.1lf%s Last'],
+ pg_n_tup_g => ['DEF:pg_n_tup_avg={file}:value:AVERAGE',
+ 'DEF:pg_n_tup_min={file}:value:MIN',
+ 'DEF:pg_n_tup_max={file}:value:MAX',
+ "AREA:pg_n_tup_max#$HalfBlue",
+ "AREA:pg_n_tup_min#$Canvas",
+ "LINE1:pg_n_tup_avg#$FullBlue:Tuples",
+ 'GPRINT:pg_n_tup_min:MIN:%4.1lf%s Min,',
+ 'GPRINT:pg_n_tup_avg:AVERAGE:%4.1lf%s Avg,',
+ 'GPRINT:pg_n_tup_max:MAX:%4.1lf%s Max,',
+ 'GPRINT:pg_n_tup_avg:LAST:%4.1lf%s Last'],
+ pg_numbackends => ['DEF:pg_numbackends_avg={file}:value:AVERAGE',
+ 'DEF:pg_numbackends_min={file}:value:MIN',
+ 'DEF:pg_numbackends_max={file}:value:MAX',
+ "AREA:pg_numbackends_max#$HalfBlue",
+ "AREA:pg_numbackends_min#$Canvas",
+ "LINE1:pg_numbackends_avg#$FullBlue:Backends",
+ 'GPRINT:pg_numbackends_min:MIN:%4.1lf%s Min,',
+ 'GPRINT:pg_numbackends_avg:AVERAGE:%4.1lf%s Avg,',
+ 'GPRINT:pg_numbackends_max:MAX:%4.1lf%s Max,',
+ 'GPRINT:pg_numbackends_avg:LAST:%4.1lf%s Last'],
+ pg_scan => ['DEF:pg_scan_avg={file}:value:AVERAGE',
+ 'DEF:pg_scan_min={file}:value:MIN',
+ 'DEF:pg_scan_max={file}:value:MAX',
+ "AREA:pg_scan_max#$HalfBlue",
+ "AREA:pg_scan_min#$Canvas",
+ "LINE1:pg_scan_avg#$FullBlue:Scans",
+ 'GPRINT:pg_scan_min:MIN:%4.1lf%s Min,',
+ 'GPRINT:pg_scan_avg:AVERAGE:%4.1lf%s Avg,',
+ 'GPRINT:pg_scan_max:MAX:%4.1lf%s Max,',
+ 'GPRINT:pg_scan_avg:LAST:%4.1lf%s Last'],
+ pg_xact => ['DEF:pg_xact_avg={file}:value:AVERAGE',
+ 'DEF:pg_xact_min={file}:value:MIN',
+ 'DEF:pg_xact_max={file}:value:MAX',
+ "AREA:pg_xact_max#$HalfBlue",
+ "AREA:pg_xact_min#$Canvas",
+ "LINE1:pg_xact_avg#$FullBlue:Transactions",
+ 'GPRINT:pg_xact_min:MIN:%4.1lf%s Min,',
+ 'GPRINT:pg_xact_avg:AVERAGE:%4.1lf%s Avg,',
+ 'GPRINT:pg_xact_max:MAX:%4.1lf%s Max,',
+ 'GPRINT:pg_xact_avg:LAST:%4.1lf%s Last'],
power => ['-v', 'Watt',
'DEF:avg={file}:value:AVERAGE',
'DEF:min={file}:value:MIN',
'GPRINT:avg:LAST:%5.1lf%sV Last\l'
],
vs_threads => [
- "DEF:total_avg={file}:total:AVERAGE",
- "DEF:total_min={file}:total:MIN",
- "DEF:total_max={file}:total:MAX",
- "DEF:running_avg={file}:running:AVERAGE",
- "DEF:running_min={file}:running:MIN",
- "DEF:running_max={file}:running:MAX",
- "DEF:uninterruptible_avg={file}:uninterruptible:AVERAGE",
- "DEF:uninterruptible_min={file}:uninterruptible:MIN",
- "DEF:uninterruptible_max={file}:uninterruptible:MAX",
- "DEF:onhold_avg={file}:onhold:AVERAGE",
- "DEF:onhold_min={file}:onhold:MIN",
- "DEF:onhold_max={file}:onhold:MAX",
- "LINE1:total_avg#$FullYellow:Total ",
- 'GPRINT:total_min:MIN:%5.1lf Min,',
- 'GPRINT:total_avg:AVERAGE:%5.1lf Avg.,',
- 'GPRINT:total_max:MAX:%5.1lf Max,',
- 'GPRINT:total_avg:LAST:%5.1lf Last\l',
- "LINE1:running_avg#$FullRed:Running ",
- 'GPRINT:running_min:MIN:%5.1lf Min,',
- 'GPRINT:running_avg:AVERAGE:%5.1lf Avg.,',
- 'GPRINT:running_max:MAX:%5.1lf Max,',
- 'GPRINT:running_avg:LAST:%5.1lf Last\l',
- "LINE1:uninterruptible_avg#$FullGreen:Unintr ",
- 'GPRINT:uninterruptible_min:MIN:%5.1lf Min,',
- 'GPRINT:uninterruptible_avg:AVERAGE:%5.1lf Avg.,',
- 'GPRINT:uninterruptible_max:MAX:%5.1lf Max,',
- 'GPRINT:uninterruptible_avg:LAST:%5.1lf Last\l',
- "LINE1:onhold_avg#$FullBlue:Onhold ",
- 'GPRINT:onhold_min:MIN:%5.1lf Min,',
- 'GPRINT:onhold_avg:AVERAGE:%5.1lf Avg.,',
- 'GPRINT:onhold_max:MAX:%5.1lf Max,',
- 'GPRINT:onhold_avg:LAST:%5.1lf Last\l'
- ],
- vs_memory => [
- 'DEF:vm_avg={file}:vm:AVERAGE',
- 'DEF:vm_min={file}:vm:MIN',
- 'DEF:vm_max={file}:vm:MAX',
- 'DEF:vml_avg={file}:vml:AVERAGE',
- 'DEF:vml_min={file}:vml:MIN',
- 'DEF:vml_max={file}:vml:MAX',
- 'DEF:rss_avg={file}:rss:AVERAGE',
- 'DEF:rss_min={file}:rss:MIN',
- 'DEF:rss_max={file}:rss:MAX',
- 'DEF:anon_avg={file}:anon:AVERAGE',
- 'DEF:anon_min={file}:anon:MIN',
- 'DEF:anon_max={file}:anon:MAX',
- "LINE1:vm_avg#$FullYellow:VM ",
- 'GPRINT:vm_min:MIN:%5.1lf%s Min,',
- 'GPRINT:vm_avg:AVERAGE:%5.1lf%s Avg.,',
- 'GPRINT:vm_max:MAX:%5.1lf%s Avg.,',
- 'GPRINT:vm_avg:LAST:%5.1lf%s Last\l',
- "LINE1:vml_avg#$FullRed:Locked ",
- 'GPRINT:vml_min:MIN:%5.1lf%s Min,',
- 'GPRINT:vml_avg:AVERAGE:%5.1lf%s Avg.,',
- 'GPRINT:vml_max:MAX:%5.1lf%s Avg.,',
- 'GPRINT:vml_avg:LAST:%5.1lf%s Last\l',
- "LINE1:rss_avg#$FullGreen:RSS ",
- 'GPRINT:rss_min:MIN:%5.1lf%s Min,',
- 'GPRINT:rss_avg:AVERAGE:%5.1lf%s Avg.,',
- 'GPRINT:rss_max:MAX:%5.1lf%s Avg.,',
- 'GPRINT:rss_avg:LAST:%5.1lf%s Last\l',
- "LINE1:anon_avg#$FullBlue:Anon. ",
- 'GPRINT:anon_min:MIN:%5.1lf%s Min,',
- 'GPRINT:anon_avg:AVERAGE:%5.1lf%s Avg.,',
- 'GPRINT:anon_max:MAX:%5.1lf%s Avg.,',
- 'GPRINT:anon_avg:LAST:%5.1lf%s Last\l',
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#$HalfBlue",
+ "AREA:min#$Canvas",
+ "LINE1:avg#$FullBlue:Threads",
+ 'GPRINT:min:MIN:%5.1lf Min,',
+ 'GPRINT:avg:AVERAGE:%5.1lf Avg.,',
+ 'GPRINT:max:MAX:%5.1lf Max,',
+ 'GPRINT:avg:LAST:%5.1lf Last\l',
+ ],
+ vs_memory => ['-b', '1024', '-v', 'Bytes',
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#$HalfBlue",
+ "AREA:min#$Canvas",
+ "LINE1:avg#$FullBlue:",
+ 'GPRINT:min:MIN:%5.1lf%sbytes Min,',
+ 'GPRINT:avg:AVERAGE:%5.1lf%sbytes Avg.,',
+ 'GPRINT:max:MAX:%5.1lf%sbytes Max,',
+ 'GPRINT:avg:LAST:%5.1lf%sbytes Last\l',
],
vs_processes => [
- 'DEF:proc_avg={file}:total:AVERAGE',
- 'DEF:proc_min={file}:total:MIN',
- 'DEF:proc_max={file}:total:MAX',
- "AREA:proc_max#$HalfBlue",
- "AREA:proc_min#$Canvas",
- "LINE1:proc_avg#$FullBlue:Processes",
- 'GPRINT:proc_min:MIN:%4.1lf Min,',
- 'GPRINT:proc_avg:AVERAGE:%4.1lf Avg.,',
- 'GPRINT:proc_max:MAX:%4.1lf Max,',
- 'GPRINT:proc_avg:LAST:%4.1lf Last\l'
+ "DEF:avg={file}:value:AVERAGE",
+ "DEF:min={file}:value:MIN",
+ "DEF:max={file}:value:MAX",
+ "AREA:max#$HalfBlue",
+ "AREA:min#$Canvas",
+ "LINE1:avg#$FullBlue:Processes",
+ 'GPRINT:min:MIN:%5.1lf Min,',
+ 'GPRINT:avg:AVERAGE:%5.1lf Avg.,',
+ 'GPRINT:max:MAX:%5.1lf Max,',
+ 'GPRINT:avg:LAST:%5.1lf Last\l',
],
};
$GraphDefs->{'if_multicast'} = $GraphDefs->{'ipt_packets'};
@RRDDefaultArgs, @{$opts->{'rrd_opts'}});
my $max_inst_name = 0;
+ my @vnames = ();
+
+ for ($i = 0; $i < @$sources; $i++)
+ {
+ my $tmp = $sources->[$i]->{'name'};
+ $tmp =~ tr/A-Za-z0-9\-_/_/c;
+ $vnames[$i] = $i . $tmp;
+ }
for ($i = 0; $i < @$sources; $i++)
{
my $inst_data = $sources->[$i];
my $inst_name = $inst_data->{'name'} || confess;
my $file = $inst_data->{'file'} || confess;
+ my $vname = $vnames[$i];
if (length ($inst_name) > $max_inst_name)
{
confess ("No such file: $file") if (!-e $file);
push (@cmd,
- qq#DEF:${inst_name}_min=$file:value:MIN#,
- qq#DEF:${inst_name}_avg=$file:value:AVERAGE#,
- qq#DEF:${inst_name}_max=$file:value:MAX#,
- qq#CDEF:${inst_name}_nnl=${inst_name}_avg,UN,0,${inst_name}_avg,IF#);
+ qq#DEF:${vname}_min=$file:value:MIN#,
+ qq#DEF:${vname}_avg=$file:value:AVERAGE#,
+ qq#DEF:${vname}_max=$file:value:MAX#,
+ qq#CDEF:${vname}_nnl=${vname}_avg,UN,0,${vname}_avg,IF#);
}
{
- my $inst_data = $sources->[@$sources - 1];
- my $inst_name = $inst_data->{'name'};
+ my $vname = $vnames[@vnames - 1];
- push (@cmd, qq#CDEF:${inst_name}_stk=${inst_name}_nnl#);
+ push (@cmd, qq#CDEF:${vname}_stk=${vname}_nnl#);
}
for (my $i = 1; $i < @$sources; $i++)
{
- my $inst_data0 = $sources->[@$sources - ($i + 1)];
- my $inst_data1 = $sources->[@$sources - $i];
-
- my $inst_name0 = $inst_data0->{'name'};
- my $inst_name1 = $inst_data1->{'name'};
+ my $vname0 = $vnames[@vnames - ($i + 1)];
+ my $vname1 = $vnames[@vnames - $i];
- push (@cmd, qq#CDEF:${inst_name0}_stk=${inst_name0}_nnl,${inst_name1}_stk,+#);
+ push (@cmd, qq#CDEF:${vname0}_stk=${vname0}_nnl,${vname1}_stk,+#);
}
for (my $i = 0; $i < @$sources; $i++)
my $inst_data = $sources->[$i];
my $inst_name = $inst_data->{'name'};
+ my $vname = $vnames[$i];
+
my $legend = sprintf ('%-*s', $max_inst_name, $inst_name);
my $line_color;
}
$area_color = _color_to_string (_get_faded_color ($area_color));
- push (@cmd, qq(AREA:${inst_name}_stk#$area_color),
- qq(LINE1:${inst_name}_stk#$line_color:$legend),
- qq(GPRINT:${inst_name}_min:MIN:$number_format Min,),
- qq(GPRINT:${inst_name}_avg:AVERAGE:$number_format Avg,),
- qq(GPRINT:${inst_name}_max:MAX:$number_format Max,),
- qq(GPRINT:${inst_name}_avg:LAST:$number_format Last\\l),
+ push (@cmd, qq(AREA:${vname}_stk#$area_color),
+ qq(LINE1:${vname}_stk#$line_color:$legend),
+ qq(GPRINT:${vname}_min:MIN:$number_format Min,),
+ qq(GPRINT:${vname}_avg:AVERAGE:$number_format Avg,),
+ qq(GPRINT:${vname}_max:MAX:$number_format Max,),
+ qq(GPRINT:${vname}_avg:LAST:$number_format Last\\l),
);
}