メタデータの末尾にスキップ
メタデータの先頭に移動

クラスタを監視するために、Clustrix Support Forums で見つかる Nagios pluginを使用します。nagios pluginの情報は付属するREADMEファイルの中で見つけることができるでしょう。

追加の統計はstatd (/bin/statd.py) を使って取得することができます。これはクラスタ全体の統計の集合とトラッキングの仕組みです。このスクリプトは各ノードで実行(しかし、一度に1つのインスタンスのみアクティブになります)し、内部システムテーブルからclustrix_statd データベースのテーブルに統計を集めます: clustrix_statd_metadata, clustrix_statd_current, clustrix_statd_history。

statdは30秒ごとに実行し、現在の値を statd_current に格納します。履歴データは 300秒ごとに更新されます。

スキーマ

USE Clustrix_statd;
DESCRIBE statd_metadata;

フィールド

種類

Null

キー

デフォルト

Extra

id

int(11) unsigned

いいえ

PRI

NULL

Auto_increment

名前

varchar(21845)

いいえ

UNI

NULL

 


DESCRIBE statd_current;

フィールド

種類

Null

キー

デフォルト

Extra

id

int(11) unsigned

いいえ

PRI

NULL

 

timestamp

datetime

はい。

 

current_timestamp

 

double

はい。

 

NULL

 


DESCRIBE statd_history;

フィールド

種類

Null

キー

デフォルト

Extra

id

int(11) unsigned

いいえ

PRI

NULL

 

timestamp

datetime

はい。

 

current_timestamp

 

double

はい。

 

NULL

 

Syntax for statd_current queries
 SELECT name,value 
   FROM statd_metadata 
NATURAL JOIN statd_current 
  WHERE name LIKE '%mvcc%'
  ORDER BY name;


Syntax for statd_history queries
SELECT timestamp,value 
   FROM statd_metadata
NATURAL JOIN statd_history
  WHERE name IN ('clustrix.cpu.load_avg')
    AND timestamp BETWEEN '2011-10-20 09:30:01'
    AND '2011-10-20 10:30:01'
  ORDER BY timestamp, name;

statdの利用

It may be necessary to look at several pieces of statd information side-by-side to get a more systemic view of performance. The ultimate product of this approach is a view that shows several performance metrics joined to the same timestamp. これは、もっと詳細な解析をするための情報のExcelのスプレッドシートの作成を容易にします。

やり方

  1. statd_meatdata と statd_history を組み合わせたview を作成する
  2. データのサブセットを持つためのテーブルを作成する
  3. テーブルを埋める
  4. データのサブセットを持つテーブルを自己joinします。

1. statd_metadataとstatd_historyの組み合わせの幾つかのviewを作成します。Time period examined is constrained so that the view executes quickly.

USE clustrix_statd;
CREATE VIEW `vStatd_1d` AS select * from statd_metadata natural join statd_history where timestamp between date_add(now(), interval -1 day) and now();

2. データのサブセットを持つテーブルを作成します。

USE clustrix_statd;
CREATE TABLE `TEMP_Export` (
  `timestamp` datetime,
  `name` varchar(255) CHARACTER SET utf8,
  `value` double,
  KEY `idxTimestamp` (`timestamp`)
);


3. テーブルを埋めます。

USE clustrix_statd;
TRUNCATE TABLE tTEMP_Export;
INSERT INTO tTEMP_Export 
     SELECT *
       FROM vStatd_1d
      WHERE name in 
