Screaming Loud

日々是精進

dockerを使って別のサーバのredisのメトリクスを取る

Redisのメトリクス、特にElasticacheのメトリクスを見たいときにCloudwatchのメトリクスだけだと足りない場合があると思います。

redis-infoのメトリクスを取る場合、別のサーバにdatadog-agentを立ち上げてそのサーバからredisへmetricsを取りに行きます。

今回はdocker-composeでlocalからアクセスする場合です。

ディレクトリ構成

├── conf.d
│   └── redisdb.d
│       └── config.yaml
├── datadog.yaml
└── docker-compose.yaml

以上のような構成にしています。

conf.d 以下はredisなどの各種メトリクス用のconfをディレクトリを切ります。 redisの場合は redisdb.d など名前が決まっているので、注意しましょう。

参考: Redis monitor - datadog

rootにおいているdatadog.yamlはdatadog-agent自体の設定です。 dockerで動かしているので環境変数でも利用できますが、ゴチャゴチャするので切り出すときれいになるかと思います。

各種設定yaml

yamlもそれぞれ見ていきます。

docker-compose.yaml

version: "3"
services:
  datadog:
    image: datadog/agent:7.21.1
    environment:
      DD_API_KEY: xxxx
      DD_TAGS: "hostname:redis-monitor-test name:datadog-test"
      DD_PROCESS_AGENT_ENABLED: "false"
      DD_HOSTNAME: "redis-monitor-test"
    volumes:
      - "./conf.d:/conf.d"
      - "./datadog.yaml:/etc/datadog-agent/datadog.yaml"

DD_API_KEYだけは必須のパラメータになっているので、設定しましょう。

またprocess agentもいらないので、環境変数で設定します。

datadog-agent/config.go at master · DataDog/datadog-agent · GitHub

datadog.yaml

# enable_payloads:
#   series: false
#   events: false
#   service_checks: false
#   sketches: false

上記設定をすると、datadog-agentからメトリクスを送らなくなります。 他にもいろいろな設定がができます。 datadog.yamlに書いても反映されないパラメータもあるので、それらはdockerの環境変数に書きましょう。

今回redisのメトリクスを送るので、この設定は使わないのでコメントアウトしてあります。 logsだけ使う場合などはコメントアウト外します。 参考: How to set up only Logs

redisdb.d/config.yaml

init_config:

instances:
  - host: hoge.cache.amazonaws.com
    port: 6379
    tags:
      - enviroment:production
      - region:ap-northeast-1
      - apps:redis

redisの設定はinstanceを並べるだけです。 tagは適当に好きなのをつけます。

実行

あとは実行するだけです。  

$ docker-compose up