こんにちは。平尾です。 今回は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 のインストールを参照ください
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が出るのを待つ!
これですぐに確認できますね。ただmysql.rds_rotate_slow_logが実行されるので注意が必要ですね(゚ー゚;A
さて今回のおにぎりエンジニアおすすめおにぎりは、これ! おかずを買わなくても、十分満足できる具がのっているので、これ1つで結構満足できます! 脂っぽいのが難点!