minato128 blog

minato128の公開メモ帳です。

Datadog で空気の状態を監視する

これは Datadog Advent Calendar 2019 14日目の記事です。

まとめ

  • Custom Metrics で Awair metrics を送って、空気の状態の監視ができるようになった
  • 過去ログを楽しく分析できるようになった
    • Awair は最新の状態を見るのは簡単ですが、過去のログを見るのが難しい
    • Datadog の View は高機能かつ使い慣れているのでストレスがない
  • Agent を入れなくてもいいので維持コストがゼロ
    • 他の SaaS だと Custom metrics だけでも1ホスト分課金されることがある
      • Datadog は今のところ(2019-12-14)課金が発生しない

Custom Metrics とは

docs.datadoghq.com

多すぎてすべては説明しきれませんが、このような特徴があります。

  • 自由に metric name や type を設計し、tag で簡単に dimension を表現できる
    • 標準 metrics と同様に15ヶ月参照可能
    • Datadog のリッチな View で同一時系列で何が起きているのかすぐにわかる
    • Datadog の Core 機能と言っても過言ではないのでは
  • 送信方法

metrics 送信の仕組み

これらをひとつの Azure Function で数分間隔で定期実行しているだけです。

payload sample

{ 
    "series" : [
        {"metric":"awair.co2", "points":[[1576219800, 100], ...], "tags":["deviceid:test"]}, 
        ...
    ]
}

Note: The timestamp should be in seconds, current. The numeric value format should be a 32bit float gauge-type value. Current is defined as not more than 10 minutes in the future or more than 1 hour in the past.

ちなみに「timestamp として有効なのは、1時間前から10分後まで」と定義されているので、過去ログをまとめて取り込むことはできません。

ダッシュボードの様子

1 Hour

gyazo.com

1 Day

gyazo.com

1 Week

gyazo.com

1 Month

gyazo.com

docker-compose で ownCloud を立ててみた

gyazo.com

「チープなEC2インスタンスで ownCloud 立てて S3 接続すれば、Dropbox とかより安く運用できるのでは?😆」 *1 と思ったので試した。

試してみたかったこと / わかったこと

  • docker-compose で ownCloud を立てることで気軽に再構築できるようにする
  • S3 の view として使えるか?
  • 既にデータが存在する bucket に接続しても問題なく動作するのか?
    • 問題なし
    • List API 叩いているっぽい

手順

  1. EC2 Instance 作成
    1. セキュリティグループの 80/443 を開ける
  2. DNS設定追加
    1. example.minato128.com を作った example.ap-northeast-1.compute.amazonaws.com に向ける
  3. Install docker/docker-compose
  4. docker-compose.yml をコピー
    1. Installing with Docker :: ownCloud Documentation
  5. docker-compose.yml の書き換え
    1. HTTPS-PORTALのコンテナの設定を追加
      1. https://github.com/SteveLTN/https-portal
        1. Let's Encrypt から自動的に証明書を発行して反映してくれる
        2. https://qiita.com/c18t/items/c693d5bcda2e9b82e39b
      2. Nginx のデフォルトのCLIENT_MAX_BODY_SIZEが少ないので追加
        1. https://github.com/SteveLTN/https-portal#advanced-usage
  6. docker-compose up -d
  7. example.minato128.com から初回ログイン
  8. 管理画面から S3 接続設定
    1. Amazon S3 :: ownCloud Documentation

yaml の追加部分抜粋

volumes:
  files:
    driver: local
  mysql:
    driver: local
  backup:
    driver: local
  redis:
    driver: local
  # ここを追加
  org-minato-ssl-certs:

services:
  # ここを追加
  https-portal:
    image: steveltn/https-portal:1
    container_name: proxy-https-portal
    ports:
      - '80:80'
      - '443:443'
    links:
      - owncloud
    environment:
      DOMAINS: 'example.minato128.com -> http://dockerhost:8080/'
      CLIENT_MAX_BODY_SIZE: 0
      STAGE: 'production'
    volumes:
    - org-minato-ssl-certs:/var/lib/https-portal

*1:AWS内なのでS3転送料金がかからない