LoginSignup
35
34

More than 5 years have passed since last update.

Datadog で RDS Postgresql をモニタリングする

Last updated at Posted at 2014-09-09

はじめに

Datadog で RDS をモニタリングしようと思った場合は、

  • CloudWatch (AWS) 連携
  • Postgresql 連携

が利用できる。

また、Sensu で監視したメトリクスを Datadog に送ることも可能。
sensu と datadog を連携してちょっとリッチなメトリクスの可視化 - inokappa に丁寧に書かれてる。

CloudWatch 連携

Datadog 用 IAM ユーザを用意する

AWS 連携を有効にするには予め read-only の datadog 用 IAM ユーザを作成しておく。

連携を ON にする

Integration タブから

Setup___Datadog.png

"Available" 一覧から "Amazon Web Services" を選択し、"Install Integration"
その際に、 datadog 用の Access Key ID と Secret Access Key を入力する。

オプションで連携する AWS のサービスやタグで対象リソースをフィルタリングできる。 課金対象は agent がインストールされている EC2 ホスト or AWS 連携してメトリクスを取得している EC2 ホスト (重複する場合は 1 台にカウント) なので、RDS や ELB 自体には課金されない。

Setup___Datadog.png

Postgresql 連携

モニタリング用に Postgresql に datadog ROLE を作成する

create user datadog with password 'XXXXXXXXXXXXXXXXXXXXX'; 
GRANT SELECT ON pg_stat_database to datadog;

Postgresql 用設定ファイルを作成する

# /etc/dd-agent/conf.d/postgres.yaml
init_config:

instances:
   -   host: <your-rds-host>
       port: <your-rds-port>
       username: datadog
       password: XXXXXXXXXXXXXXXXXXX
       tags:
            - <your-tag>

設定ファイルの tags に、CloudWatch 連携時に自動で付けられるタグ

  • dbinstanceidentifier
  • enginename
  • databaseclass

を付けておく。これを付けておかないと Datadog のダッシュボードで、タグによるフィルタリング時に CloudWatch 連携のデータは表示されるが Postgresql 連携のデータが表示されなくなってしまう。

# /etc/dd-agent/conf.d/postgres.yaml の例
init_config:

instances:
   -   host: production-my-db.xxxxxxxx.ap-northeast-1.rds.amazonaws.com
       port: 5432
       username: datadog
       password: XXXXXXXXXXXXXXXXXXX
       tags:
            - 'dbinstanceidentifier:production-my-db'
            - 'enginename:postgres'
            - 'databaseclass:db.r3.2xlarge'

dd-agent を再起動してモニタリング開始

基本的な Postgresql 連携の方法は Postgresql サーバに dd-agent をインストールし、そのサーバでこの設定ファイルを配置する。RDS はサーバにログインすることはできないので、別途 Postgresql モニタリング用 dd-agent をインストールするサーバを用意する。

$ sudo chmod 644 /etc/dd-agent/conf.d/postgres.yaml
$ sudo chown dd-agent:root /etc/dd-agent/conf.d/postgres.yaml
$ sudo /etc/init.d/datadog-agent restart
$ sudo /etc/init.d/datadog-agent info
  Checks
  ======

    postgres
    --------
      - instance #0 [OK]
      - Collected 6 metrics, 0 events & 2 service checks

スクリーンショット

DB_Metrics___Datadog.png

メモと感想

スロークエリとかは NewRelic の領域なんだと思う

スロークエリとかは上記の連携では表示されない。

  • アプリケーション寄りのメトリクスは New Relic
  • インフラ寄りのメトリクスは Datadog

という住み分けだと思っている。

TODO テーブルごとのメトリクス取得を試す

postgres.yaml にはテーブルごとのメトリクスを取得する設定も書いてあるので試そう

#  Custom-metrics section

#  You can now track per-relation (table) metrics
#  You need to specify the list. Each relation
#  generates a lot of metrics (10 + 10 per index)
#  so you want to only use the ones you really care about

#       relations:
#            - my_table
#            - my_other_table

TODO Postgresql の各種 Stats について書く

REF

35
34
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
34