( 'clustrix.cpu.load.node.1.cpu.0', 'clustrix.cpu.load.node.1.cpu.1', 'clustrix.cpu.load.node.1.cpu.2','clustrix.cpu.load.node.1.cpu.3', 'clustrix.cpu.load.node.1.cpu.4','clustrix.cpu.load.node.1.cpu.5', 'clustrix.cpu.load.node.1.cpu.6','clustrix.cpu.load.node.1.cpu.7', 'clustrix.cpu.load.node.2.cpu.0','clustrix.cpu.load.node.2.cpu.1', 'clustrix.cpu.load.node.2.cpu.2','clustrix.cpu.load.node.2.cpu.3', 'clustrix.cpu.load.node.2.cpu.4','clustrix.cpu.load.node.2.cpu.5', 'clustrix.cpu.load.node.2.cpu.6','clustrix.cpu.load.node.2.cpu.7', 'clustrix.cpu.load_avg','clustrix.cpu.load_max', 'clustrix.cpu.load_min','clustrix.cpu.total_busy', 'clustrix.cpu.total_busy.node.1.cpu.0','clustrix.cpu.total_busy.node.1.cpu.1', 'clustrix.cpu.total_busy.node.1.cpu.2','clustrix.cpu.total_busy.node.1.cpu.3','clustrix.cpu.total_busy.node.1.cpu.4','clustrix.cpu.total_busy.node.1.cpu.5','clustrix.cpu.total_busy.node.1.cpu.6','clustrix.cpu.total_busy.node.1.cpu.7','clustrix.cpu.total_busy.node.2.cpu.0','clustrix.cpu.total_busy.node.2.cpu.1','clustrix.cpu.total_busy.node.2.cpu.2','clustrix.cpu.total_busy.node.2.cpu.3','clustrix.cpu.total_busy.node.2.cpu.4','clustrix.cpu.total_busy.node.2.cpu.5','clustrix.cpu.total_busy.node.2.cpu.6','clustrix.cpu.total_busy.node.2.cpu.7','clustrix.cpu.total_busy_per_sec', 'clustrix.memory.bm_util_pct','clustrix.response_time.read_us', 'clustrix.response_time.write_us');


4. データのサブセットを持つテーブルを自己joinします。

