$30 off During Our Annual Pro Sale. View Details »

ECS Fargate+Mackerelにおける監視費用を削減するまでの話

ECS Fargate+Mackerelにおける監視費用を削減するまでの話

株式会社ヌーラボ
PRO

August 08, 2022
Tweet

More Decks by 株式会社ヌーラボ

Other Decks in Technology

Transcript

  1. ECS Fargate+Mackerelにおける
    監視費用を削減するまでの話
    JAWS-UGコンテナ支部 入門編 #7 初心者大歓迎LT大会
    2022.08.09
    株式会社ヌーラボ 中野
    1

    View Slide

  2. 自己紹介
    2
    @maaaato
    Masayuki Nakano
    💻: ヌーラボ Backlog課 Git Team
    ❤: 筋トレ/ウマ娘/ジョジョ/アニメ鑑賞/AWS
    🏠: 󰘋と🐈と暮らしてます
    Embedded SREをしています

    View Slide

  3. きょうお話すること
    ECS Fargateの監視にMackerelとCloudWatch Container Insightsを利用
    ● Mackerelの費用を削減するための経緯と行ったこと
    ● Mackerel、CloudWatch Container Insightsでどういう監視をしているのか
    質問や気になる事がありましたらお気軽にTwitterで!
    3

    View Slide

  4. なにがあったのか
    とある日のこと...
    4
    うわーぜったいうちやん...
    最近リリースしたアプリの
    ホストメトリック数ってど
    うなっているっけ?
    あれ?Mackerelの費用が上
    がってるな
    ホストメトリック数の超過が
    目立つね
    ちょっと調べて
    みますね〜
    言葉ではなく心で理解

    View Slide

  5. Mackerelにおけるホストについて
    ホストとは「そのシステムを構成する最小単位」
    1. スタンダートホスト
    a. mackerel-agentをインストールしたホスト(e.g. EC2など)
    2. マイクロホスト
    a. mackerel-container-agentをサイドカーとして利用したホスト(e.g. ECS Fargateなど)
    5

    View Slide

  6. Mackerelにおけるホストについて
    ホストとは「そのシステムを構成する最小単位」
    1. スタンダートホスト
    a. mackerel-agentをインストールしたホスト(e.g. EC2など)
    2. マイクロホスト
    a. mackerel-container-agentをサイドカーとして利用したホスト(e.g. ECS Fargateなど)
    6

    View Slide

  7. マイクロホストメトリック数とは?
    >CPU使用率やメモリの使用量、ロードアベレージなど、サーバーにひも付くメ
    トリックを「ホストメトリック」と呼んでいます。
    ※https://ja.mackerel.io/pricing より引用
    マイクロホストメトリック数は上限値が設定されており
    30となっている
    30メトリック毎に1マイクロホスト分の費用が発生する
    つまり30を超えると俺が二人分になる!(2マイクロホスト扱い)
    7

    View Slide

  8. ECS Fargateの構成について
    ● 1つのClusterに複数のServiceが存在
    ● Serviceのタスクの内訳
    ○ Applicationコンテナ
    ○ サイドカーとしてLogコンテナと
    mackerel-container-agentがある
    ● LogはAmazon Kinesis Data Firehose経由
    でログをElasticsearchに送信している
    8

    View Slide

  9. ECS Fargateのタスクと監視について
    9
    CloudWatch Alarmのアラート条件
    1. Running Task CountがDesired Task Countを下回った
    2. Running Task Countが0になった
    Application,Logのメトリクスを収集(自身のメトリクス含む)
    mackerel-plugin-gostatsを利用してカスタムメトリクスも収集
    CloudWatch Container InsightsでTaskのプロセス監視
    MackerelでTaskのリソース監視

    View Slide

  10. 超過したホストメトリック数に対して
    どういう判断をしたか
    Application以外のメトリクスは必要がないと判断
    理由としてチームで毎朝メトリクスをチェックしている
    Log、mackerel-container-agentのメトリクスが安定していることがわかったため、メトリクス取
    得対象から外すことにした
    10
    mackerel-container-agent
    自身のメトリクス送信も止め

    View Slide

  11. 特定のコンテナをignoreする
    11
    roles:
    - "Git: api"
    plugin:
    metrics:
    gostats:
    command: mackerel-plugin-gostats -port=9000 -path=/api/stats
    ignoreContainer: '\A(mackerel-container-agent|Log)\z'
    mackerel-container-agentのyamlファイルにignoreContainerを追加(正規表現が利用可能)

    View Slide

  12. おどろきの結果
    ホストメトリック数が30を切る状態になりホストメトリックの超過一覧から
    運用しているコンテナが消えた
    もちろんMackerelの費用も下がることになり笑顔が溢れた
    12
    メトリックの対象からLogと
    mackerel-container-agentが
    消えた

    View Slide

  13. まとめ
    ● ホストメトリック数の扱いを把握できてなかった
    ● ホストメトリックの見直しをするにあたり必要がなくなったコンテナのメト
    リクス取得を止める判断をした
    ○ 必要かどうか判断をして止めたが、必要のあるメトリクスであれば無理
    に止める必要はないと考えている
    ● Application以外のコンテナのメトリクスがMackerel上では反映されないので
    パッと見た時にリソース消費が減ったように錯覚
    13

    View Slide