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を触り始めて2年経ったので 作ってきたプラグインを振り返る
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
2.2k
AIでサービス運用はどう変わるのか
ryuichi1208
0
200
入門 再発防止策
ryuichi1208
17
7.7k
障害対応からの学びと体制づくり
ryuichi1208
0
3
金曜日デプロイ、するかしないか.pdf
ryuichi1208
1
90
会話で作る信頼性
ryuichi1208
0
200
シグナル(Unix)と仲良くなる
ryuichi1208
1
200
LiteLLM Proxyの紹介
ryuichi1208
1
24
AI前提のサービス運用について再考する
ryuichi1208
6
1.5k
Featured
See All Featured
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
The Curious Case for Waylosing
cassininazir
1
510
The SEO identity crisis: Don't let AI make you average
varn
0
560
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
320
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
330
Rails Girls Zürich Keynote
gr2m
96
14k
Site-Speed That Sticks
csswizardry
13
1.5k
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 ご清聴ありがとうございました