USE clustrix_statd; 
CREATE VIEW vStatd_Megajoin AS 
   SELECT aaa.timestamp, aaa.value AS `clustrix.cpu.load.node.1.cpu.0`, aab.value as `clustrix.cpu.load.node.1.cpu.1`, aac.value as `clustrix.cpu.load.node.1.cpu.2`, aad.value as `clustrix.cpu.load.node.1.cpu.3`, aae.value as `clustrix.cpu.load.node.1.cpu.4`, aaf.value as `clustrix.cpu.load.node.1.cpu.5`, aag.value as `clustrix.cpu.load.node.1.cpu.6`, aah.value as `clustrix.cpu.load.node.1.cpu.7`, aai.value as `clustrix.cpu.load.node.2.cpu.0`, aaj.value as `clustrix.cpu.load.node.2.cpu.1`, aak.value as `clustrix.cpu.load.node.2.cpu.2`, aal.value as `clustrix.cpu.load.node.2.cpu.3`, aam.value as `clustrix.cpu.load.node.2.cpu.4`, aan.value as `clustrix.cpu.load.node.2.cpu.5`, aao.value as `clustrix.cpu.load.node.2.cpu.6`, aap.value as `clustrix.cpu.load.node.2.cpu.7`, aaq.value as `clustrix.cpu.load_avg`,aar.value as `clustrix.cpu.load_max`, aas.value as `clustrix.cpu.load_min`, aat.value as `clustrix.cpu.total_busy`,aau.value as `clustrix.cpu.total_busy.node.1.cpu.0`, aAv.value as `clustrix.cpu.total_busy.node.1.cpu.1`, aaw.value as `clustrix.cpu.total_busy.node.1.cpu.2`, aax.value as `clustrix.cpu.total_busy.node.1.cpu.3`, aay.value as `clustrix.cpu.total_busy.node.1.cpu.4`, aaz.value as `clustrix.cpu.total_busy.node.1.cpu.5`, aba.value as `clustrix.cpu.total_busy.node.1.cpu.6`, abb.value as `clustrix.cpu.total_busy.node.1.cpu.7`, abc.value as `clustrix.cpu.total_busy.node.2.cpu.0`, abd.value as `clustrix.cpu.total_busy.node.2.cpu.1`, abe.value as `clustrix.cpu.total_busy.node.2.cpu.2`, abf.value as `clustrix.cpu.total_busy.node.2.cpu.3`, abg.value as `clustrix.cpu.total_busy.node.2.cpu.4`, abh.value as `clustrix.cpu.total_busy.node.2.cpu.5`, abi.value as `clustrix.cpu.total_busy.node.2.cpu.6`, abj.value as `clustrix.cpu.total_busy.node.2.cpu.7`, abk.value as `clustrix.cpu.total_busy_per_sec`, abl.value as `clustrix.memory.bm_util_pct`, abm.value as `clustrix.response_time.read_us`, abn.value as `clustrix.response_time.write_us`
 FROM tTemp_Export aaa INNER JOIN tTemp_Export aab on aaa.timestamp = aab.timestamp inner join tTemp_Export aac on aaa.timestamp = aac.timestamp inner join tTemp_Export aad on aaa.timestamp = aad.timestamp inner join tTemp_Export aae on aaa.timestamp = aae.timestamp inner join tTemp_Export aaf on aaa.timestamp = aaf.timestamp inner join tTemp_Export aag on aaa.timestamp = aag.timestamp inner join tTemp_Export aah on aaa.timestamp = aah.timestamp inner join tTemp_Export aai on aaa.timestamp = aai.timestamp inner join tTemp_Export aaj on aaa.timestamp = aaj.timestamp inner join tTemp_Export aak on aaa.timestamp = aak.timestamp inner join tTemp_Export aal on aaa.timestamp = aal.timestamp inner join tTemp_Export aam on aaa.timestamp = aam.timestamp inner join tTemp_Export aan on aaa.timestamp = aan.timestamp inner join tTemp_Export aao on aaa.timestamp = aao.timestamp inner join tTemp_Export aap on aaa.timestamp = aap.timestamp inner join tTemp_Export aaq on aaa.timestamp = aaq.timestamp inner join tTemp_Export aar on aaa.timestamp = aar.timestamp inner join tTemp_Export aas on aaa.timestamp = aas.timestamp inner join tTemp_Export aat on aaa.timestamp = aat.timestamp inner join tTemp_Export aau on aaa.timestamp = aau.timestamp inner join tTemp_Export aAv on aaa.timestamp = aAv.timestamp inner join tTemp_Export aaw on aaa.timestamp = aaw.timestamp inner join tTemp_Export aax on aaa.timestamp = aax.timestamp inner join tTemp_Export aay on aaa.timestamp = aay.timestamp inner join tTemp_Export aaz on aaa.timestamp = aaz.timestamp inner join tTemp_Export aba on aaa.timestamp = aba.timestamp inner join tTemp_Export abb on aaa.timestamp = abb.timestamp inner join tTemp_Export abc on aaa.timestamp = abc.timestamp inner join tTemp_Export abd on aaa.timestamp = abd.timestamp inner join tTemp_Export abe on aaa.timestamp = abe.timestamp inner join tTemp_Export abf on aaa.timestamp = abf.timestamp inner join tTemp_Export abg on aaa.timestamp = abg.timestamp inner join tTemp_Export abh on aaa.timestamp = abh.timestamp inner join tTemp_Export abi on aaa.timestamp = abi.timestamp inner join tTemp_Export abj on aaa.timestamp = abj.timestamp inner join tTemp_Export abk on aaa.timestamp = abk.timestamp inner join tTemp_Export abl on aaa.timestamp = abl.timestamp inner join tTemp_Export abm on aaa.timestamp = abm.timestamp inner join tTemp_Export abn on aaa.timestamp = abn.timestamp WHERE aaa.name = 'clustrix.cpu.load.node.1.cpu.0' and aab.name = 'clustrix.cpu.load.node.1.cpu.1' and aac.name = 'clustrix.cpu.load.node.1.cpu.2' and aad.name = 'clustrix.cpu.load.node.1.cpu.3' and aae.name = 'clustrix.cpu.load.node.1.cpu.4' and aaf.name = 'clustrix.cpu.load.node.1.cpu.5' and aag.name = 'clustrix.cpu.load.node.1.cpu.6' and aah.name = 'clustrix.cpu.load.node.1.cpu.7' and aai.name = 'clustrix.cpu.load.node.2.cpu.0' and aaj.name = 'clustrix.cpu.load.node.2.cpu.1' and aak.name = 'clustrix.cpu.load.node.2.cpu.2' and aal.name = 'clustrix.cpu.load.node.2.cpu.3' and aam.name = 'clustrix.cpu.load.node.2.cpu.4' and aan.name = 'clustrix.cpu.load.node.2.cpu.5' and aao.name = 'clustrix.cpu.load.node.2.cpu.6' and aap.name = 'clustrix.cpu.load.node.2.cpu.7' and aaq.name = 'clustrix.cpu.load_avg'AND aar.name = 'clustrix.cpu.load_max' AND aas.name = 'clustrix.cpu.load_min' AND aat.name = 'clustrix.cpu.total_busy' AND aau.name = 'clustrix.cpu.total_busy.node.1.cpu.0' and aAv.name = 'clustrix.cpu.total_busy.node.1.cpu.1' and aaw.name = 'clustrix.cpu.total_busy.node.1.cpu.2' and aax.name = 'clustrix.cpu.total_busy.node.1.cpu.3' and aay.name = 'clustrix.cpu.total_busy.node.1.cpu.4' and aaz.name = 'clustrix.cpu.total_busy.node.1.cpu.5' and aba.name = 'clustrix.cpu.total_busy.node.1.cpu.6' and abb.name = 'clustrix.cpu.total_busy.node.1.cpu.7' and abc.name = 'clustrix.cpu.total_busy.node.2.cpu.0' and abd.name = 'clustrix.cpu.total_busy.node.2.cpu.1' and abe.name = 'clustrix.cpu.total_busy.node.2.cpu.2' and abf.name = 'clustrix.cpu.total_busy.node.2.cpu.3' and abg.name = 'clustrix.cpu.total_busy.node.2.cpu.4' and abh.name = 'clustrix.cpu.total_busy.node.2.cpu.5' and abi.name = 'clustrix.cpu.total_busy.node.2.cpu.6' and abj.name = 'clustrix.cpu.total_busy.node.2.cpu.7' and abk.name = 'clustrix.cpu.total_busy_per_sec' and abl.name = 'clustrix.memory.bm_util_pct' and abm.name = 'clustrix.response_time.read_us' and abn.name = 'clustrix.response_time.write_us';


