Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Mackerel で ECS をどこまでモニタリングできるのか / Monitoring EC...
Search
Yoshiaki Yoshida
February 05, 2018
Technology
0
13k
Mackerel で ECS をどこまでモニタリングできるのか / Monitoring ECS with Mackerel
Yoshiaki Yoshida
February 05, 2018
Tweet
Share
More Decks by Yoshiaki Yoshida
See All by Yoshiaki Yoshida
技術ブロガーを育てる!ブログメンタリングで何を教えているのか / Passion for Blog Mentoring
kakakakakku
8
37k
プログラミング初心者に教えるときは「身近な比喩」が重要なのだ! / Metaphor is Important for Beginner Programmer
kakakakakku
2
5.6k
プロジェクトの成功を支える ZenHub と モブプログラミング / ZenHub and Mob Programming
kakakakakku
1
5.8k
楽しく!アウトプットを習慣化しよう / Let's Enjoy Output
kakakakakku
3
6.8k
さぁ!今すぐプロジェクトリーダーに立候補しよう / Be a Project Leader
kakakakakku
3
9.1k
プロジェクトをリードする技術 (Kyash 社 再演) / Project Leading is Skill for Kyash
kakakakakku
4
2.2k
プロジェクトをリードする技術 / Project Leading is Skill
kakakakakku
43
47k
[2018/01/30] Redash 初心者向けハンズオン / Redash Meetup #0.1
kakakakakku
0
2.4k
プログラミング初心者に Rails を教えるコツ / Tips for Teaching Rails
kakakakakku
5
4.2k
Other Decks in Technology
See All in Technology
本当にわかりやすいAIエージェント入門
segavvy
9
4.8k
エンジニアリングマネージャー“お悩み相談”パネルセッション
ar_tama
1
500
Digitization部 紹介資料
sansan33
PRO
1
4.6k
三視点LLMによる複数観点レビュー
mhlyc
0
260
機械学習を「社会実装」するということ 2025年夏版 / Social Implementation of Machine Learning July 2025 Version
moepy_stats
1
220
(HackFes)米国国防総省のDevSecOpsライフサイクルをAWSのセキュリティサービスとOSSで実現
syoshie
5
600
Deep Security Conference 2025:生成AI時代のセキュリティ監視 /dsc2025-genai-secmon
mizutani
5
3.7k
20250718_ITSurf_“Bet AI”を支える文化とコストマネジメント
helosshi
1
180
今だから言えるセキュリティLT_Wordpress5.7.2未満を一斉アップデートせよ
cuebic9bic
2
190
地図と生成AI
nakasho
0
520
第64回コンピュータビジョン勉強会「The PanAf-FGBG Dataset: Understanding the Impact of Backgrounds in Wildlife Behaviour Recognition」
x_ttyszk
0
260
BEYOND THE RAG🚀 ~とりあえずRAG?を超えていけ! 本当に使えるAIエージェント&生成AIプロダクトを目指して~ / BEYOND-THE-RAG-Toward Practical-GenerativeAI-Products-AOAI-DevDay-2025
jnymyk
4
200
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
980
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Designing Experiences People Love
moore
142
24k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
BBQ
matthewcrist
89
9.7k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Bash Introduction
62gerente
613
210k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
Transcript
Mackerel で ECS を どこまでモニタリングできるのか Mackerel Meetup #11 Tokyo 2018.02.05
@kakakakakku
吉田慶章 @kakakakakku - 株式会社マクアケ - インフラ, サーバサイド, 認定スクラムマスター, 技術広報など -
趣味は「ブログを書くまで寝ないこと」 - http://kakakakakku.hatenablog.com/ - 「アウトプット芸人」と呼ばれることも \意識高い系/
去年のアウトプット紹介 - 登壇 : 14回 (月1回以上) - ブログ : 77記事
(週1記事以上)
今日伝えたかったこと なぜ「食べる, 寝る」は習慣化できるのに 「ブログを書く」は習慣化できないのか?
Mackerel & Makuake - もともと Zabbix を使っていた - 2016年6月に Mackerel
を導入した - 現在は Mackerel メインで, 一部 Zabbix も併用している
使ってる plugins / check-plugins (一部) - mackerel-plugin-nginx - mackerel-plugin-php-fpm -
mackerel-plugin-php-opcache - mackerel-plugin-fluentd - mackerel-plugin-aws-ses - mackerel-plugin-aws-ecs - mackerel-plugin-docker - check-procs - プロセス監視 - check-log - ログ監視 - check-ntpoffset - NTP オフセット監視
ローリングデプロイをするときに mkr でホストをメンテナンスに mkr : ステータス変更 $ mkr update --status
maintenance ELB EC2 EC2 EC2
mkr : ダッシュボード管理 $ mkr dashboards generate dashboards/xxx.yml $ git
push ダッシュボード定義を Infrastructure as Code 化 mkr dashboards pull もあると助かる‼
mkr : 監視ルール管理 監視ルールを Infrastructure as Code 化 + CI
$ mkr monitors pull $ git push Trigger $ mkr monitors diff
mackerel-agent v0.49.0 以降, 推奨 - Docker ホストをモニタリングする場合, 大量のメトリクスを取得してしまう - dm-*
( デバイスマッパー ) - veth* ( バーチャルイーサネット ) - メトリクス数が 200 を超えると, ホスト1台に換算されてしまう - されていた - mackerel-agent v0.49.0 で修正された
と, ここまでは普通
ECS ( Amazon Elastic Container Service ) どうやって モニタリングしてますか?
\2/5 19:35 コンテナサポート発表/ ちょwwwww
Docker ECS コンテナ インスタンス ALB ( 動的ポートマッピング ) ECS サービス
Docker ECS クラスタ ECS コンテナ インスタンス ECS タスク ECS タスク 構成サンプル = 今回の前提
Docker ECS コンテナ インスタンス ALB ( 動的ポートマッピング ) ECS サービス
Docker ECS クラスタ ECS コンテナ インスタンス ECS タスク ECS タスク モニタリングしたくなる箇所 mackerel- plugin-gostats で取得できる メトリクスなど
どうしよう
ECS クラスタ mackerel-plugin-aws-ecs - CPUReservation - CPUUtilization - MemoryReservation -
MemoryUtilization ECS クラスタ CloudWatch インスタンス 2017.12.23 に リリースされた plugin 去年までは CloudWatch を見ていた
- mackerel-plugin-aws-ecs は plugin-registry 経由でインストールする - plugin-registry はプラグインを集約する場所 - 今後のプラグインは
mackerel-agent-plugins には依存しない - オレオレプラグインなどは plugin-registry を利用せずにインストールできる mackerel-plugin-aws-ecs $ mkr plugin install mackerelio/mackerel-plugin-aws-ecs Gemfile のように Mkrfile とか作れたら便利かも
plugin-registry bob/mackerel-plugin-bob alice/mackerel-plugin-alice mackerelio/plugin-registry mackerel-plugin-bob.json mackerel-plugin-alice.json JSON を登録する JSON を登録する
話を ECS に戻すと...
ECS コンテナインスタンス + ECS タスク - 戦略は大きく2種類ある - 1. mackerel-agent
コンテナをコンテナインスタンスごとに起動する - タスク配置制約 を One Task Per Host (distinctInstance) にする - 2. コンテナインスタンスに mackerel-agent をインストールする - 普通に EC2 にインストールするのと同じ - CloudWatch でも ECS タスクのメトリクスは取得できない
ECS コンテナインスタンス + ECS タスク 1. mackerel-agent コンテナをコンテナインスタンスごとに起動する Docker ECS
コンテナ インスタンス Docker ECS コンテナ インスタンス ECS タスク ECS タスク 動的ポートマッピングだと, mackerel-agent コンテナ から ECS タスク内部のメトリクス (mackerel-plugins を使う系) を取得できず, 断念
ECS コンテナインスタンス + ECS タスク 2. コンテナインスタンスに mackerel-agent をインストールする Docker
ECS コンテナ インスタンス Docker ECS コンテナ インスタンス ECS タスク ECS タスク cloud-init (User Data) 経由で mackerel-agent をインストールし, 「カスタムメトリクス取得スクリプト」 も配置している
#!/bin/sh if [ "${MACKEREL_AGENT_PLUGIN_META}" != "1" ];then for PORT in
$(docker ps --format=‘{{.Ports}}’ --filter name=xxxxx | cut -f1 -d- | cut -f2 -d:); do /usr/bin/mackerel-plugin-gostats -port ${PORT} -path=/stats -metric-key-prefix=gostats.${PORT} done else /usr/bin/mackerel-plugin-gostats -metric-key-prefix=gostats.# fi カスタムメトリクス取得スクリプト ( 今回は mackerel-plugin-gostats をサンプルにした ) docker ps の結果からポートを取得する カスタムメトリクスの プレフィックスにポートを付与する メタ情報 シェル芸
タスク単位 (ポート) で取得できるようになった gostats.32769.memory.memory_sys gostats.32772.memory.memory_sys gostats.32773.memory.memory_sys
次に, ダッシュボードを考える ロールグラフだと ポート部分をワイルドカードにして グラフ表示をすることができない
アドバンスクエリで頑張る https://mackerel.io/embed/orgs/xxx/advanced-graph?query= role('yyy:xxx', 'custom.gostats.*.memory.memory_sys')&title=custom.gostats.*.memory.memory_sys&period=1w
Docker ECS コンテナ インスタンス ALB ( 動的ポートマッピング ) ECS サービス
Docker ECS クラスタ ECS コンテナ インスタンス ECS タスク ECS タスク 整理するとこうなる
運用してるけど... - オートスケールで ECS コンテナインスタンスが消えることもある - ダッシュボードもアドバンスクエリで頑張るしかない - 絶対にもっと良い方法があるはず -
「コンテナサポート」の詳細を聞かせてください‼
おまけ
Fargate 登場でどう変わる ? 今後の話として
AWS Fargate Fargate の特徴は, コンテナインスタンスの管理から解放されることと, awsvpc ネットワーキングモード前提になったこと ( = 動的
IP マッピング ) どうやって ECS タスクをモニタリングしよう?
例えば...? メトリクス取得 コンテナ (簡易エージェント) メトリクス取得 コンテナ (簡易エージェント) メトリクス取得 コンテナ (簡易エージェント)
稼働中の NIC 情報を取得 インスタンス mackerel-plugin- ecs-task-metrics ( ちなみに, Fargate だけじゃなくて, 通常の ECS でも使えて, メリットがある ) http 経由
紹介したアーキテクチャは, 既に id:okzk が実装済 今日会場に来てます✋ MackerelでのECSのタスクのメトリクスの2018年版 http://okzk.hatenablog.com/entry/2018/01/28/223245
そもそも?
シンプルに考えると タスクごとに mackerel-agent コンテナを link するだけで良いはず Docker ECS コンテナ インスタンス
Docker ECS コンテナ インスタンス ECS タスク ECS タスク でも「タスク = ホスト」として 課金されるのは厳しいので, コンテナ特化の課金体系が欲しい
まとめ
まとめ - Makuake では Mackerel を活用している - plugins / mkr
など - Mackerel で ECS (クラスタ, コンテナインスタンス, タスク) をモニタリングできる - plugins だけじゃなく, 多少のシェル芸なども必要 - 今後は Fargate 前提の仕組みも考える必要がある - と思ってたけど, 当日まさかの「コンテナサポート」発表(期待)