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を触り始めて2年経ったので 作ってきたプラグインを振り返る
Search
ryuichi1208
July 11, 2023
2.5k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Mackerelを触り始めて2年経ったので 作ってきたプラグインを振り返る
ryuichi1208
July 11, 2023
More Decks by ryuichi1208
See All by ryuichi1208
そのasync、止まってない? ”鉄板”イベントループ ブロッキング処理検出術
ryuichi1208
1
460
AIでサービス運用はどう変わるのか
ryuichi1208
0
180
入門 再発防止策
ryuichi1208
17
7.6k
金曜日デプロイ、するかしないか.pdf
ryuichi1208
1
83
会話で作る信頼性
ryuichi1208
0
190
シグナル(Unix)と仲良くなる
ryuichi1208
1
62
LiteLLM Proxyの紹介
ryuichi1208
1
12
AI前提のサービス運用について再考する
ryuichi1208
6
1.5k
A Shallow Dive into the World of TCP
ryuichi1208
1
690
Featured
See All Featured
Side Projects
sachag
455
43k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
820
Google's AI Overviews - The New Search
badams
0
1.6k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
340
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.5k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
480
4 Signs Your Business is Dying
shpigford
187
23k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
280
Thoughts on Productivity
jonyablonski
76
5.3k
Balancing Empowerment & Direction
lara
6
1.2k
Transcript
1 Mackerelを触り始めて2年経ったので 作ってきたプラグインを振り返る 渡部 龍一/ GMO PEPABO inc. 2023/07/11 Mackerel
Meetup #14 Tokyo
技術部プラットフォームグループ 2021年 中途入社 2 自己紹介 渡部 龍一 Watanabe Ryuichi •
ロール: SRE • 仙台から来ました • Mackerel歴: 2年 • 好きな公式プラグイン: mackerel-plugin-gearmand • Twitter : @ryuichi_1208
3 ペパボはどれくらいMackerel使ってるのか
4
• サービス数: 25 • ホスト数: 840+ • VM + コンテナ
• 監視ルール: 300+ • プラグインの利用数: 60+ • 用途 • メトリクス、自動化ツール、SLIの計測 • 自宅サーバの監視 i. アラートはLINEに通知して鳴っても放置してる 5
6 これまで作ったプラグイン紹介
• メトリックプラグイン(24個) • mackerel-plugin-linux-netstat • mackerel-plugin-sslhandshake-time • mackerel-plugin-linux-meminfo • mackerel-low-usage-police
• mackerel-plugin-mysql-extend • mackerel-plugin-axslog-light • mackerel-plugin-dns-healthcheck • mackerel-errorbudget-calculator • mackerel-plugin-dns-lookup • mackerel-plugin-linux-virt-mem • mackerel-plugin-linux-tcp-memory • mackerel-plugin-linux-socket-queue-size • チェックプラグイン(8個) • check-ddos-udp • check-dos-tls12 • check-ssl-validate • check-mysql-backup • go-check-virtmem • go-check-longtransaction-cnt 7
• メトリックプラグイン(24個) • mackerel-plugin-linux-netstat • mackerel-plugin-sslhandshake-time • mackerel-plugin-linux-meminfo • mackerel-low-usage-police
• mackerel-plugin-mysql-extend • mackerel-plugin-axslog-light • mackerel-plugin-dns-healthcheck • mackerel-errorbudget-calculator • mackerel-plugin-dns-lookup • mackerel-plugin-linux-virt-mem • mackerel-plugin-linux-tcp-memory • mackerel-plugin-linux-socket-queue-size • チェックプラグイン(8個) • check-ddos-udp • check-dos-tls12 • check-ssl-validate • check-mysql-backup • go-check-virtmem • go-check-longtransaction-cnt 8
• ryuichi1208/go-check-longtransaction-cnt • MySQLのロングトランザクションの数を監視するチェックプラグイン • 大容量のUNDO(rollback)セグメントを消費することによる BufferPool荒れを防ぎたく て作った i. 分析クエリの発行が1トランザクションで実行されていたりして
3日かかるようなク エリがあった ii. 閉じ忘れられるトランザクションとかにも有効 • INFORMATION_SCHEMA INNODB_TRX テーブルあたりをパースして実装 • 検出後はクエリを出して開発者へフィードバックとか 9
• ryuichi1208/mackerel-plugin-linux-socket-queue-size • 指定したポートの listen-queue と accept-queue の数を出力するプラグイン • /proc/net/tcpをパースして実装
• nginxでSSL終端をしているサービスでnginxでの処理時間が伸びているという事象 が発生していた • 当時はこの時間をリアルタイムに監視する術がなかった • nginxで処理が詰まっていることをアラートとして出すために作成 i. nginxのスレッドがなんらかの原因で詰まると accept(2)の呼び出しが行われな いため増える ii. この数値をトリガーとしてnginx自体のオートスケール処理 10
• ryuichi1208/mackerel-plugin-sslhandshake-time • 指定されたURLへhttpsリクエストをして”名前解決”、”tcp接続”、”SSLハンドシェイク” のそれぞれを計測するメトリクスプラグイン • httptrace.ClientTraceの各処理にフックを入れて計測処理を実装 • DNSはPowerDNSを使っていたり、OpenStack Load-balancing
サービス の Octavia自分たちで運用していたりSSLの部分はngx_mrubyを使った動的証明書の 仕組みを実装していたり • 外形監視のアラートがなった際の調査の範囲を狭めるために作成 i. DNSなのかLBなのかSSL処理部分が悪いのかをある程度短時間で判断できる 仕組み 11
• ryuichi1208/mackerel-plugin-linux-virt-mem • Linuxの仮想メモリの上限と現在使用量を出力するメトリクスプラグイン • /proc/meminfoをパースして実装 • MySQLがメモリ使用量(RSS)は多くないのにOOMが発生していたケースがあって実 装 i.
仮想メモリの不足が原因 • /proc/sys/vm/overcommit_memoryを1で運用(厳格なオーバーコミット管理) i. 夜中に仮想メモリをめっちゃ使用しているグラフがわかった ii. プラグインも結構使用していることがわかった iii. 参考) Why does my Go process use so much virtual memory? 12
13 終わりに
• Mackerelプラグインサクッと作れてとても楽しい • ChatGPTを使って仙台->東京の移動で作ったりして東京でリリース • OpenTelemetry対応弊社のメンバーもとても楽しみにしてます!! • (宣伝)9月にペパボのSREやってるメンバーで勉強会やります!! 14
15 ご清聴ありがとうございました