Statd 統計

幾つかの代表的な値を使って、利用可能な全ての統計を見るには、以下のコマンドを発行します:

SELECT name, value FROM statd_current NATURAL JOIN statd_metadata WHERE name LIKE 'clustrix.cluster%' OR name LIKE 'clustrix.cpu.load_%' OR name LIKE 'clustrix.stats%node.1%' OR name LIKE '%node.1.vdev.2' OR name LIKE '%node.1.cpu.1' OR (name NOT LIKE '%vdev%' AND name NOT LIKE '%

便利なパフォーマンス統計

統計値
注釈
clustrix.qps, tps明示的なトランザクションが使われない場合は、全く同じになるでしょう。 
clustrix.cpu.load_avg, load_max, load_min

全てのCPUコアの平均のCPU負荷、一番忙しいCPUコアの負荷、および最も忙しくないCPUコアの負荷を示します。

core 0 は特定の活動のために予約され、従って他のコアに比べて低いCPU利用率を反映することがしばしばあるでしょう。

clustrix.stats.bm_miss_rate

どれだけのページがバッファマネージャーキャッシュの取得をミスしているかを示します(100パーセンテージ)。

バックアップのような活動(あまりアクセスされないデータを大量に読みます)は、この値をスパイクするでしょう。

2よりずっと大きな値は、応答時間の増加と相互関係にあります。

clustrix.stats.Com_<operation>

(delete, insert, update, select, alter, etc.)

各オペレーションに関して実行カウンターを提供します。

各オペレーションを実行するのに掛かった合計時間を提供します。

従って、Com_foo_us のデルタと、Com_fooのデルタで割ったものは、デルタに関する平均応答時間を提供するでしょう。clustrix.stats.executing_sessions.

 

便利なリプリケーション統計

統計値
注釈
clustrix.replication.slave.relay_log_size.<slave name>スレーブ リレーログのバイト数
clustrix.replication.slave.seconds_behind_master.<slave name>マスターからの遅れ秒数。


データ保護の統計

統計値
注釈
clustrix.cluster.nodes_in_quorum現在のグループに参加しているノード
clustrix.cluster.total_nodesクラスタが知っている全てのノード。down/unavailable のノードを含みます。
clustrix.rebalancer.rebalancer_reprotects進行中の再プロテクト活動の数
clustrix.rebalancer.rebalancer_rebalance/splits/redistributesタイプ別のリバランサの活動


クラスタの容量の統計

Icon

以下の全ては、0-100の範囲にあります。

統計値
注釈
clustrix.capacity.disks.perm_used_avg_pctシステム内の全てのディスクに割り当てられている恒久的な領域の平均サイズ。
clustrix.capacity.disks.perm_used_max_pctシステム内の全てのディスクに割り当てられている恒久的な領域の最大量。
clustrix.capacity.disks.perm_used_min_pctシステム内の全てのディスクに割り当てられている恒久的な領域の最小量。
TOP
inserted by FC2 system