Slide 1

Slide 1 text

MackerelとGrafana OnCallを連携してみた 2023.07.11 Mackerel Meetup #14 Tokyo @fujiwara 藤原俊一郎

Slide 2

Slide 2 text

@fujiwara 面白法人カヤック SREチーム Mackerelアンバサダー ISUCON 1,2,5,11 優勝4回 ISUCON 3,8,12,13 運営(出題)4回 github.com/kayac/ecspresso Amazon ECS デプロイツール github.com/fujiwara/lambroll AWS Lambda デプロイツール

Slide 3

Slide 3 text

これまで - オンコール通知ツール github.com/ryotarai/waker

Slide 4

Slide 4 text

waker ryotaraiさんがクックパッド社在籍中に開発したオンコール通知ツール アラートの送信元としてMackerelもネイティブサポートしている WebHookの送信先URLを設定するだけで使える Rails実装 (MySQL, Redisを利用) オンコールを電話で通知するためにTwilioを利用

Slide 5

Slide 5 text

wakerのメンテナンス状況 クックパッド(の中の人) → GMOペパボ(の中の人)

Slide 6

Slide 6 text

!!? https://tech.pepabo.com/2022/06/23/oncall-improve/ ペパボでは、オンコール通知にインシデント管理サービスであるPagerDutyを利用して います。 使い続けるためには、自分らでメンテするしかなさそう Railsのバージョンアップとか(このためにやるのは)つらい 乗り換え対象を探したほうがよさそう

Slide 7

Slide 7 text

Grafana OnCall Grafana Labs社が提供するオンコール管理ツール(OSS) Grafana Cloudでクラウドサービスとして / セルフホスティングも可能 Mackerelとの連携はネイティブでサポートされていない WebHookの仕組みはある 比較的安価に使えそう(Cloud Pro $29(5 users)+$8/user/month) 2023/3当時の価格(これは最後に…)

Slide 8

Slide 8 text

Mackerelとの連携はネイティブでサポートされていない なければ作ればいいじゃない

Slide 9

Slide 9 text

MackerelのWebHookを { "orgName": "myorg", "event": "alert", "imageURL": "https://mackerel.io/embed/public/alert/xxxxx.png", "alert": { "monitorName": " 監視XXX", "url": "https://mackerel.io/orgs/myorg/alerts/yyyy", "isOpen": true, "id": "1234", "status": "critical" } } ↓ Grafana OnCallのWebHookに変換 ↓ { "alert_uid": "1234", "title": "[myorg] 監視XXX is critical", "image_url": "https://mackerel.io/embed/public/alert/xxxxx.png", "link_to_upstream_details": "https://mackerel.io/orgs/myorg/alerts/yyyy", "state": "alerting" }

Slide 10

Slide 10 text

github.com/fujiwara/mackerel-to-grafana-oncall できました MackerelのWebHookを受け取ってGrafana OnCallのWebHookに変換する Go実装 GRAFANA_ONCALL_URL 環境変数でGrafana OnCallのWebHook URLを指定 AWS Lambdaで動く FunctionURL, API Gateway, ALBから呼び出せる MackerelのWebHook送信先を↑のURLに設定するだけで使える OSS

Slide 11

Slide 11 text

動作イメージ

Slide 12

Slide 12 text

作ってから Grafana OnCallはOSSなので、MackerelのWebHookを受け付けられるように コントリビューションすればいいのでは? もちろん、MackerelからGrafana OnCallに直接送信できると嬉しいです Cloudflare Workersでもできそう 作りました github.com/fujiwara/mkr2oncall-cloudflare-workers JavaScript実装 フレームワークには Hono を使用(使ってみたかった)

Slide 13

Slide 13 text

2023年3月に導入を終えた後日談 「比較的安価に使える(Cloud Pro $29(5 users)+$8/user/month)」 2023年4月某日 Grafana OnCallとGrafana Incidentが統合されたインシデント対応管理ソリューション Grafana IRM発表 (+$20/user/month) Cloud Proプランは2023年7月17日にLite版のGrafana IRMにダウングレード Lite版の制限 1か月あたり5つのインシデント対応(Grafana Incident) OnCallインテグレーションごとに100のアラートグループ オンコールが100回(プロジェクト単位)発生するころに考えよう…