minato128 blog

minato128の公開メモ帳です。

Awair のログを Mackerel に送ってみた

gyazo.com

  • 目的
    • Life Metrics を一ヶ所に集約して分析することで健康管理に役立てる
      • 例えば、睡眠スコアが高いときと低いときで部屋の空気にどんな相関があるかをすぐに見られるようになる
  • Grafana+InfluxDB or Mackerel
    • 最小構成の月額費用はそこまで変わらない
    • 自分で管理するとバージョンアップとかの手間がかかりそう
    • mackerel metrics retention = 460 days
      • 分析と改善のサイクルを回すのにそこまで昔のログは要らない
        • 数年前とかと比較して眺める楽しさはありそうではある
  • 方法
    • 概要
      • Azure Function (Node.js) の Timer 実行で Awair からデータを取得して結果を Mackerel に送る
    • 流れ
      • Awair GET Devices で device_type と device_id を取得
        • 動的に増える考慮が必要なければこれは最初の1回だけ実行して保存しておけばいい
      • Awair GET Latest AirData で最新の metrics を取得
      • Mackerel Service Metrics API の形式に変換してPOST
  • 注意点
    • Mackerel *1
      • Datadog とは metrics 設計が異なる
      • Datadog metrics は tag で split (grouping) するが、Mackerel は metrics name で split させる
    • Awair
      • Hobbyist Plan だとすぐに Limit を超えてしまう
        • Awair Developer APIs
        • ドキュメントに書いてあるメールに upgrade request を送ったら、ありがたいことにすぐに上げてくれた
      • Too many requests は 429 でなく 200 で返ってくるので、body をみる必要がある

mackerel.io

docs.developer.getawair.com

参考コード

gist.github.com

*1:自分が初めて使ったからで知っている人にとっては注意点ではない