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

「魯珈」芳醇チキンカレー

今回は魯珈の芳醇チキンカレーです。

f:id:yuutookun:20200904203744j:plain

魯珈は早朝から並ばないと食べられない超人気店ですが、そのカレーをレトルトで食べられます。

様々なスパイスの味を楽しめて、もうやんカレーに似てるなという印象でした。

自分は店舗の魯珈に行ったことがないのでぜひ行ってみたいのですが、それをレトルトで楽しめるので便利な世の中ですね。

www.amazon.co.jp

十勝モッツァレラチーズカレー

久しぶりにカレーブログです。 今回は「十勝モッツァレラチーズカレー」です。

f:id:yuutookun:20200702202924j:plain

チーズカレーですが、モッツァレラのせいか粘り気が少なめな感じがしました。 比較的チーズ感はありつつも、少し玉ねぎの甘みがあるカレーです。

www.amazon.co.jp

iOS14におけるSkAdNetwork

以下ドキュメントを読んでのまとめなので、実際まだ動かしていません。

https://developer.apple.com/documentation/storekit/skadnetwork

  • iOS11.3から追加された機能でインストールリファラみたいもの
  • 広告表示時に認証させ、インストールした際に対象のAdNetworkにアプリから直接install postbackをする機能
  • install postbackは24時間以内に返ってくるくるが、ランダムである

https://docs-assets.developer.apple.com/published/f707b3297b/rendered2x-1590201126.png

各ロールの対応

配信側の利用要件

  • 広告配信側がAppleに登録してAdNetworkIDを取得する
  • SDKを提供している場合、配信側はAppleへの認証機構を提供する
  • アプリから直接install postbackが来るので受けれるようにする
    • 受け取ったinstall postbackが正しいか判定する

面のアプリ開発の利用要件

広告主(計測ツール)のアプリ開発要件

  • アプリからくるpostbackを受けとり、正しいか判定する

postbackのjsonのサンプルは以下

    {
      "version" : "2.0",
      "ad-network-id" : "com.example",
      "campaign-id" : 42,
      "transaction-id" : "6aafb7a5-0170-41b5-bbe4-fe71dedf1e28",
      "app-id" : 525463029,
      "attribution-signature" : "MDYCGQCsQ4y8d4BlYU9b8Qb9BPWPi+ixk\/OiRysCGQDZZ8fpJnuqs9my8iSQVbJO\/oU1AXUROYU="
      "redownload": 1,
      "source-app-id": 1234567891
      "conversion-value: 20
    }

SkAdNetworkの仕組み

registerAppForAdNetworkAttribution() , updateConversionValue(int) はともにinstall postbackのフックである

  • 起動時に registerAppForAdNetworkAttribution()を呼び、Installの起動かを判別
  • 起動時にupdateConversionValue(int)を呼び、installの起動かを判別
    • 上のregisterAppForAdNetworkAttribution は初回しか反応せず、かつ24時間中のいつ発火するかわからない。
    • updateConversionValueが呼ばれると、24時間のランダムタイマーがリセットされる
    • conversion valueはカウントアップのみ
    • 用途は多分cv地点がインストールじゃない場合の

所感

  • 広告を出す面のinfo.plistに各配信業者のIDを埋めなければいけないとなると、DSPなどは計測できない