Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
9
Help us understand the problem. What is going on with this article?
@takashi0314

dd-agentでRDSのMySQLを監視してみた

More than 5 years have passed since last update.

概要

DatadogではMySQLをモニタリングするためのMySQL Integrationが提供されているが、基本的にMySQLが稼動しているサーバにdatadog-agentをインストールしてlocalhostのmysqldからデータを取得することをを想定して各種ドキュメントなどが書かれている感がある。

RDSでMySQLを利用している場合、CloudWatchで取得できる値は造作もなくDatadogへ食わせることができるわけだが、いかんせんOSリソース的なメトリクスが多く、MySQL固有の値をモニタリングの対象にしたい場合物足りない。

そこで、別のサーバへdatadog-agentをインストールし、そこからRDSへ接続してDatadogへデータをもっていくということができる。

やったこと

  • RDSのセキュリティグループ設定
  • Datadog用ユーザの作成
  • /etc/dd-agent/conf.d/mysql.yamlへ監視対象の設定
  • dashboardでの設定

RDSのセキュリティグループ設定

AWSエキスパートの諸兄ならば特に解説不要と思われるので省略

Datadog用ユーザの作成

RDSのMasterUserを使用してもモニタリングは可能だが、後述するように設定ファイル(mysql.yaml)にUserID/Passwordを埋め込む必要があるため権限の強いユーザを使用することは推奨できない。そのため読み取りに特化したユーザを作成するべきである。

MySQL Integrationのインストール画面のConfigurationタブに下記のようなユーザ作成手順がある。

sudo mysql -e "CREATE USER 'datadog'@'localhost' IDENTIFIED BY 'GENERATED_PASSWORD';"
sudo mysql -e "GRANT REPLICATION CLIENT ON *.* TO 'datadog'@'localhost' WITH MAX_USER_CONNECTIONS 5;"

If you'd like to get the full metrics catalog please also grant the following privileges:

sudo mysql -e "GRANT PROCESS ON *.* TO 'datadog'@'localhost';"
sudo mysql -e "GRANT SELECT ON performance_schema.* TO 'datadog'@'localhost';"

上記の例ではdatadog@localhostというユーザを作成し、*.*に対しREPLICATIONを許可するように権限設定している。
また、すべてのメトリクスをとりたい場合はさらに*.*に対しSELECT, performance_schema.* に対しSELECTを許可せよとのことである。

このままの手順でユーザをつくるとlocalhostのみが接続できることになってしまうため、下記のように変更した。
(要は @localhostをとっただけ)

sudo mysql -e "CREATE USER 'datadog' IDENTIFIED BY 'GENERATED_PASSWORD';"
sudo mysql -e "GRANT REPLICATION CLIENT ON *.* TO 'datadog' WITH MAX_USER_CONNECTIONS 5;"
sudo mysql -e "GRANT PROCESS ON *.* TO 'datadog';"
sudo mysql -e "GRANT SELECT ON performance_schema.* TO 'datadog';"

/etc/dd-agent/conf.d/mysql.yamlへ監視対象の設定

datadog-agentが稼動しているサーバの /etc/dd-agent/conf.d/mysql.yaml に対象RDSの情報を設定する。
もともと mysql.yaml.example が存在しているので、 cp mysql.yaml.example mysql.yaml といった感じでオリジナルを保存した状態で mysql.yaml を作成し、修正するのがよいと思う。
筆者が使用しているのは下記のようにサンプル記述をすべて消したものとなっている。

init_config:

instances:
  - server: rds1.hogehoge.ap-northeast-1.rds.amazonaws.com
    user: datadog
    pass: YOUR_GENERATED_PASSWORD
    tags:
       - dbname:rds1

  - server: rds2.hogehoge.ap-northeast-1.rds.amazonaws.com
    user: datadog
    pass: YOUR_GENERATED_PASSWORD
    tags: 
       - dbname:rds2

上記のように複数のRDSを記述することができる。また、tagsにタグを設定することによりdashboard等で対象RDSを指定する際にタグを使用できるようになる。

dashboardでの設定

mysql_integration_dashboard.png

以上

9
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
takashi0314
新井ひとみさん推してます
cloudpack
Amazon Web Services (AWS) の導入設計、環境構築、運用・保守をサポートするマネジドホスティングサービス

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
9
Help us understand the problem. What is going on with this article?