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

Mackerel のコンテナ監視の近況 / Mackerel Meetup #13

astj
October 23, 2019

Mackerel のコンテナ監視の近況 / Mackerel Meetup #13

astj

October 23, 2019
Tweet

More Decks by astj

Other Decks in Technology

Transcript

  1. 1
    Mackerel のコンテナ監視の近況
    Mackerel Drink Up #9 Tokyo
    id:astj (Asato Wakisaka)

    View full-size slide

  2. 2
    ● id:astj(あさとじぇー)
    ○ Mackerel 開発チーム
    ○ アプリケーションエンジニア
    ○ テックリード
    自己紹介

    View full-size slide

  3. 3
    ● mackerel-container-agent について
    ○ 概要
    ○ 最近 (Meetup #13 ~) のアップデート
    ● ECS クラスター監視について
    今日の話題

    View full-size slide

  4. 4
    mackerel-container-agent
    Mackerel のコンテナ監視の近況

    View full-size slide

  5. 5
    ● コンテナ監視用の軽量エージェント
    ○ mackerel-agent とは別のエージェントです
    ● Amazon ECS と Kubernetes に対応
    ● 1 タスク / 1 Pod ごとにひとつの「ホスト」
    mackerel-container-agent

    View full-size slide

  6. 6
    タスク / Pod をホストのように扱う
    container-agent でやること

    View full-size slide

  7. 7
    ● タスク / Pod を「ホスト」として登録
    ○ サービス・ロールの割り当て
    ● リソース状況をメトリックとして投稿
    ○ コンテナごとの CPU、メモリ、トラフィック
    ○ => 受け取った Mackerel サーバー側で監視
    ● プラグインの実行
    ○ チェック監視、カスタムメトリックの投稿
    container-agent でやること

    View full-size slide

  8. 8
    container-agent でやること

    View full-size slide

  9. 9
    container-agent でやること

    View full-size slide

  10. 10
    container-agent でやること

    View full-size slide

  11. 11
    ● クラスタやノードの監視
    ○ ノードの情報: mackerel-agent
    ■ 実行しているコンテナの情報: mackerel-plugin-docker
    ○ クラスタの情報:
    ■ ノード数、タスク/Pod数、…
    ■ ECS の場合: AWS インテグレーション
    container-agent でやらないこと

    View full-size slide

  12. 12
    ● 監視対象のコンテナに横付け(Side-car)
    ○ ECS: タスク定義
    ○ Kubernetes: Pod manifest
    ● ECS / K8s の metadata API から情報を取得
    ○ ECS: Task Metadata Endpoint v3
    ○ Kubernetes: kubelet API
    mackerel-container-agent

    View full-size slide

  13. 13
    mackerel-container-agent

    View full-size slide

  14. 14
    TaskDefinition:
    Type: AWS::ECS::TaskDefinition
    Properties:
    RequiresCompatibilities:
    - FARGATE
    NetworkMode: awsvpc
    Memory: 512
    Cpu: 256
    ContainerDefinitions:
    - Name: app
    Image: ...
    - Name: mackerel-container-agent
    Image: mackerel/mackerel-container-agent:latest
    Memory: 128
    Environment:
    - Name: MACKEREL_CONTAINER_PLATFORM
    Value: ecs
    - Name: MACKEREL_APIKEY
    Value:
    Essential: false
    container-agent の設定 (ECS)
    元々のタスク定義
    サイドカーを追加

    View full-size slide

  15. 15
    container-agent の設定 (ECS)
    - Name: app
    - Name: mackerel-container-agent
    Image: mackerel/mackerel-container-agent:latest
    Memory: 128
    Environment:
    - Name: MACKEREL_CONTAINER_PLATFORM
    Value: ecs
    - Name: MACKEREL_APIKEY
    Value:
    Essential: false

    View full-size slide

  16. 16
    最近のアップデート
    Mackerel のコンテナ監視の近況

    View full-size slide

  17. 17
    正式版のリリース (2019/06)
    最近のアップデート

    View full-size slide

  18. 18
    2019/02 パブリックベータ (v0.0.1)
    2019/06 正式版 (v0.1.0)
    最新: v0.2.0
    正式版のリリース

    View full-size slide

  19. 19
    ● 公式プラグイン入りのイメージ
    ○ v0.0.5 より
    ○ 一部含めていない公式プラグインもあります
    ■ 含めてほしいプラグインがあればリクエストを!
    機能追加・変更
    % docker pull \
    mackerel/mackerel-container-agent:plugins

    View full-size slide

  20. 20
    ● ECS 向けの設定が統一 (v0.1.0)
    ○ 注意: ECS コンテナエージェント /
    Fargate プラットフォームのバージョン
    機能追加・変更
    ecs, ecs_v3,
    ecs_awsvpc,fargate
    ecs

    View full-size slide

  21. 21
    ● S3 上の設定ファイルのポーリング (v0.2.0)
    ○ 元々はシグナルによる再読み込みを実装
    ○ 設定によってポーリングも可能に
    ○ 再デプロイせず監視設定のみを変更可能
    機能追加・変更

    View full-size slide

  22. 22
    課金体系の変更 (2019/05~)
    最近のアップデート

    View full-size slide

  23. 23
    ● before:
    ○ 「ホスト」
    ■ 1台200メトリックまで 1800円/台
    ● after:
    ○ 「スタンダードホスト」
    ■ 1台200メトリックまで 1800円/台
    ○ 「マイクロホスト」
    ■ 1台30メトリックまで 648円/台
    課金体系の変更
    ※2019/05当時のスタンダードプランの税込金額です。
    現在は消費税増税に伴い金額を改定しています。

    View full-size slide

  24. 24
    ● タスク / Pod は「マイクロホスト」に
    ● 殆どの場合1タスク/Pod = 1マイクロホスト
    ○ (メトリック数が多くなる場合複数台換算)
    ■ 非常に多くのコンテナを含む場合
    ■ プラグインを多数追加した場合
    課金体系の変更

    View full-size slide

  25. 25
    summary
    Mackerel のコンテナ監視の近況

    View full-size slide

  26. 26
    ● ECS/k8s 向けのコンテナ監視エージェント
    ● タスク/Pod をホストのように扱います
    ○ Mackerel 側でホストと同様に管理・監視
    ● タスク/Pod ごとにサイドカーを追加します
    mackerel-container-agent

    View full-size slide

  27. 27
    ● 5月から価格体系を改めています
    ○ ご利用いただきやすくなりました
    ● 6月に正式版をリリースしました
    ○ ベータから機能追加・変更しています
    ○ これからも機能追加を進めてゆきます
    mackerel-container-agent

    View full-size slide

  28. 28
    ● ぜひご利用ください!
    ○ フィードバックもお待ちしています!
    mackerel-container-agent

    View full-size slide

  29. 29
    ECS クラスターの監視
    おまけ

    View full-size slide

  30. 30
    ● container-agent はタスクのモニタリング
    ● ECS クラスターのモニタリング:
    ○ mackerel-plugin-aws-ecs
    ○ AWS インテグレーション <= NEW!
    ECS クラスターの監視

    View full-size slide

  31. 31
    ● 1クラスター = 1マイクロホスト
    ● CloudWatch を元にメトリックを取得
    ○ クラスター全体でのリソース状況
    ■ (CPU, メモリ) の (割り当て, 利用)
    ○ サービスごとのリソース状況
    ■ タスク実行数
    ■ (CPU, メモリ) の (割り当て, 利用)
    AWS インテグレーション - ECS

    View full-size slide

  32. 32
    ● クラスター全体の情報が1「ホスト」に集約
    ● container-agent で取れない情報はあまりない
    ○ 例: ロールの CPU 積み上げグラフ
    ● 要件に応じて使い分けてご利用ください!
    ECS クラスターの監視

    View full-size slide