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 / 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
AIに実況させる / AI Streamer
motemen
3
1.8k
技術を育てる組織・組織を育てる技術 / technology and organization
motemen
12
4.9k
はてなのエンジニアリングマネジメント、これまでとこれから / Engineering Management in Hatena, Hatena Engineer Seminar 26
motemen
2
2.1k
入門 Bubble Tea
motemen
1
850
ソフトウェア開発と私 / 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
Gore: A Tale of Go REPL
motemen
8
6.1k
Other Decks in Technology
See All in Technology
【実演版】カンファレンス登壇者・スタッフにこそ知ってほしいマイクの使い方 / 大吉祥寺.pm 2025
arthur1
1
420
AWSで始める実践Dagster入門
kitagawaz
1
520
生成AI時代のデータ基盤設計〜ペースレイヤリングで実現する高速開発と持続性〜 / Levtech Meetup_Session_2
sansan_randd
1
140
AI駆動開発に向けた新しいエンジニアマインドセット
kazue
0
300
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
8.7k
開発者を支える Internal Developer Portal のイマとコレカラ / To-day and To-morrow of Internal Developer Portals: Supporting Developers
aoto
PRO
1
410
下手な強制、ダメ!絶対! 「ガードレール」を「檻」にさせない"ガバナンス"の取り方とは?
tsukaman
2
390
Webブラウザ向け動画配信プレイヤーの 大規模リプレイスから得た知見と学び
yud0uhu
0
220
バッチ処理で悩むバックエンドエンジニアに捧げるAWS Glue入門
diggymo
3
150
20250910_障害注入から効率的復旧へ_カオスエンジニアリング_生成AIで考えるAWS障害対応.pdf
sh_fk2
3
170
JTCにおける内製×スクラム開発への挑戦〜内製化率95%達成の舞台裏/JTC's challenge of in-house development with Scrum
aeonpeople
0
170
品質視点から考える組織デザイン/Organizational Design from Quality
mii3king
0
150
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Become a Pro
speakerdeck
PRO
29
5.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
13k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.9k
Making Projects Easy
brettharned
117
6.4k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Balancing Empowerment & Direction
lara
3
610
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
51
5.6k
Scaling GitHub
holman
463
140k
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