【入門編】Rollbar APIを用いたカスタムレポート自動生成:Slack/Emailへ毎週のエラーサマリーを送信するPythonスクリプト – 運用監視・オブザーバビリティ活用バイブル

エラーの「嵐」を「資産」に変える。Rollbar APIで構築する自動週次サマリーレポート術

こんにちは。システムの「健康診断」を専門にしているエンジニアです。

日々開発をしていると、Rollbarにエラーが山のように積もって、「どれから対処すべきかわからない」「結局、今週何が一番ヤバかったのか?」と途方に暮れることはありませんか?

多くのエンジニアが犯す最大の過ちは、「エラーを放置すること」ではなく「エラーを眺めるだけで終わらせること」です。

今日は、Rollbar APIを叩いて、チームのSlackに「今週の最優先修正リスト」を自動で送りつける、実戦的なスクリプトを授けます。これを導入すれば、月曜の朝から「何が起きたか」を把握するために管理画面を徘徊する必要はなくなります。

—

1. なぜ「自動レポート」が必要なのか?

監視とは、ただ監視することではありません。「意思決定を加速させること」です。

  • ノイズの排除: 大量の重複エラーを無視し、影響度の高い課題だけを抽出する。
  • 心理的安全性の向上: 「見落としがない」という安心感は、エンジニアのメンタルを救います。
  • 改善の文化: 数字が可視化されると、自然とチーム内で「次はこれを潰そう」という建設的な会話が生まれます。

—

2. 準備:Rollbar APIの「鍵」を手に入れる

まずは、APIを叩くための権限(アクセストークン)を取得しましょう。

1. Rollbarのプロジェクト画面を開く。
2. Settings > Project Access Tokens に移動。
3. 「Read-only」権限を持つトークンを発行してください。セキュリティの鉄則は「必要な最小限の権限」です。

—

3. 実装:Pythonで賢く集計する

必要なライブラリは `requests` だけです。環境構築には `pip install requests` をお忘れなく。

このスクリプトは、直近7日間の「未解決(Active)」かつ「発生回数が多い」エラーを抽出します。

import requests
import datetime
import json

設定項目
ACCESS_TOKEN = ‘YOUR_ROLLBAR_READ_TOKEN’
PROJECT_ID = ‘YOUR_PROJECT_ID’
SLACK_WEBHOOK_URL = ‘YOUR_SLACK_WEBHOOK_URL’

def fetch_top_errors():
# 7日前のタイムスタンプを取得
seven_days_ago = int((datetime.datetime.now() – datetime.timedelta(days=7)).timestamp())

url = f”https://api.rollbar.com/api/1/items”
headers = {‘X-Rollbar-Access-Token’: ACCESS_TOKEN}
params = {
‘status’: ‘active’, # 未解決のみに絞るのがコツ
‘min_occurrences’: 5 # 頻発しているものだけを抽出
}

response = requests.get(url, headers=headers, params=params)
return response.json().get(‘result’, {}).get(‘items’, [])

def generate_markdown(items):
report = [“# 毎週のエラーサマリー”, f”集計日: {datetime.date.today()}\n”]
for item in items[:5]: # 上位5件にフォーマット
report.append(f”

{item[‘title’]}”)

report.append(f”- 発生回数: {item[‘occurrence_count’]}”)
report.append(f”- URL: https://rollbar.com/item/{item[‘id’]}\n”)
return “\n”.join(report)

実行
if __name__ == “__main__”:
errors = fetch_top_errors()
report_text = generate_markdown(errors)

# Slackへの送信処理
requests.post(SLACK_WEBHOOK_URL, json={‘text’: report_text})
print(“レポートを送信しました。”)

—

4. 現場で震えるほど役立つ「運用の極意」

このコードを動かすだけなら簡単です。しかし、真のアーキテクトはここから先を考えます。

① 「頻度」ではなく「深刻度」でフィルタリングする

`occurrence_count`(回数)だけで判断すると、些細な例外が上位に来てしまいます。Rollbarのタグ機能を使って「Critical」「Warning」といった重要度を付与し、APIのクエリパラメータに `level` を追加して抽出するようにしてください。

② クラウド関数での定期実行

このスクリプトを自分のPCで動かす必要はありません。GitHub Actionsのスケジュール実行や、AWS Lambda(EventBridge)に載せてしまいましょう。「人間が作業しない」ことこそが、自動化の最大の恩恵です。

③ 「未解決」をゼロにする文化

このレポートが届いたとき、単に「へー」で終わらせてはいけません。チームの定例会議で「このレポートの1位を今週どう潰すか?」を議論する。それが、あなたのシステムを最強にする唯一の道です。

—

最後に:ツールは「手段」に過ぎない

Rollbar APIを使いこなすことは、単なるコーディングではありません。それは、「エラーという未知のノイズを、制御可能な情報に変換する」という、オブザーバビリティの本質に触れる作業です。

最初は小さな一歩で構いません。まずはこのスクリプトを動かし、毎週月曜の朝に「今週倒すべき敵」がSlackに届く体験を味わってください。きっと、あなたの開発ライフが驚くほど快適になるはずです。

何か分からないことがあれば、いつでも聞いてくださいね。応援しています!

タイトルとURLをコピーしました