pagerduty-events-apiv2.lua),它把主机和服务的状态变化以 PagerDuty Events API v2 格式的 JSON 发送到 http_server_url 参数指定的地址,默认是 https://events.pagerduty.com/v2/enqueue。Flashduty 的 PagerDuty 集成 与该格式兼容,因此不需要单独的 Centreon 集成:在 Flashduty 创建 PagerDuty 集成,把它的推送地址填进连接器的 http_server_url 即可。
在 Flashduty On-call
您可通过以下两种方式获取集成推送地址,任选其一即可。集成类型都选择 PagerDuty,不是 Centreon。
使用专属集成
- 进入 Flashduty 控制台,选择 协作空间,打开一个协作空间
- 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成
- 选择 PagerDuty,点击 保存
- 打开生成的集成卡片,复制 推送地址,形如
https://api.flashcat.cloud/event/push/alert/pagerduty?integration_key=<集成密钥>
使用共享集成
- 进入 Flashduty 控制台,选择 集成中心 → 告警事件
- 选择 PagerDuty,填写集成名称
- 配置默认路由并选择协作空间;创建后可在 路由 中增加更多规则
- 点击 保存,复制生成的 推送地址
在 Centreon 中配置
步骤 1:安装流连接器
在要发送数据的服务器(中央服务器、远程服务器或轮询器)上,以 root 执行:步骤 2:配置 Broker 输出
- 在中央服务器上进入 Configuration → Pollers → Broker configuration,点击
central-broker-master(如果由远程服务器或轮询器发送,选择对应的 Broker 配置) - 在 Output 标签页选择 Generic - Stream connector,点击 Add,新增一个输出
- 按下表填写:
- 点击 Filter category 表格下方的 +Add a new entry 添加以下参数:
- 部署配置,并在所有轮询器上重启
centengine:
integration_key 参数,也接受请求体里的 routing_key;上面两个参数都填,连接器发出的请求就可以通过验证。保持 max_buffer_size 为默认值,连接器每次请求只发送一个事件。
步骤 3:验证
按 Centreon 文档,可以在连接器所在服务器上用 curl 发送一条测试事件,routing_key 使用集成密钥,请求地址换成 Flashduty 推送地址:
event_action 改为 resolve 再发一次,告警恢复。
字段映射
Centreon 连接器发出的字段(见连接器源码)与 Flashduty 的对应关系:
连接器按 Centreon 状态设置的等级:
恢复与去重
- 同一个主机或服务始终使用同一个 Alert Key,状态从 WARNING 变为 CRITICAL 时更新同一条告警,回到 OK 或 UP 时恢复
- 连接器库的默认参数只发送 HARD 状态,并且不发送已确认(acknowledged)或处于停机维护(downtime)的对象;如需改变,在连接器参数中调整
hard_only、acknowledged、in_downtime - 只推送部分对象时,使用连接器的过滤参数,例如
accepted_hostgroups、accepted_servicegroups、accepted_pollers
排查问题
- Flashduty 没有收到告警:检查
/var/log/centreon-broker/pagerduty-events.log(默认日志文件,log_level最高为 3);确认http_server_url是完整的推送地址,pdy_routing_key已填写 - 连接器日志显示 POST 失败:连接器只把 HTTP 202 视为成功,Flashduty 对 PagerDuty Events API v2 请求返回 202;其他状态码请检查
integration_key是否正确 - 告警没有恢复:确认恢复状态(服务 OK、主机 UP)没有被过滤参数(例如
service_status、host_status)排除 - 收不到已确认对象的告警:默认
acknowledged为 0,已确认的问题不再推送