Python - Clean Sentry Issues

1. 前言

sentry使用時間長了,容易產生很多不再care的issues,如何批量resolve它們,本文重點介紹。
對于上述情況,官方建議重建一個project,但是,重建project,需要修改product環境的sentry-dsn,可能還需要重啟服務,有點得不償失。
https://forum.sentry.io/t/delete-all-issues-in-a-project/45
所以,本文將采用sentry api的方式,clean所有issues。

2. 創建一個Auth Token

不同版本的sentry,創建token的page不太一樣,不過path基本不變。下圖供參考。

image.png

3. 基于Sentry API開發腳本

https://docs.sentry.io/api/events/get-project-group-index/

import requests
from functools import reduce


SENTRY_API_HEADERS = dict(
    Authorization="Bearer e5bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1e"
)


def get_issues():
    url = "https://sentry.xxxxxx.cn/api/0/projects/project-slug/azure_blackeye/issues/"
    resp = requests.get(url, headers=SENTRY_API_HEADERS, data=dict(statsPeriod='14d'))
    return [issue['id'] for issue in resp.json()]


def resolve_issues(ids):
    url = "https://sentry.xxxxxx.cn/api/0/projects/project-slug/azure_blackeye/issues/?status=unresolved&id="
    url += reduce(lambda x, y: f'{x}&id={y}', ids)
    requests.put(url, headers=SENTRY_API_HEADERS, json=dict(status="resolved"))


if __name__ == "__main__":
    for index in range(0, 10000):
        issues = get_issues()
        print(f'page index: {index:04d}, issues count: {len(issues)}')
        if len(issues) == 0:
            print('deal over')
            break
        resolve_issues(issues)
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。