Upgrade to Pro — share decks privately, control downloads, hide ads and more …

メトリックはいかにして見え續ける樣になったか #devio2022

メトリックはいかにして見え續ける樣になったか #devio2022

2021年9月13日にカスタムメトリックが強化されたMackerel。2つの大きな困難をどう乗り越えカスタムメトリック強化を実現したのかご紹介します。

發表動畫 : https://www.youtube.com/watch?v=D6Ie8Q-cdBw

さっちゃん

July 28, 2022
Tweet

More Decks by さっちゃん

Other Decks in Programming

Transcript

  1. 4

  2. 7

  3. 14 時系列 DB (diamond) メトリック ロールグラフ用のシステムメトリック ホストグラフ用のシステムメトリック ホストグラフ用のカスタムメトリック カスタムメトリックは? ホストメトリックと

    ロールメトリックを 組み合はせて表示する (代案を比較した結果) カスタムメトリックも システムメトリックと 同じ樣に保存しよう
  4. 21 ロールID ロールメトリック名 0 custom.a.2 1 custom.b.1 … … ホストID

    ホストメトリック名 1 custom.a.1 1 custom.b.1 ロール 追 加 退 役 ホストID ホストメトリック名 0 custom.a.1 0 custom.a.2
  5. 24 ロールID ロールメトリック名 0 custom.a.2 1 custom.b.1 … … ホストID

    ホストメトリック名 1 custom.a.1 1 custom.b.1 ロール 追 加 退 役 ホストID ホストメトリック名 0 custom.a.1 0 custom.a.2 最近のホストを集 めればロール全体 のメトリックと極 端には異ならない ≒ 近似でき る
  6. 時系列 DB (diamond) の仕組み 31 書き込み 讀み出し まづ Redis Cluster

    へ 書き込む 古い世代のメトリックを DynamoDB へ移す 更新されなくなった メトリックを DynamoDB へ 移す TTL の切れた メトリックを S3 へ 移す
  7. 時系列 DB (diamond) の仕組み 32 書き込み 讀み出し まづ Redis Cluster

    へ 書き込む 古い世代のメトリックを DynamoDB へ移す 更新されなくなった メトリックを DynamoDB へ 移す TTL の切れた メトリックを S3 へ 移す
  8. 時系列 DB (diamond) の仕組み Redis Cluster • 複數臺の Redis node

    に key に從って data を分散 する • key を x{y}z とすると y の所 (hash tag) だけを見 て保存する node を決める ◦ 同時に讀み書きする data を同じ node に保存すると高 performence 33
  9. 34 (簡略表示してゐますが) cpu.engine が 100% にまで上がったのは 1 node だけ data

    が分散されず大きく偏った → node を増やしても解決しない
  10. ロールメトリックの舊 key の構造 {オーガニゼーションID.r.1.サービスID}.ロールID.スロット番號.メトリック名 • オーガニゼーション : サービスはオーガニゼーションに屬する • サービス

    : ロールはサービスに屬する • ロール : ホストはロールに屬する ◦ ホスト∈ロール∈サービス∈オーガニゼーション • スロット番號 : ホストに對應する。ホストが退役するとロール內で再利用される 35
  11. ロールメトリックの新 key の構造 {オーガニゼーションID.r.1.サービスID.ロールID.スロット番號}.メトリック名 Q. key の形を變へて大丈夫? A. • Redis

    Cluster は 1 週閒程しかメトリックが保存されないので頑張って移行 できる • DynamoDB へ移す前、ECS で讀み出した後に hash tag の {} を取り除くの で、Redis Cluster の外には影響しない 38
  12. 時系列 DB (diamond) の仕組み 41 まづ Redis Cluster へ 書き込む

    古い世代のメトリックを DynamoDB へ移す 更新されなくなった メトリックを DynamoDB へ 移す Redis Cluster に觸るのはこの 3 箇所
  13. 時系列 DB (diamond) の仕組み 42 まづ Redis Cluster へ 書き込む

    古いメトリックを DynamoDB へ移す (1 週閒程で) 讀み出し