$30 off During Our Annual Pro Sale. View Details »

MackerelとGrafana OnCallを連携してみた

MackerelとGrafana OnCallを連携してみた

2023.07.11 Mackerel Meetup #14 Tokyo
https://mackerelio.connpass.com/event/286608/

FUJIWARA Shunichiro

July 11, 2023
Tweet

More Decks by FUJIWARA Shunichiro

Other Decks in Technology

Transcript

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

    View Slide

  2. @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 デプロイツール

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  9. 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"
    }

    View Slide

  10. 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

    View Slide

  11. 動作イメージ

    View Slide

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

    View Slide

  13. 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回(プロジェクト単位)発生するころに考えよう…

    View Slide