CapacityRemainingGBと、CapacityTotalGBと、CapacityUsedGBの値はgangliaで取れているとします(昨日のブログを見てください)。これを元に、
HDFS容量のグラフを書きます。昨日のブログの作業はNameNodeでしたが、今日の作業はgangliaのweb画面を生成しているサーバで行います。
クラスタ毎に異なる画面(テンプレート)を使えるように、/var/www/html/ganglia/conf.
php の $template_name の部分を以下のように変更します。なお、NameNodeはGanglia上でNameNodeという
クラスタに属し、それ以外のサーバはそれ以外の
クラスタに属しています。
変更前 | $template_name = "default"; |
変更後 | $template_name = isset($_GET["c"]) ?
escapeshellcmd( htmlentities( rawurldecode($_GET["c"]) ) ) : "default"; |
$_GET["c"] で
クラスタ名が得られるので、これをテンプレート名にしています。これにより/var/www/html/ganglia/templates/
クラスタ名/ほげほげ.
tpl が画面描写のテンプレートになります。なお、
クラスタ名
ディレクトリにファイルがない場合は、/var/www/html/ganglia/templates/default/ほげほげ.
tplが使われるので、変更のあるテンプレートのみを定義すればよです。
gangliaのロゴが正常に表示できるように、/var/www/html/ganglia/templates/default/header.
tplを以下のように直します。
変更前 | <IMG SRC="{images}/logo.jpg" HEIGHT="91" WIDTH="150" |
変更後 | <IMG SRC="{images}" HEIGHT="91" WIDTH="150" |
/var/www/html/ganglia/header.
php も以下のように直します。
変更前 | $tpl->assign("images","./templates/$template_name/images"); |
変更後 | $tpl->assign("images",template("images/logo.jpg") ); |
HDFS容量のグラフを書くために、/var/www/html/ganglia/graph.d/
hdfs_report.
phpを作成します。
#cat > /var/www/html/ganglia/graph.d/hdfs_report.php <<EOF
<?php
/* Pass in by reference! */
function graph_hdfs_report ( &$rrdtool_graph ) {
global $context,
$hostname,
$cpu_nice_color,
$cpu_user_color,
$cpu_num_color,
$range,
$rrd_dir,
$size,
$strip_domainname;
if ($strip_domainname) {
$hostname = strip_domainname($hostname);
}
$title = 'Hdfs';
$rrdtool graph['height'] += ($size == 'medium') ? 28 : 0;
if ($context != 'host') {
$rrdtool_graph['title'] = $title;
} else {
$rrdtool_graph['title'] = "$hostname $title last $range";
}
$rrdtool_graph['lower-limit'] = '0';
$rrdtool_graph['vertical-label'] = 'Bytes';
$rrdtool_graph['extras'] = '--rigid --base 1024';
$series = "DEF:'cap_total'='${rrd_dir}/CapacityTotalGB.rrd':'sum':AVERAGE "
."DEF:'cap_used'='${rrd_dir}/CapacityUsedGB.rrd':'sum':AVERAGE "
."DEF:'cap_remain'='${rrd_dir}/CapacityRemainingGB.rrd':'sum':AVERAGE "
."CDEF:'bcap_total'=cap_total,1073741824,* "
."CDEF:'bcap_used'=cap_used,1073741824,* "
."CDEF:'bcap_remain'=cap_remain,1073741824,* "
."CDEF:'bcap_nondfs'='bcap_total','bcap_used',-,'bcap_remain',- "
."AREA:'bcap_used'#$cpu_user_color:'DFS Used' "
."STACK:'bcap_nondfs'#$cpu_nice_color:'Non DFS Used' "
."LINE2:'bcap_total'#$cpu_num_color:'Configured Capacity' ";
$rrdtool_graph['series'] = $series;
return $rrdtool_graph;
}
?>
EOF |
--rigid は lower-limit を強制する
rrdtoolの設定です。--base 1024 は、通常は1K=1000であるのを、1K=1024としてグラフを書くための
rrdtoolの設定です。色はCPUのグラフの色を拝借しています。最後に余計な改行があるとグラフ生成に失敗します。
NameNode用のcluster_view.
tplとhost_view.
tplを作ります。/var/www/html/ganglia/templates
ディレクトリにNameNode
ディレクトリを作り、/var/www/html/ganglia/templates/default
ディレクトリのcluster_view.
tplとhost_view.
tplをコピーします。
#mkdir /var/www/html/ganglia/templates/NameNode
#cp /var/www/html/ganglia/templates/default/cluster_view.tpl /var/www/html/ganglia/templates/NameNode/
#cp /var/www/html/ganglia/templates/default/host_view.tpl /var/www/html/ganglia/templates/NameNode/ |
それぞれのファイルのそれっぽい場所に
HDFSグラフを描く設定をいれます。
cluster_view.tpl | <A HREF="./graph.php?g=hdfs_report&z=large&{graph_args}">
<IMG BORDER=0 ALT="{cluster} HDFS"
SRC="./graph.php?g=hdfs_report&z=medium&{graph_args}">
</A> |
host_view.tpl | <A HREF="./graph.php?g=hdfs_report&z=large&c={cluster_url}&{graphargs}">
<IMG BORDER=0 ALT="{cluster_url} HDFS"
SRC="./graph.php?g=hdfs_report&z=medium&c={cluster_url}&{graphargs}">
</A> |