gangliaでoptional_graphをホストビューに追加する方法
[ganglia]
gangliaはクライアントをインストールするだけでさまざまなメトリクスが簡単に収集できるツール。
http://ganglia.sourceforge.net/
ただ標準だとノードごとoptional_graph出力が出来ないので、
以下の様な修正を加えてホストビューにもoptional_graphが表示されるようにした。
サーバ環境
- CentOS5.7
- PHP-5.3.8
- Ganglia Web 2.1.8
- ganglia monitor core 3.2.0
修正するファイル一覧(全てgweb配下)
- conf_default.php
gweb全体の設定をするファイル
- host_view.tpl
ホストビュー表示のテンプレートファイル
- host_view.php
変数を読み込んでホストビューに各表示をするためのファイル
詳細は公式のwikiを参照されたい
http://sourceforge.net/apps/trac/ganglia
修正内容
conf_default.php
- optional_graphを追加
170行目あたりに以下の変数がある。これがgraph.d↓に配置したoptionalグラフを表示させるか判定している。
$conf['optional_graphs'] = array('packet');
上記ではpacketのグラフがクラスタービューに表示されている状態。
表示されるoptional_graphを追加するにはここに変数を追加してやればよい。
$conf['optional_graphs'] = array('packet','apache_status','load_all');
このままだとすべてのクラスターで上記グラフが出てしまうので用途に応じて以下の様に変数を追加した。
webはapace,dbはmysqlのメトリクスが表示されるようにしている。
$conf['optional_graphs_web'] = array('packet','load_all','apache_status'); $conf['optional_graphs_db'] = array('packet','load_all','mysql_connections','mysql_innodb_bp_activity','mysql_innodb_io','mysql_qcache_hitrate','mysql_qcache_mem','mysql_qcache','mysql_query','mysql_select_types','mysql_table_locks');
host_view.tpl
- optional_graphs変数を表示できるように以下の値を追加する。(290行目あたり)
{foreach $optional_graphs_data graph} <a href="./graph_all_periods.php?{$graph.graph_args}&g={$graph.name}_report&z=large"> <img border=0 {$additional_cluster_img_html_args} title="{$cluster} {$graph.name}" src="./graph.php?{$graph.graph_args}&g={$graph.name}_report&z=medium"></a>
optional_graphs
- optional_graphsを表示するために以下の変数を追加
$graph_args = "h=$hostname&$get_metric_string&st=$cluster[LOCALTIME]";
↓
$graph_args = "h=$hostname&$get_metric_string&st=$cluster[LOCALTIME]&c=$cluster_url";
- optional_graphs変数を読み取れるように判定を追加する(90行目あたり)
if (ereg('db',$hostname)) { $data->assign("graph_args", $graph_args); if (!isset($conf['optional_graphs_db'])) $conf['optional_graphs_db'] = array(); $optional_graphs_data = array(); foreach ($conf['optional_graphs_db'] as $g) { $optional_graphs_data[$g]['name'] = $g; $data->assign("name", $optional_graphs_data[$g]['name']); $optional_graphs_data[$g]['graph_args'] = $graph_args; } $data->assign('optional_graphs_data', $optional_graphs_data); } if (ereg('web',$hostname)) { $data->assign("graph_args", $graph_args); if (!isset($conf['optional_graphs_web'])) $conf['optional_graphs_web'] = array(); $optional_graphs_data = array(); foreach ($conf['optional_graphs_web'] as $g) { $optional_graphs_data[$g]['name'] = $g; $data->assign("name", $optional_graphs_data[$g]['name']); $optional_graphs_data[$g]['graph_args'] = $graph_args; } $data->assign('optional_graphs_data', $optional_graphs_data); } if (!ereg('web|db',$hostname)) { $data->assign("graph_args", $graph_args); if (!isset($conf['optional_graphs'])) $conf['optional_graphs'] = array(); $optional_graphs_data = array(); foreach ($conf['optional_graphs'] as $g) { $optional_graphs_data[$g]['name'] = $g; $data->assign("name", $optional_graphs_data[$g]['name']); $optional_graphs_data[$g]['graph_args'] = $graph_args; } $data->assign('optional_graphs_data', $optional_graphs_data); }
上記の場合ではhostnameでweb,dbかどうか判定し、conf_default.phpで指定された変数をもとに表示するようになっている。