https://mackerelio.connpass.com/event/144889/
1Mackerel のコンテナ監視の近況Mackerel Drink Up #9 Tokyoid:astj (Asato Wakisaka)
View Slide
2● id:astj(あさとじぇー)○ Mackerel 開発チーム○ アプリケーションエンジニア○ テックリード自己紹介
3● mackerel-container-agent について○ 概要○ 最近 (Meetup #13 ~) のアップデート● ECS クラスター監視について今日の話題
4mackerel-container-agentMackerel のコンテナ監視の近況
5● コンテナ監視用の軽量エージェント○ mackerel-agent とは別のエージェントです● Amazon ECS と Kubernetes に対応● 1 タスク / 1 Pod ごとにひとつの「ホスト」mackerel-container-agent
6タスク / Pod をホストのように扱うcontainer-agent でやること
7● タスク / Pod を「ホスト」として登録○ サービス・ロールの割り当て● リソース状況をメトリックとして投稿○ コンテナごとの CPU、メモリ、トラフィック○ => 受け取った Mackerel サーバー側で監視● プラグインの実行○ チェック監視、カスタムメトリックの投稿container-agent でやること
8container-agent でやること
9container-agent でやること
10container-agent でやること
11● クラスタやノードの監視○ ノードの情報: mackerel-agent■ 実行しているコンテナの情報: mackerel-plugin-docker○ クラスタの情報:■ ノード数、タスク/Pod数、…■ ECS の場合: AWS インテグレーションcontainer-agent でやらないこと
12● 監視対象のコンテナに横付け(Side-car)○ ECS: タスク定義○ Kubernetes: Pod manifest● ECS / K8s の metadata API から情報を取得○ ECS: Task Metadata Endpoint v3○ Kubernetes: kubelet APImackerel-container-agent
13mackerel-container-agent
14TaskDefinition:Type: AWS::ECS::TaskDefinitionProperties:RequiresCompatibilities:- FARGATENetworkMode: awsvpcMemory: 512Cpu: 256ContainerDefinitions:- Name: appImage: ...- Name: mackerel-container-agentImage: mackerel/mackerel-container-agent:latestMemory: 128Environment:- Name: MACKEREL_CONTAINER_PLATFORMValue: ecs- Name: MACKEREL_APIKEYValue: Essential: falsecontainer-agent の設定 (ECS)元々のタスク定義サイドカーを追加
15container-agent の設定 (ECS)- Name: app- Name: mackerel-container-agentImage: mackerel/mackerel-container-agent:latestMemory: 128Environment:- Name: MACKEREL_CONTAINER_PLATFORMValue: ecs- Name: MACKEREL_APIKEYValue: Essential: false
16最近のアップデートMackerel のコンテナ監視の近況
17正式版のリリース (2019/06)最近のアップデート
182019/02 パブリックベータ (v0.0.1)2019/06 正式版 (v0.1.0)最新: v0.2.0正式版のリリース
19● 公式プラグイン入りのイメージ○ v0.0.5 より○ 一部含めていない公式プラグインもあります■ 含めてほしいプラグインがあればリクエストを!機能追加・変更% docker pull \mackerel/mackerel-container-agent:plugins
20● ECS 向けの設定が統一 (v0.1.0)○ 注意: ECS コンテナエージェント /Fargate プラットフォームのバージョン機能追加・変更ecs, ecs_v3,ecs_awsvpc,fargateecs
21● S3 上の設定ファイルのポーリング (v0.2.0)○ 元々はシグナルによる再読み込みを実装○ 設定によってポーリングも可能に○ 再デプロイせず監視設定のみを変更可能機能追加・変更
22課金体系の変更 (2019/05~)最近のアップデート
23● before:○ 「ホスト」■ 1台200メトリックまで 1800円/台● after:○ 「スタンダードホスト」■ 1台200メトリックまで 1800円/台○ 「マイクロホスト」■ 1台30メトリックまで 648円/台課金体系の変更※2019/05当時のスタンダードプランの税込金額です。現在は消費税増税に伴い金額を改定しています。
24● タスク / Pod は「マイクロホスト」に● 殆どの場合1タスク/Pod = 1マイクロホスト○ (メトリック数が多くなる場合複数台換算)■ 非常に多くのコンテナを含む場合■ プラグインを多数追加した場合課金体系の変更
25summaryMackerel のコンテナ監視の近況
26● ECS/k8s 向けのコンテナ監視エージェント● タスク/Pod をホストのように扱います○ Mackerel 側でホストと同様に管理・監視● タスク/Pod ごとにサイドカーを追加しますmackerel-container-agent
27● 5月から価格体系を改めています○ ご利用いただきやすくなりました● 6月に正式版をリリースしました○ ベータから機能追加・変更しています○ これからも機能追加を進めてゆきますmackerel-container-agent
28● ぜひご利用ください!○ フィードバックもお待ちしています!mackerel-container-agent
29ECS クラスターの監視おまけ
30● container-agent はタスクのモニタリング● ECS クラスターのモニタリング:○ mackerel-plugin-aws-ecs○ AWS インテグレーション <= NEW!ECS クラスターの監視
31● 1クラスター = 1マイクロホスト● CloudWatch を元にメトリックを取得○ クラスター全体でのリソース状況■ (CPU, メモリ) の (割り当て, 利用)○ サービスごとのリソース状況■ タスク実行数■ (CPU, メモリ) の (割り当て, 利用)AWS インテグレーション - ECS
32● クラスター全体の情報が1「ホスト」に集約● container-agent で取れない情報はあまりない○ 例: ロールの CPU 積み上げグラフ● 要件に応じて使い分けてご利用ください!ECS クラスターの監視