Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Mackerel で ECS をどこまでモニタリングできるのか / Monitoring EC...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yoshiaki Yoshida
February 05, 2018
Technology
14k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Mackerel で ECS をどこまでモニタリングできるのか / Monitoring ECS with Mackerel
Yoshiaki Yoshida
February 05, 2018
More Decks by Yoshiaki Yoshida
See All by Yoshiaki Yoshida
LocalStack を使ったサーバーレスアプリケーション開発 / Serverless Development with LocalStack
kakakakakku
1
490
技術ブロガーを育てる!ブログメンタリングで何を教えているのか / Passion for Blog Mentoring
kakakakakku
8
38k
プログラミング初心者に教えるときは「身近な比喩」が重要なのだ! / Metaphor is Important for Beginner Programmer
kakakakakku
2
5.9k
プロジェクトの成功を支える ZenHub と モブプログラミング / ZenHub and Mob Programming
kakakakakku
1
6.1k
楽しく!アウトプットを習慣化しよう / Let's Enjoy Output
kakakakakku
3
7.2k
さぁ!今すぐプロジェクトリーダーに立候補しよう / Be a Project Leader
kakakakakku
3
10k
プロジェクトをリードする技術 (Kyash 社 再演) / Project Leading is Skill for Kyash
kakakakakku
4
2.3k
プロジェクトをリードする技術 / Project Leading is Skill
kakakakakku
49
54k
[2018/01/30] Redash 初心者向けハンズオン / Redash Meetup #0.1
kakakakakku
0
2.6k
Other Decks in Technology
See All in Technology
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
370
macOS Golden Gate 時代のMac管理
tategami
0
120
Turning Repos into the Product Second Brain with an LLM Wiki
linedevth
0
130
From Developer Experience to Agentic Experience: The Next Evolution of APIs
benjagm
0
110
~最速でビジネスインパクトを創出する~ Sansanのデータ基盤と活用事例
sansantech
PRO
0
110
freeeにおける AI を用いた ブラウザ動作確認の自動化の取り組み
freee
PRO
0
120
How to Design Configuration for Rails Applications
willnet
1
1.1k
顧客価値を追いかけたら、プライシングにたどり着いた
sansantech
PRO
2
390
CSS2026:OWS研究会・招待講演「世界観を、実装する」
atsush1_sada
2
170
【データ横丁主催】AI エージェント時代のTranslytical Data Platform
shisyu_gaku
0
210
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
5
1.2k
「私が一番顧客に詳しい」を捨てる~ 全員が一次情報に精通する開発チームをつくり、PMが次のボトルネックへ染み出すまで
kaminashi
3
1.2k
Featured
See All Featured
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
59k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
480
Optimising Largest Contentful Paint
csswizardry
37
4k
Why Our Code Smells
bkeepers
PRO
340
58k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
500
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Code Review Best Practice
trishagee
74
20k
Done Done
chrislema
187
17k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.5k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
790
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 前提の仕組みも考える必要がある - と思ってたけど, 当日まさかの「コンテナサポート」発表(期待)