AWS
PostgreSQL
RDS
monitoring
Datadog

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

More than 1 year has passed since last update.


はじめに

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