Velocity-BPA/n8n-nodes-opsgenie

GitHub: Velocity-BPA/n8n-nodes-opsgenie

一个功能完备的 n8n 社区节点,将 Opsgenie 的告警、事件、值班和团队管理等 100 多项操作封装为可视化工作流组件,实现端到端的事件响应自动化。

Stars: 0 | Forks: 0

# n8n-nodes-opsgenie 一个用于 **Opsgenie**(Atlassian 基于云的告警和事件管理平台)的综合性 n8n 社区节点。此集成支持针对告警管理、值班调度、事件响应和团队协调的工作流自动化。 ![n8n](https://img.shields.io/badge/n8n-community--node-orange) ![License](https://img.shields.io/badge/license-BSL--1.1-blue) ![Node Version](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen) ![TypeScript](https://img.shields.io/badge/TypeScript-5.3-blue) ## 功能特性 - **12 个资源类别**,包含 100 多个操作,实现对 Opsgenie API 的完整覆盖 - **告警管理** - 创建、确认、关闭、暂停、升级和管理告警 - **事件响应** - 创建和管理带有时间线跟踪的事件 - **值班调度** - 管理日程、轮换和值班分配 - **团队协调** - 创建团队、管理成员和配置路由规则 - **用户管理** - 包含通知偏好的完整用户生命周期管理 - **升级策略** - 配置多级升级工作流 - **心跳监控** - 通过心跳检查监控系统健康状态 - **策略管理** - 创建具有复杂过滤条件的告警和通知策略 - **Webhook 触发器** - 实时处理告警、事件和日程事件 - **多区域支持** - 同时支持 US 和 EU 的 Opsgenie 区域 ## 安装 ### 社区节点(推荐) 1. 打开 n8n 2. 前往 **Settings** > **Community Nodes** 3. 选择 **Install** 4. 输入 `n8n-nodes-opsgenie` 5. 同意风险提示并点击 **Install** ### 手动安装 ``` # 导航到你的 n8n 安装目录 cd ~/.n8n # 安装包 npm install n8n-nodes-opsgenie # 重启 n8n ``` ### 开发安装 ``` # 克隆 repository git clone https://github.com/Velocity-BPA/n8n-nodes-opsgenie.git cd n8n-nodes-opsgenie # 安装 dependencies npm install # 构建 project npm run build # 创建指向 n8n custom nodes 目录的 symlink mkdir -p ~/.n8n/custom ln -s $(pwd) ~/.n8n/custom/n8n-nodes-opsgenie # 重启 n8n ``` ## 凭证设置 ### Opsgenie API 凭证 | 字段 | 描述 | |-------|-------------| | **API Key** | 来自您的 Opsgenie API 集成的 GenieKey | | **区域** | US (api.opsgenie.com) 或 EU (api.eu.opsgenie.com) | ### 获取 API Key (GenieKey) 1. 登录您的 Opsgenie 账号 2. 前往 **Settings** > **Integrations** 3. 点击 **Add integration** 并选择 **API** 4. 复制生成的 **API Key** 5. 根据需要配置 API 访问权限 ## 资源与操作 ### 告警 (17 个操作) | 操作 | 描述 | |-----------|-------------| | Create | 创建新告警 | | Get | 通过 ID、别名或 tinyId 获取告警详情 | | Get All | 列出带有过滤和分页的告警 | | Close | 关闭告警 | | Acknowledge | 确认告警 | | Unacknowledge | 取消确认告警 | | Snooze | 将告警暂停指定的持续时间 | | Escalate | 将告警升级给下一响应人 | | Assign | 将告警分配给用户 | | Add Team | 添加团队作为响应人 | | Add Responder | 添加用户、团队或日程作为响应人 | | Add Note | 为告警添加备注 | | Add Tags | 为告警添加标签 | | Remove Tags | 从告警中移除标签 | | Add Details | 添加自定义键值对详情 | | Execute Action | 对告警执行自定义操作 | | Get Request Status | 检查异步请求状态 | ### 事件 (11 个操作) | 操作 | 描述 | |-----------|-------------| | Create | 创建新事件 | | Get | 获取事件详情 | | Get All | 列出带有过滤条件的事件 | | Close | 关闭事件 | | Resolve | 解决事件 | | Add Responder | 为事件添加响应人 | | Add Note | 添加时间线条目 | | Add Tag | 为事件添加标签 | | Remove Tag | 从事件中移除标签 | | Get Timeline | 获取事件时间线条目 | | Delete Timeline | 删除时间线条目 | ### 团队 (12 个操作) | 操作 | 描述 | |-----------|-------------| | Create | 创建新团队 | | Get | 获取团队详情 | | Get All | 列出所有团队 | | Update | 更新团队属性 | | Delete | 删除团队 | | Get Members | 列出团队成员 | | Add Member | 向团队添加用户 | | Remove Member | 从团队中移除用户 | | Get Logs | 获取团队活动日志 | | Get Routing Rules | 列出团队路由规则 | | Create Routing Rule | 创建新路由规则 | | Delete Routing Rule | 删除路由规则 | ### 用户 (12 个操作) | 操作 | 描述 | |-----------|-------------| | Create | 创建新用户 | | Get | 获取用户详情 | | Get All | 列出所有用户 | | Update | 更新用户属性 | | Delete | 删除用户 | | Get Teams | 列出用户的团队成员身份 | | Get Forwarding Rules | 列出转发规则 | | Create Forwarding Rule | 创建转发规则 | | Delete Forwarding Rule | 删除转发规则 | | Get Contacts | 列出用户联系方式 | | Add Contact | 添加联系方式 | | Delete Contact | 删除联系方式 | ### 日程 (9 个操作) | 操作 | 描述 | |-----------|-------------| | Create | 创建新日程 | | Get | 获取日程详情 | | Get All | 列出所有日程 | | Update | 更新日程属性 | | Delete | 删除日程 | | Get On-Calls | 获取当前值班人员 | | Get Next On-Calls | 获取下一班值班人员 | | Get Timeline | 获取日程时间线 | | Export iCal | 将日程导出为 iCal 文件 | ### 升级 (5 个操作) | 操作 | 描述 | |-----------|-------------| | Create | 创建升级策略 | | Get | 获取升级详情 | | Get All | 列出所有升级 | | Update | 更新升级策略 | | Delete | 删除升级 | ### 集成 (6 个操作) | 操作 | 描述 | |-----------|-------------| | Get | 获取集成详情 | | Get All | 列出所有集成 | | Enable | 启用集成 | | Disable | 禁用集成 | | Authenticate | 验证集成 | | Get Actions | 获取集成操作 | ### 服务 (5 个操作) | 操作 | 描述 | |-----------|-------------| | Create | 创建服务 | | Get | 获取服务详情 | | Get All | 列出所有服务 | | Update | 更新服务属性 | | Delete | 删除服务 | ### 维护 (6 个操作) | 操作 | 描述 | |-----------|-------------| | Create | 创建维护窗口 | | Get | 获取维护详情 | | Get All | 列出维护窗口 | | Update | 更新维护窗口 | | Delete | 删除维护窗口 | | Cancel | 取消活动维护 | ### 心跳 (8 个操作) | 操作 | 描述 | |-----------|-------------| | Create | 创建心跳监控 | | Get | 获取心跳详情 | | Get All | 列出所有心跳 | | Update | 更新心跳设置 | | Delete | 删除心跳 | | Enable | 启用心跳 | | Disable | 禁用心跳 | | Ping | 发送心跳 Ping | ### 策略 (8 个操作) | 操作 | 描述 | |-----------|-------------| | Create | 创建告警/通知策略 | | Get | 获取策略详情 | | Get All | 列出策略 | | Update | 更新策略 | | Delete | 删除策略 | | Enable | 启用策略 | | Disable | 禁用策略 | | Change Order | 更改策略执行顺序 | ### 通知规则 (7 个操作) | 操作 | 描述 | |-----------|-------------| | Create | 创建用户通知规则 | | Get | 获取规则详情 | | Get All | 列出用户的通知规则 | | Update | 更新通知规则 | | Delete | 删除通知规则 | | Enable | 启用通知规则 | | Disable | 禁用通知规则 | ## 触发器节点 **Opsgenie Trigger** 节点可实时接收来自 Opsgenie 的 webhook 事件。 ### 支持的事件 - 告警已创建、已确认、已关闭、已暂停 - 告警已升级、已分配、已添加团队 - 告警已添加备注、已添加/移除标签 - 事件已创建、已关闭、已解决 - 心跳已过期 - 日程值班人员已更改 ### Webhook 设置 1. 在 n8n 中,添加一个 **Opsgenie Trigger** 节点并复制 webhook URL 2. 在 Opsgenie 中,前往 **Settings** > **Integrations** 3. 添加一个新的 **Webhook** 集成 4. 粘贴 n8n 的 webhook URL 5. 配置事件过滤器并启用所需的事件类型 6. 保存并激活集成 ## 使用示例 ### 从监控系统创建告警 ``` { "message": "High CPU Usage on Production Server", "alias": "cpu-alert-prod-001", "description": "CPU usage exceeded 90% for 5 minutes", "priority": "P2", "responders": [ { "type": "team", "name": "DevOps" } ], "tags": ["production", "infrastructure", "cpu"], "details": { "server": "prod-web-01", "metric": "cpu_usage", "value": "95%" } } ``` ### 创建带有受影响服务的事件 ``` { "message": "Payment Gateway Outage", "description": "Payment processing is failing for all customers", "priority": "P1", "impactedServices": ["payment-service-id"], "responders": [ { "type": "team", "name": "Payments Team" }, { "type": "user", "username": "oncall@company.com" } ], "notifyStakeholders": true } ``` ### 自动升级工作流 1. **触发器**:Opsgenie Trigger (Alert Created) 2. **检查**:如果优先级为 P1 且在 5 分钟内未得到确认 3. **操作**:升级给下一响应人 4. **通知**:向事件频道发送 Slack 消息 ## Opsgenie 概念 ### 告警优先级 - **P1** - 严重:系统宕机,需要立即采取行动 - **P2** - 高:主要功能受到影响 - **P3** - 中等:部分用户受到影响 - **P4** - 低:轻微问题 - **P5** - 信息:无需立即采取行动 ### 响应人类型 - **User**:按用户名或 ID 标识的单个用户 - **Team**:根据路由规则通知的整个团队 - **Escalation**:遵循升级策略规则 - **Schedule**:通知当前值班人员 ### 标识符类型 许多资源支持多种标识符类型: - **id**:Opsgenie 的唯一标识符 (UUID) - **name**:人类可读的名称(团队、日程、升级) - **alias**:用户定义的去重键(告警) - **tiny**:短 ID 格式(告警) ## 错误处理 该节点处理常见的 Opsgenie API 错误: | 错误码 | 描述 | 解决方案 | |------------|-------------|------------| | 400 | 无效参数 | 检查请求体格式 | | 401 | 无效 API 密钥 | 验证凭证中的 GenieKey | | 403 | 权限不足 | 检查 API 集成权限 | | 404 | 未找到资源 | 验证资源 ID/名称是否存在 | | 409 | 冲突 | 资源已存在 | | 422 | 验证错误 | 检查必填字段 | | 429 | 超出速率限制 | 实施退避重试 | ### 速率限制 - **默认**:每个账号每分钟 3,000 次请求 - 请求头 `X-RateLimit-Remaining` 和 `X-RateLimit-Reset` 跟踪使用情况 - 告警操作是异步的 - 使用 "Get Request Status" 验证是否完成 ## 安全最佳实践 1. **API 密钥安全** - 将 API 密钥存储在 n8n 凭证中,切勿直接写入工作流 - 针对不同的用例使用单独的 API 集成 - 定期轮换 API 密钥 2. **权限控制** - 为 API 集成授予所需的最低权限 - 尽可能使用团队范围的 API 密钥 3. **数据处理** - 注意告警详情中的敏感数据 - 对敏感的自定义字段使用加密 ## 开发 ``` # 安装 dependencies npm install # 构建 project npm run build # 运行 tests npm test # 运行 tests 并生成 coverage npm run test:coverage # Lint 代码 npm run lint # 修复 linting 问题 npm run lint:fix # 格式化代码 npm run format # 用于开发的 Watch mode npm run dev ``` ## 作者 **Velocity BPA** - 网站: [velobpa.com](https://velobpa.com) - GitHub: [Velocity-BPA](https://github.com/Velocity-BPA) ## 许可证 此 n8n 社区节点基于 **Business Source License 1.1** 授权。 ### 免费使用 允许用于个人、教育、研究和内部商业用途。 ### 商业用途 在任何 SaaS、PaaS、托管平台、托管服务或付费自动化产品中使用此节点需要商业许可。 有关许可咨询:**licensing@velobpa.com** 详情请参见 [LICENSE](LICENSE)、[COMMERCIAL_LICENSE.md](COMMERCIAL_LICENSE.md) 和 [LICENSING_FAQ.md](LICENSING_FAQ.md)。 ## 支持 - **问题反馈**: [GitHub Issues](https://github.com/Velocity-BPA/n8n-nodes-opsgenie/issues) - **文档**: [Opsgenie API Docs](https://docs.opsgenie.com/docs/api-overview) - **n8n 社区**: [n8n Community Forum](https://community.n8n.io) ##致谢 - Atlassian 的 [Opsgenie](https://www.atlassian.com/software/opsgenie) 提供事件管理平台 - [n8n](https://n8n.io) 提供工作流自动化平台 - n8n 社区提供节点开发最佳实践
标签:API集成, Atlassian, BPA, escalation policy, heartbeat监控, Incident Response, IT运维, MITM代理, n8n, n8n社区节点, npm包, On-Call排班, Opsgenie, Socks5代理, SRE工具, TypeScript, Webhook触发器, 可观测性, 告警升级, 告警管理, 团队协作, 多区域支持, 安全插件, 工作流自动化, 自动化攻击, 自动化编排, 警报路由, 运维自动化