如何导出PagerDuty全部历史事件?API及脚本调用遇阻
解决方案:导出PagerDuty全部历史事件
PagerDuty的List Incidents接口默认仅返回最近30天的事件,这就是你只能拿到一个月数据的原因。要获取全部历史事件,只需在请求中显式指定时间范围参数即可,pdpyras的iter_all方法支持传入额外的请求参数。
修改后的脚本示例
import os from pdpyras import APISession api_key = os.environ['PD_API_KEY'] session = APISession(api_key, default_from="fake.email.com") # 指定起始时间为足够早的日期(比如账户创建的时间,这里用1970年作为兜底) # 若需要指定结束时间,可添加 'until' 参数,格式同样为ISO 8601 UTC时间 request_params = { 'since': '1970-01-01T00:00:00Z' } # 传入params参数,获取全量历史事件 for incident in session.iter_all('incidents', params=request_params): print(incident)
关键说明
- 时间格式要求:
since和until参数必须使用ISO 8601格式的UTC时间(结尾带Z),比如2020-01-01T00:00:00Z。 - 自动分页处理:
iter_all会自动处理PagerDuty API的分页逻辑,无需手动处理翻页。 - 状态过滤:如果需要包含所有状态的事件(比如已关闭、已解决),可以额外添加
'statuses[]': ['triggered', 'acknowledged', 'resolved']到参数中。 - 速率限制:PagerDuty API有调用速率限制,若数据量极大,建议添加适当的请求间隔,避免触发限流。
内容的提问来源于stack exchange,提问作者Gary Turner
相关产品推荐
相关产品推荐

