sentry-create-alert
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseAll Skills > Feature Setup > Create Alert
所有技能 > 功能设置 > 创建Sentry告警
Create Sentry Alert
创建Sentry告警
Create alerts via Sentry's workflow engine API.
Note: This API is currently in beta and may be subject to change. It is part of New Monitors and Alerts and may not be viewable in the legacy Alerts UI.
通过Sentry的工作流引擎API创建告警。
注意: 此API目前处于测试版,可能会随时变更。它属于新版监控与告警功能,在旧版告警UI中可能无法查看。
Invoke This Skill When
何时调用此技能
- User asks to "create a Sentry alert" or "set up notifications"
- User wants to be emailed or notified when issues match certain conditions
- User mentions priority alerts, de-escalation alerts, or workflow automations
- User wants to configure Slack, PagerDuty, or email notifications for Sentry issues
- 用户要求“创建Sentry告警”或“设置通知”时
- 用户希望当问题符合特定条件时收到邮件或其他通知时
- 用户提及优先级告警、降级告警或工作流自动化时
- 用户希望为Sentry问题配置Slack、PagerDuty或邮件通知时
Prerequisites
前置条件
- available in shell
curl - Sentry org auth token with scope (also accepts
alerts:writeororg:admin)org:write
- Shell环境中已安装
curl - 拥有权限范围的Sentry组织认证令牌(也支持
alerts:write或org:admin权限)org:write
Phase 1: Gather Configuration
阶段1:收集配置信息
Ask the user for any missing details:
| Detail | Required | Example |
|---|---|---|
| Org slug | Yes | |
| Auth token | Yes | |
| Region | Yes (default: | |
| Alert name | Yes | |
| Trigger events | Yes | Which issue events fire the workflow |
| Conditions | Optional | Filter conditions before actions execute |
| Action type | Yes | |
| Action target | Yes | User email, team, channel, or service |
向用户询问缺失的详细信息:
| 详细信息 | 是否必填 | 示例 |
|---|---|---|
| 组织Slug | 是 | |
| 认证令牌 | 是 | |
| 区域 | 是(默认: | |
| 告警名称 | 是 | |
| 触发事件 | 是 | 触发工作流的问题事件类型 |
| 过滤条件 | 可选 | 执行动作前的过滤条件 |
| 动作类型 | 是 | |
| 动作目标 | 是 | 用户邮箱、团队、频道或服务 |
Phase 2: Look Up IDs
阶段2:查询ID
Use these API calls to resolve names to IDs as needed.
bash
API="https://{region}.sentry.io/api/0/organizations/{org}"
AUTH="Authorization: Bearer {token}"根据需要使用以下API调用将名称解析为ID。
bash
API="https://{region}.sentry.io/api/0/organizations/{org}"
AUTH="Authorization: Bearer {token}"Find user ID by email
通过邮箱查找用户ID
curl -s "$API/members/" -H "$AUTH" | python3 -c "
import json,sys
for m in json.load(sys.stdin):
if m.get('email')=='USER_EMAIL' or m.get('user',{}).get('email')=='USER_EMAIL':
print(m['user']['id']); break"
curl -s "$API/members/" -H "$AUTH" | python3 -c "
import json,sys
for m in json.load(sys.stdin):
if m.get('email')=='USER_EMAIL' or m.get('user',{}).get('email')=='USER_EMAIL':
print(m['user']['id']); break"
List teams
列出团队
curl -s "$API/teams/" -H "$AUTH" | python3 -c "
import json,sys
for t in json.load(sys.stdin):
print(t['id'], t['slug'])"
curl -s "$API/teams/" -H "$AUTH" | python3 -c "
import json,sys
for t in json.load(sys.stdin):
print(t['id'], t['slug'])"
List integrations (for Slack/PagerDuty)
列出集成(用于Slack/PagerDuty)
curl -s "$API/integrations/" -H "$AUTH" | python3 -c "
import json,sys
for i in json.load(sys.stdin):
print(i['id'], i['provider']['key'], i['name'])"
undefinedcurl -s "$API/integrations/" -H "$AUTH" | python3 -c "
import json,sys
for i in json.load(sys.stdin):
print(i['id'], i['provider']['key'], i['name'])"
undefinedPhase 3: Build Payload
阶段3:构建请求体
Trigger Events
触发事件
Pick which issue events fire the workflow. Use (triggers must always use this).
logicType: "any-short"| Type | Fires when |
|---|---|
| New issue created |
| Resolved issue recurs |
| Archived issue reappears |
| Issue is resolved |
选择触发工作流的问题事件类型。必须使用(触发器始终需使用此值)。
logicType: "any-short"| 类型 | 触发时机 |
|---|---|
| 新问题创建时 |
| 已解决的问题复发时 |
| 已归档的问题重新出现时 |
| 问题被解决时 |
Filter Conditions
过滤条件
Conditions that must pass before actions execute. Use , , or .
logicType: "all""any-short""none"The field is polymorphic — its shape depends on the condition :
comparisontype| Type | | Description |
|---|---|---|
| | Priority >= Low(25)/Medium(50)/High(75) |
| | Priority dropped below peak |
| | Event count in time window |
| | Affected users in time window |
| | Event tag matches |
| | Issue assigned to target |
| | Event level (fatal=50, error=40, warning=30) |
| | Issue age |
| | Category (1=Error, 6=Feedback) |
| | Total occurrence count |
Interval options: , , , , , ,
"1min""5min""15min""1hr""1d""1w""30d"Tag match types: (contains), (not contains), , , (starts with), (ends with), (set), (not set)
"co""nc""eq""ne""sw""ew""is""ns"Set to to invert (fire when condition is NOT met).
conditionResultfalse动作执行前必须满足的条件。可使用, , 或 。
logicType: "all""any-short""none"comparisontype| 类型 | | 描述 |
|---|---|---|
| | 优先级 >= 低(25)/中(50)/高(75) |
| | 优先级低于峰值时 |
| | 时间窗口内的事件数量 |
| | 时间窗口内受影响的用户数量 |
| | 事件标签匹配时 |
| | 问题被分配给指定目标时 |
| | 事件级别(致命=50,错误=40,警告=30) |
| | 问题时长 |
| | 分类(1=错误,6=反馈) |
| | 总出现次数 |
时间间隔选项: , , , , , ,
"1min""5min""15min""1hr""1d""1w""30d"标签匹配类型: (包含), (不包含), (等于), (不等于), (开头为), (结尾为), (已设置), (未设置)
"co""nc""eq""ne""sw""ew""is""ns"设置为可反转条件(当条件不满足时触发)。
conditionResultfalseActions
动作
| Type | Key Config |
|---|---|
| |
| |
| |
| |
| |
| |
| |
| |
| 类型 | 关键配置 |
|---|---|
| |
| |
| |
| |
| |
| |
| |
| |
Full Payload Structure
完整请求体结构
json
{
"name": "<Alert Name>",
"enabled": true,
"environment": null,
"config": { "frequency": 30 },
"triggers": {
"logicType": "any-short",
"conditions": [
{ "type": "first_seen_event", "comparison": true, "conditionResult": true }
],
"actions": []
},
"actionFilters": [{
"logicType": "all",
"conditions": [
{ "type": "issue_priority_greater_or_equal", "comparison": 75, "conditionResult": true },
{ "type": "event_frequency_count", "comparison": {"value": 50, "interval": "1hr"}, "conditionResult": true }
],
"actions": [{
"type": "email",
"integrationId": null,
"data": {},
"config": {
"targetType": "user",
"targetIdentifier": "<user_id>",
"targetDisplay": null
},
"status": "active"
}]
}]
}frequency051030601807201440Structure note: is always — actions live inside .
triggers.actions[]actionFilters[].actionsjson
{
"name": "<Alert Name>",
"enabled": true,
"environment": null,
"config": { "frequency": 30 },
"triggers": {
"logicType": "any-short",
"conditions": [
{ "type": "first_seen_event", "comparison": true, "conditionResult": true }
],
"actions": []
},
"actionFilters": [{
"logicType": "all",
"conditions": [
{ "type": "issue_priority_greater_or_equal", "comparison": 75, "conditionResult": true },
{ "type": "event_frequency_count", "comparison": {"value": 50, "interval": "1hr"}, "conditionResult": true }
],
"actions": [{
"type": "email",
"integrationId": null,
"data": {},
"config": {
"targetType": "user",
"targetIdentifier": "<user_id>",
"targetDisplay": null
},
"status": "active"
}]
}]
}frequency051030601807201440结构注意事项: 始终为 —— 动作需定义在中。
triggers.actions[]actionFilters[].actionsPhase 4: Create the Alert
阶段4:创建告警
bash
curl -s -w "\n%{http_code}" -X POST \
"https://{region}.sentry.io/api/0/organizations/{org}/workflows/" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{payload}'Expect HTTP . The response contains the workflow .
201idbash
curl -s -w "\n%{http_code}" -X POST \
"https://{region}.sentry.io/api/0/organizations/{org}/workflows/" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{payload}'预期返回HTTP 状态码。响应结果包含工作流。
201idPhase 5: Verify
阶段5:验证
Confirm the alert was created and provide the UI link:
https://{org_slug}.sentry.io/monitors/alerts/{workflow_id}/If the org lacks the feature flag, the alert appears at:
workflow-engine-uihttps://{org_slug}.sentry.io/alerts/rules/确认告警已创建,并提供UI链接:
https://{org_slug}.sentry.io/monitors/alerts/{workflow_id}/如果组织未启用功能标志,告警将显示在以下地址:
workflow-engine-uihttps://{org_slug}.sentry.io/alerts/rules/Managing Alerts
告警管理
bash
undefinedbash
undefinedList all workflows
列出所有工作流
curl -s "$API/workflows/" -H "$AUTH"
curl -s "$API/workflows/" -H "$AUTH"
Get one workflow
获取单个工作流
curl -s "$API/workflows/{id}/" -H "$AUTH"
curl -s "$API/workflows/{id}/" -H "$AUTH"
Update a workflow
更新工作流
curl -s -X PUT "$API/workflows/{id}/" -H "$AUTH" -H "Content-Type: application/json" -d '{payload}'
curl -s -X PUT "$API/workflows/{id}/" -H "$AUTH" -H "Content-Type: application/json" -d '{payload}'
Delete a workflow
删除工作流
curl -s -X DELETE "$API/workflows/{id}/" -H "$AUTH"
curl -s -X DELETE "$API/workflows/{id}/" -H "$AUTH"
Expect 204
预期返回204状态码
undefinedundefinedTroubleshooting
故障排除
| Issue | Solution |
|---|---|
| 401 Unauthorized | Token needs |
| 403 Forbidden | Token must belong to the target org |
| 404 Not Found | Check org slug and region ( |
| 400 Bad Request | Validate payload JSON structure, check required fields |
| User ID not found | Verify email matches a member of the org |
| 问题 | 解决方案 |
|---|---|
| 401 Unauthorized | 令牌需要 |
| 403 Forbidden | 令牌必须属于目标组织 |
| 404 Not Found | 检查组织Slug和区域( |
| 400 Bad Request | 验证请求体JSON结构,检查必填字段 |
| 用户ID未找到 | 确认邮箱与组织成员的邮箱匹配 |