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

81e8ac1d3a766b3d9880cd08d9a7aba4?s=47 astj
October 23, 2019

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

81e8ac1d3a766b3d9880cd08d9a7aba4?s=128

astj

October 23, 2019
Tweet

Transcript

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

    Wakisaka)
  2. 2 • id:astj(あさとじぇー) ◦ Mackerel 開発チーム ◦ アプリケーションエンジニア ◦ テックリード

    自己紹介
  3. 3 • mackerel-container-agent について ◦ 概要 ◦ 最近 (Meetup #13

    ~) のアップデート • ECS クラスター監視について 今日の話題
  4. 4 mackerel-container-agent Mackerel のコンテナ監視の近況

  5. 5 • コンテナ監視用の軽量エージェント ◦ mackerel-agent とは別のエージェントです • Amazon ECS と

    Kubernetes に対応 • 1 タスク / 1 Pod ごとにひとつの「ホスト」 mackerel-container-agent
  6. 6 タスク / Pod をホストのように扱う container-agent でやること

  7. 7 • タスク / Pod を「ホスト」として登録 ◦ サービス・ロールの割り当て • リソース状況をメトリックとして投稿

    ◦ コンテナごとの CPU、メモリ、トラフィック ◦ => 受け取った Mackerel サーバー側で監視 • プラグインの実行 ◦ チェック監視、カスタムメトリックの投稿 container-agent でやること
  8. 8 container-agent でやること

  9. 9 container-agent でやること

  10. 10 container-agent でやること

  11. 11 • クラスタやノードの監視 ◦ ノードの情報: mackerel-agent ▪ 実行しているコンテナの情報: mackerel-plugin-docker ◦

    クラスタの情報: ▪ ノード数、タスク/Pod数、… ▪ ECS の場合: AWS インテグレーション container-agent でやらないこと
  12. 12 • 監視対象のコンテナに横付け(Side-car) ◦ ECS: タスク定義 ◦ Kubernetes: Pod manifest

    • ECS / K8s の metadata API から情報を取得 ◦ ECS: Task Metadata Endpoint v3 ◦ Kubernetes: kubelet API mackerel-container-agent
  13. 13 mackerel-container-agent

  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: <YOUR_MACKEREL_APIKEY> Essential: false container-agent の設定 (ECS) 元々のタスク定義 サイドカーを追加
  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: <YOUR_MACKEREL_APIKEY> Essential: false
  16. 16 最近のアップデート Mackerel のコンテナ監視の近況

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

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

  19. 19 • 公式プラグイン入りのイメージ ◦ v0.0.5 より ◦ 一部含めていない公式プラグインもあります ▪ 含めてほしいプラグインがあればリクエストを!

    機能追加・変更 % docker pull \ mackerel/mackerel-container-agent:plugins
  20. 20 • ECS 向けの設定が統一 (v0.1.0) ◦ 注意: ECS コンテナエージェント /

    Fargate プラットフォームのバージョン 機能追加・変更 ecs, ecs_v3, ecs_awsvpc,fargate ecs
  21. 21 • S3 上の設定ファイルのポーリング (v0.2.0) ◦ 元々はシグナルによる再読み込みを実装 ◦ 設定によってポーリングも可能に ◦

    再デプロイせず監視設定のみを変更可能 機能追加・変更
  22. 22 課金体系の変更 (2019/05~) 最近のアップデート

  23. 23 • before: ◦ 「ホスト」 ▪ 1台200メトリックまで 1800円/台 • after:

    ◦ 「スタンダードホスト」 ▪ 1台200メトリックまで 1800円/台 ◦ 「マイクロホスト」 ▪ 1台30メトリックまで 648円/台 課金体系の変更 ※2019/05当時のスタンダードプランの税込金額です。 現在は消費税増税に伴い金額を改定しています。
  24. 24 • タスク / Pod は「マイクロホスト」に • 殆どの場合1タスク/Pod = 1マイクロホスト

    ◦ (メトリック数が多くなる場合複数台換算) ▪ 非常に多くのコンテナを含む場合 ▪ プラグインを多数追加した場合 課金体系の変更
  25. 25 summary Mackerel のコンテナ監視の近況

  26. 26 • ECS/k8s 向けのコンテナ監視エージェント • タスク/Pod をホストのように扱います ◦ Mackerel 側でホストと同様に管理・監視

    • タスク/Pod ごとにサイドカーを追加します mackerel-container-agent
  27. 27 • 5月から価格体系を改めています ◦ ご利用いただきやすくなりました • 6月に正式版をリリースしました ◦ ベータから機能追加・変更しています ◦

    これからも機能追加を進めてゆきます mackerel-container-agent
  28. 28 • ぜひご利用ください! ◦ フィードバックもお待ちしています! mackerel-container-agent

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

  30. 30 • container-agent はタスクのモニタリング • ECS クラスターのモニタリング: ◦ mackerel-plugin-aws-ecs ◦

    AWS インテグレーション <= NEW! ECS クラスターの監視
  31. 31 • 1クラスター = 1マイクロホスト • CloudWatch を元にメトリックを取得 ◦ クラスター全体でのリソース状況

    ▪ (CPU, メモリ) の (割り当て, 利用) ◦ サービスごとのリソース状況 ▪ タスク実行数 ▪ (CPU, メモリ) の (割り当て, 利用) AWS インテグレーション - ECS
  32. 32 • クラスター全体の情報が1「ホスト」に集約 • container-agent で取れない情報はあまりない ◦ 例: ロールの CPU

    積み上げグラフ • 要件に応じて使い分けてご利用ください! ECS クラスターの監視