Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

8 container-agent でやること

Slide 9

Slide 9 text

9 container-agent でやること

Slide 10

Slide 10 text

10 container-agent でやること

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

13 mackerel-container-agent

Slide 14

Slide 14 text

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) 元々のタスク定義 サイドカーを追加

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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