minato128 blog

minato128の公開メモ帳です。

Azure App Service の Deployment Slot Setting

完全に理解したつもりだったのに忘れてしまっていたのでメモ

f:id:minato128:20200320003434p:plain

  • 前提
    • 黒枠がアプリケーション
      • 普通の AppSettings が紐付いている
    • 緑枠がデプロイメントスロット
      • Deployment Slot Setting がチェックされている AppSettings が紐付いている
    • A~D はそれぞれひとつの key-value
      • key name は同じでも違っても考え方は変わらない
  • Swap したとき
    • C と D は入れ替わるが、A と B は入れ替わらない
    • Deployment Slot Setting が存在すると、それを反映させるためアプリケーションが reboot される
      • 逆に Deployment Slot Setting が存在しない場合、 reboot されない
      • 意図的に reboot したい場合、1つでも適当な Deployment Slot Setting を入れておくとよい
        • WebSocket を使っていると swap 後に prod slot じゃない方に接続が残り続けるので、要件的に問題なければ reboot による強制切断で prod slot に負荷を移せる
  • 参考

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