Percona Cloud Tools を試した
インストールや設定などは、pt-agent のドキュメントの通りに進めれば難なくこなせるはずですので割愛します。
感想
以下の点などを加味して考慮した結果、思っていたほどいいモノではないような気がしました。
ざっと使ってみただけなので誤っている点などあるかも知れませんが、ご容赦を。
「ここちがうよ!」「こうすればもっといいよ!」みたいなのよろしくお願い申し上げます。
pt-agent
というエージェントを root 権限で動かさなくてはならない
pt-agent
の設定は、Percona Cloud Tools
の WEB 画面からも設定変更を行えます。
例えば以下画像だと、How often to report
のところをいじるとサーバ上にある cron のファイルが書き換えられます。
インターネットから操作するのに root 権限あげちゃうのか、、、って感じ。
[追記]
root じゃなくても動かすことは出来る模様。ドキュメントに書いてあった。
でも「面倒な手順で手動インストールが必要で、わかんなかったら Percona に問い合わせてね!」みたいな感じだ。
pt-agent must be installed and ran as root. It is possible to run as a non-root user, but this requires a more complicated and manual installation. Please contact Percona for help if you need to run pt-agent as a non-root user.
pt-agent
が MySQL に作成する pt_agent
なるユーザに SUPER
権限がつく
上の画像を例にすると、Long query time
を書き換えて Save した場合に、サーバ上の MySQL で SET GLOBAL long_query_time=0.000000
とか実行されます。
インターネットから操作するのに SUPER 権限あげちゃうのか、、、って感じ。
mysql> SHOW GRANTS FOR 'pt_agent'@'localhost'; +-----------------------------------------------------------------------------------------------------------------+ | Grants for pt_agent@localhost | +-----------------------------------------------------------------------------------------------------------------+ | GRANT SUPER ON *.* TO 'pt_agent'@'localhost' IDENTIFIED BY PASSWORD '*16CED81DAC5917722E82063353A27E11178399F0' | +-----------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
各 MySQL サーバに pt-agent
を泳がせなければならない
(このへんはあまり深くタッチしてないので、うまいやり方があるのかもしれないです。)
ひとつの pt-agent
プロセスが ひとつの mysqld
と対になるようなので、サーバごとにエージェントを泳がせなくてはなりません。
そうすると、一旦ログを集約サーバなどに集めておいて、そこからだけ投げるみたいなことがやりにくくなります。
ファイルやクエリごとにタグを付けられるわけではなさそうだし、どのクエリがどのサーバのモノなのかを一意に識別させる手段が、どのエージェントから送られてきたログなのか、というところだけなので。
タスクが JSON (/var/lib/pt-agent/services
にあるファイル) で定義されているので、それをうまいことなんとかすればもしかしたらどうにか出来るのかも知れません。未検証。でもやれたとしても面倒な感じがする。
あとDB サーバが直接インターネットに繋ぎにいけないような構成をとっている場合には proxy を経由させたりとかしなくてはならないかも。面倒。
上述のエージェントに与える権限についてだけど、サーバごとにエージェントが要るのであれば、WEB から設定変えられるほうがまぁいいとは思うけど、権限過多ではないかという気がする。 サーバ もイントラで動かせるんだったらよいと思うけど、クラウドだしなぁ。
こんな感じのサマリー画面
ひとつの DB サーバ全体
クエリの種類ごと
これだったら EXPLAIN までしてから結果を表示して欲しい感じがする。。
これも。。