All Projects → yoku0825 → anemoeater

yoku0825 / anemoeater

Licence: other
Wrapper-script for box/Anemometer

Programming Languages

perl
6916 projects

anemoeater

anemo eat erは box/Anemometer をdockerコンテナーとして起動して、percona-toolkitpt-query-digestの結果を食わせるためのラッパースクリプトです。

注意

  • pt-query-digestの仕様変更により、percona-toolkit 3.0.11とそれ以降のpt-query-digestでは本家 box/Anemometer が動きません。 --pt-query-digest=/path/to/pt-query-digest で3.0.10とそれ以前のpt-query-digestを指定するか、 --use-docker-for-pt でコンテナ版のpt-query-digestを使うようにしてください。

クイックスタート

  • dockerとpercona-toolkitがインストールされている必要があります。
$ git clone https://github.com/yoku0825/anemoeater
$ cd anemoeater
$ cpanm --installdeps .
$ ./anemoeater path_to_slow_log
  • オプションなしの起動では、yoku0825/anemoeaterdocker runします。
  • スローログを分割しながらpt-query-digestに食わせます。分割して渡さないとpt-query-digestが(checksum, ts_min, ts_max)という粒度で集計してしまうため、一括で食わせた場合に綺麗なグラフにならないからです(ts_minの時刻にクエリーが集中してプロットされてしまう)
  • anemoeaterの起動後にブラウザーからアクセスするためのURLをペロっと吐きます。コンテナーの80番がEXPOSEされてるだけです。
  • --sinceと--untilを指定して(ログが多いと重い)スローログを食わせてブラウザで見てコンテナーを止める、みたいな使い方を想定しています。

何故anemo eat erが必要だったのか

  • pt-query-digestはスローログをパースする際に時間の情報を「クエリーが最初に記録された時間からクエリーが最後に記録された時間」に集計してしまうからです。
  • それを考慮せずにそのままAnemometerに食わせるとこうなります。Anemometerは時間軸に対してts_minの点でプロットするため、そのクエリーが最初に記録された時刻にいっぱい出たことになってしまいます。

  • なのでanemo eat erの中でスローログを分割し、(ts_min, ts_max)が綺麗に分かれるようにpt-query-digestを呼び出してAnemometerにインポートさせています。

  • あとはAnemometerを使い捨てる(見たくなったら起動、見終わったら破棄)ためにDockerを使っていましたが、毎回インポートするのが面倒になったからです。

オプション

オプション 意味 デフォルト
--socket=s Dockerコンテナーを使わずに既存のAnemometerにスローログを食わせる場合の接続先MySQLソケット DBD::mysql依存
--host=s Dockerコンテナーを使わずに既存のAnemometerにスローログを食わせる場合の接続先MySQLホスト DBD::mysql依存
--port=i Dockerコンテナーを使わずに既存のAnemometerにスローログを食わせる場合の接続先MySQLポート DBD::mysql依存
--user=s Dockerコンテナーを使わずに既存のAnemometerにスローログを食わせる場合のMySQLユーザー "anemometer"
--password=s Dockerコンテナーを使わずに既存のAnemometerにスローログを食わせる場合のMySQLパスワード ""
--parallel=i この数値までフォークして並列でpt-query-digestを起動する CPUスレッド数 * 1.5
--since=s スローログ読み取りの開始時刻(これ以前の時刻のログを読み飛ばす) 現在時刻マイナス1か月
--unti=s スローログ読み取りの終了時刻(これ以降の時刻のログを読み飛ばす) "9999/12/31"
--report=i この数値までpt-query-digestを起動したら標準出力に現在処理中のログ時刻を出力 15
--cell=i 何分単位でログをpt-query-digestに送るか 5
--no-docker Dockerコンテナーを使わずに既存のAnemometerにスローログを食わせる N/A
--local yoku0825/anemoeaterをpullせず、Dockerfileからローカルホストにanemoeaterイメージをビルドする N/A
--pt-query-digest=s pt-query-digestのパスを指定する。/usr/bin/pt-query-digest 以外のパスにある場合に指定 /usr/bin/pt-query-digest
--use-docker-for-pt --pt-query-digestで指定されたファイルの代わりに yoku0825/percona-toolkit のDockerイメージをを使う 0
--type=s 入力ファイルとして利用するファイルの種類を指定する。サポートしているファイルの種類はslowlog、binlog、tcpdump slowlog

引数

  • スローログファイルを渡します。複数指定可能。
  • スローログファイルの名前がAnemometer上のhostname_maxになります(Filter By Hostとかで使うやつ)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].