読者です 読者をやめる 読者になる 読者になる

RDS(MySQL) slow_log を slack に通知!

f:id:hiraoy:20150207170949j:plain

こんにちは。平尾です。 今回はSlackネタです。DB(MySQL)のslow_logが出たらSlackに通知させるってやつです。slow_logって気づくのが遅かったりしますよね、この機能を使えば出たらすぐにSlackに通知されるので、「リファクタリングしなきゃいかん」と思うわけです。

どんなもの?

fluentdがMySQLのslow_logを検知してSlackに通知する。

やること

  • IncomingWebHookでWebhookURL取得
  • fluentdの設定
  • RDS Parameter Groupの設定
  • slow_logが出るのを待つ!

動作環境

IncomingWebHookでWebhookURL取得

Slack -> Integrations -> All integrations -> Incoming WebHooks
Post to Channelで、通知したいChannelを選択しwebhook_urlを取得します

IncomingWebHookの詳細は以下を参照ください tech.sanwasystem.com

fluentd インストール

fluentd のインストールは以下URLのfluentd のインストールを参照ください

tech.sanwasystem.com

fluentdプラグインインストール
  • fluent-plugin-slack ・・・ Slackに流すためのplugin
  • fluent-plugin-rds-slowlog ・・・ RDSのslow_logをファイルで保存するためのplugin
git clone https://github.com/sowawa/fluent-plugin-slack.git  
git clone https://github.com/kenjiskywalker/fluent-plugin-rds-slowlog  

cd fluent-plugin-slack
/usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-slack  
cd fluent-plugin-rds-slowlog  
/usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-rds-slowlog
fluent-plugin-rds-slowlog が実行する PROCEDUREを許可する。

詳しくは以下を参照ください
fluent-plugin-rds-slowlog/README.md at master · kenjiskywalker/fluent-plugin-rds-slowlog · GitHub

CREATE USER slow_user;
SET PASSWORD FOR 'slow_user'@'%' = PASSWORD('slow_user_pwd');
GRANT select ON mysql.slow_log TO slow_user;
GRANT EXECUTE ON PROCEDURE mysql.rds_rotate_slow_log TO slow_user;
fluentdの設定
vim /etc/td-agent/td-agent.conf
<source>
  type rds_slowlog
  tag rds.slow_query
  host ****************************.ap-northeast-1.rds.amazonaws.com
  username slow_user
  password slow_user_pwd
</source>

<match rds-slow_query>
  type slack
  webhook_url https://hooks.slack.com/services/****************************************
  channel hogehoge
  username slow
  color danger
  message "slow_query:%s"
  message_keys slow_query
  flush_interval 1m
</match>

fluentdの起動

/etc/init.d/td-agent start

RDS Parameter Groupの設定

  • slow_query_log : 1
  • long_query_time : 1秒 →今回は
  • log_output : TABLE
slow_logが出るのを待つ!

f:id:hiraoy:20150928212326p:plain

これですぐに確認できますね。ただmysql.rds_rotate_slow_logが実行されるので注意が必要ですね(゚ー゚;A

さて今回のおにぎりエンジニアおすすめおにぎりは、これ! おかずを買わなくても、十分満足できる具がのっているので、これ1つで結構満足できます! 脂っぽいのが難点!

www.lawson.co.jp