oranie's blog

旧:iをgに変えると・・・なんだっけ・・・

MySQLのslow query logを可視化するnata2が大変便利そう

MySQL Casual #6で@studio3104さんが発表していたnata2を触った。

で、とりあえずローカルにnata2を起動しtd-agentを入れてプラグインを入れてmysqlslapを実行してみた。
動作環境はRuby2.1.2で。1.9系は動かなかった。

手順はgithubにも書かれているが、
https://github.com/studio3104/nata2
https://github.com/studio3104/fluent-plugin-nata2
以下は簡単な流れ。

まずnata2自体の設定。
git clone https://github.com/studio3104/nata2.git
cd ./nata2
bundle install

vim ./config.toml
中身は
dburl = "mysql2://test_user:user_password@127.0.0.1/nata2"
で。

次にMySQL側の設定。
/var/lib/mysql/slow-query.logを出すようにして、
mysql -u root -p
CREATE DATABASE `nata2`
GRANT ALL ON *.* TO test_user@'127.0.0.1' IDENTIFIED BY 'user_passwd';
flush privileges;
exit;
完了したら、再度nata2の設定で
bin/nata2server_init_database
bundle exec rackup

で起動する。

td-agent.confはこんな感じ。

/usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-nata2
でpluginをインスコして、
<source>
  type mysqlslowquery_ex
  read_from_head
  path /var/lib/mysql/mysql-slow.log
  tag slowquery.oranie.localhost
  pos_file /tmp/slowquery.log.pos
  last_dbname_file /tmp/slowquery.log.lastdb
</source>

<match slowquery.**>
  type nata2
  remove_tag_prefix slowquery.
  server 127.0.0.1
  port 9292
</match>

を設定しservice td-agent restartする。
これでちゃんとmysql-slow.logが出力され、fluentdがmysql-slow.logを読めていたら、

mysqlslap \
  --user=test_user \
  --password=user_passwd \
  --host=127.0.0.1 \
  --port=3306 \
  --engine=innodb \
  --auto-generate-sql \
  --auto-generate-sql-load-type=read \
  --auto-generate-sql-add-autoincrement \
  --number-char-cols=3 \
  --number-int-cols=5 \
  --number-of-queries=10000 \
  --concurrency=3 \
  --iterations=10

とかでゴリゴリ負荷を掛けてslowquery logを出すと

な感じでslowquery logの可視化がされていて大変便利ですね。

みんな使って色々@studio3104さんにナタを投げつけてあげると良いと思います!