Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
はてなサービスプラットフォームチームにおける Mackerel / Mackerel in H...
Search
motemen
October 27, 2017
Technology
1
1.3k
はてなサービスプラットフォームチームにおける Mackerel / Mackerel in Hatena Platform Team
2017/10/27 モニタリング勉強会の資料です
https://mackerel-ug.connpass.com/event/68478/
motemen
October 27, 2017
Tweet
Share
More Decks by motemen
See All by motemen
旧から新へ: 大規模ウェブクローラの Perl から Go への移行 / YAPC::Fukuoka 2025
motemen
3
1.5k
AIに実況させる / AI Streamer
motemen
3
6.8k
技術を育てる組織・組織を育てる技術 / technology and organization
motemen
13
5k
はてなのエンジニアリングマネジメント、これまでとこれから / Engineering Management in Hatena, Hatena Engineer Seminar 26
motemen
2
2.1k
入門 Bubble Tea
motemen
1
880
ソフトウェア開発と私 / Software Development and I
motemen
13
6.8k
はてなシステムの考古学 / History of development at Hatena
motemen
3
300k
Reading Go Tools - GoCon 2016 Spring
motemen
5
2.8k
Diff'ing Go library API changes
motemen
4
2.7k
Other Decks in Technology
See All in Technology
AI駆動開発によるDDDの実践
dip_tech
PRO
0
270
AIにおける自由の追求
shujisado
2
460
生成AI・AIエージェント時代、データサイエンティストは何をする人なのか?そして、今学生であるあなたは何を学ぶべきか?
kuri8ive
2
1.2k
Design System Documentation Tooling 2025
takanorip
1
900
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
小規模チームによる衛星管制システムの開発とスケーラビリティの実現
sankichi92
0
180
Symfony AI in Action
el_stoffel
2
350
小さな判断で育つ、大きな意思決定力 / 20251204 Takahiro Kinjo
shift_evolve
PRO
1
250
プラットフォームエンジニアリングとは何であり、なぜプラットフォームエンジニアリングなのか
doublemarket
1
530
Multimodal AI Driving Solutions to Societal Challenges
keio_smilab
PRO
1
110
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
21k
Agents IA : la nouvelle frontière des LLMs (Tech.Rocks Summit 2025)
glaforge
0
350
Featured
See All Featured
How to Ace a Technical Interview
jacobian
280
24k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
690
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
The Language of Interfaces
destraynor
162
25k
The World Runs on Bad Software
bkeepers
PRO
72
12k
How to Think Like a Performance Engineer
csswizardry
28
2.3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.8k
Rails Girls Zürich Keynote
gr2m
95
14k
Embracing the Ebb and Flow
colly
88
4.9k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
120
20k
Transcript
Mackerel in Hatena Platform Team 2017-10-27
id:motemen • 株式会社はてな CTO • 元 Mackerel ディレクター • アプリケーションエンジニア
• Go と Git が好きです
Mackerel とは
History of Mackerel 2007 はてな社内サーバ管理ツール 2013 クラウドサーバ監視サービス 開発開始 2014 Mackerel
チーム結成 2014-05 ベータリリース 2014-09 正式リリース 2016-06 連続リリース100週達成
Mackerelにおいて、サービスとはホストを運用する上でもっとも大 きな単位です。通常、複数のホストがそれぞれの「役割」(→ ロー ル)を担当し、協調しあってひとつのサービスを形づくります。関係 しあうホストをひとつのサービスに属するものとしてまとめること で、ホストの管理・監視が容易になります。
ロールはサービスに所属するホストをさらにその「役割」(アプリ ケーション、データベース、etc…)によって分類する概念です。 Mackerelではホストの状況をロールごとにまとめて可視化すること ができます。
App App App DB DB Web Web Web Batch Service
mackerel-agent • 各ホストで稼働する小さなプロセス ◦ ホストを Mackerel に登録 ◦ 自動的に基本的なメトリックを投稿 •
github.com/mackerelio/mackerel-agent
None
Installing mackerel-agent • mackerel-agent.conf ◦ 追加のメトリック ◦ カスタマイズされた監視 ◦ ホストに紐づくサービス/ロール
wget -O - https://mackerel.io/file/script/setup-all-apt.sh | sh a
API • サービス・ロール一覧 • ホスト情報の取得・更新 • メトリック投稿・取得
mkr • github.com/mackerelio/mkr • Mackerel API のコマンドラインインタフェース ◦ mackerel-agent の動くホストなら
API キー指定不要 mkr hosts -s Hatena-Star -r db-slave | jq 'map(.name)'
メトリック • ホストメトリック ◦ 1 ホストの稼働状況 ◦ ソフトウェアの状態 • サービスメトリック
◦ サービスの稼働状況 ◦ ビジネス上のメトリック
メトリック(ロール) • ロール内のホストを ◦ 比較 ◦ 積み上げ
プラグイン • github.com/mackerelio/mackerel-agent-plugins • Linux (fork, netstat), inode • Docker,
Elasticsearch, fluentd, MySQL, nginx, ... • AWS: CloudFront, DynamoDB, RDS, ...
監視 • ホストメトリック監視 • サービスメトリック監視 • チェック監視 • 外形監視 •
式監視
通知チャンネル • さまざまな通知サービスに対応 ◦ • アラートだけでなく、Webから手動でグラフ画像の共有も
通知グループ • 通知チャンネルとサービスを 紐付ける • チームのSlackチャンネルに、 興味あるサービスのアラートを
Mackerel in Hatena Platform Team
組織構造 Op Team Dev Team 1 Dev Team 2 Dev
Team 3 Service B Service A Service C Service D
サービスプラットフォームチーム • ユーザ向けサービスの基盤 • と、古いサービス • ほぼオンプレミス • ビジョン: 既存のシステムの解体と再生
◦ 現在はインフラ的な事情由来のタスクが主
SPF: システム特性 • 巨大な・結合したモノリス • 全貌の正確な理解は難しい • Devs / Ops
でともに理解しながら手なづけていく過程
Devs と Ops のあいだ = Mackerel • システムを観察する方法はさまざま • その橋渡しとなるのが
Mackerel • 1 ウェブサービスが Mackerel 上の 1 サービスに対応
アプリケーション / 外からの観察 • 外形監視 • サービスメトリック
HTTP 外形監視 • 最低限の監視として • SSL 証明書の有効期限監視も可能 • サービスに紐付ければ、レスポンスタイムの監視も
HTTP レスポンス / サービスメトリック • より詳しいステータス状況 • fluentd で収集・集計 ◦
fluent-plugin-mackerel ◦ レイテンシ ▪ average, 90/99 %ile ◦ ステータスコード ▪ percentage, count
Platform-API サービス • 複数のサービスに渡るAPIエンドポイントを一箇所に集約 • チームのAPIカタログに
アプリケーション / 内からの観察 • ホスト死活 • ホストメトリック
ホスト死活 • 最低限の監視として • mackerel-agent が起動すると自動的に監視
ホストメトリック • ビルトイン: Loadavg, CPU%, Memory, Filesystem, ... • OS
やミドルウェアに合わせたカスタムメトリック • 監視よりは観察用
静的なシステム理解 • アプリケーションのソースコード • コードとして表現されたインフラ
App Server Configuration Middleware Configuration Application Application Service App Devs
Ops
Service/Role 世界観 • リポジトリが Service/Role 対応 ◦ hatena/Hatena-Identity • リポジトリ中のディレクトリが
Service/Role 対応 ◦ nginx-config/Hatena-Identity/backend/nginx.conf ◦ chef/cookbooks/service-identity/recipes/backend.rb
監視: 一般的なホストメトリック • Connectivity • Filesystem% ◦ 特定の Service/Role では無効に
監視: ロール固有のメトリック • db (MySQL)、worker (TheSchwartz)、… • chefレシピでロールに合わせてカスタムメトリックも設定 • 監視の閾値は手でチューニング
監視: チェック監視 • ホスト上でアプリケーション/ミドルウェアが 正しく稼働しているか? • ミドルウェア設定ファイルの隣に配置
その他 • イベントのグラフ投稿 ◦ Dev: デプロイ ◦ Op: chef 適用
• mkr でサービス事情の監視 ◦ 旧: cron で DB 不整合の件数をメールで通知 ◦ 新: mkr throw でサービスメトリック投稿、監視閾値設定
Example: Go App
• 既存 API の置き換え(Go) 新規開発の例: APIサーバ DB app nginx front
nginx
設定した監視ポイント • 外形監視(レスポンスボディチェック) • nginx - app 間通信(専用エンドポイント + check-http)
• app - DB 間通信(専用エンドポイント + check-http) • nginx: カスタムメトリック(mackerel-plugin-nginx) • app: カスタムメトリック(mackerel-plugin-gostats) • おまけ: app-version チェック
• 旧システムで、ロール全体の CPU% 減少 • ホスト数も削減 ◦ 積み上げグラフで、台数を抽象化 置き換え後
非エンジニアとの会話にもグラフ
App Server Configuration Middleware Configuration Application Application Service App Devs
Ops KPI, Cost Business
Mackerel を使ってみて • Devs と Ops でシステムを理解していくための場 • Service/Role 世界観による情報整理
• Mackerel is for ... ◦ サーバ監視 ◦ サーバ管理 ◦ チームビルド
None