reNgine多渠道通知集成:Slack、Discord与Email告警配置
你是否还在为错过重要的扫描结果而烦恼?当安全漏洞或扫描任务完成时,及时的通知能帮助你快速响应。本文将详细介绍如何在reNgine中配置Slack、Discord和Email三种通知渠道,让你随时随地掌握项目动态。读完本文后,你将能够:配置多平台通知告警、测试通知发送功能、排查常见配置问题。
通知系统架构概述
reNgine的通知系统基于Django框架构建,通过事件触发机制将系统消息分发到不同渠道。核心通知逻辑由web/reNgine/tasks.py处理,支持系统级和项目级两种通知类型。
通知数据存储在数据库中,模型定义见web/dashboard/models.py的InAppNotification类,包含标题、描述、状态等字段。前端通过web/static/custom/notification.js实现实时通知展示和交互功能。
准备工作
在开始配置前,请确保:
- reNgine已成功安装,推荐使用install.sh脚本进行部署
- 拥有对应通知渠道的管理员权限(如Slack工作区权限、Discord服务器管理权限等)
- 项目配置文件default_yaml_config.yaml可正常读写
Slack通知配置
Slack通知通过Webhook实现,需要在Slack工作区创建Incoming Webhook。
创建Slack Webhook
- 访问Slack API网站,创建新的应用
- 在应用设置中启用"Incoming Webhooks"
- 添加新的Webhook URL,选择目标频道
- 复制生成的Webhook URL,格式类似:
https://hooks.slack.com/services/XXXXXX/XXXXXX/XXXXXX
配置reNgine
- 编辑项目配置文件default_yaml_config.yaml,添加Slack配置:
notifications:
slack:
enabled: true
webhook_url: "https://hooks.slack.com/services/XXXXXX/XXXXXX/XXXXXX"
channel: "#security-alerts"
- 重启reNgine服务使配置生效:
docker-compose restart web celery
测试Slack通知
在reNgine中发起一次扫描任务,完成后检查Slack频道是否收到通知。通知消息格式由web/reNgine/tasks.py控制,可根据需要自定义。
Discord通知配置
Discord通知同样使用Webhook机制,配置过程与Slack类似。
创建Discord Webhook
- 进入Discord服务器设置,选择"集成" > "Webhooks"
- 点击"新建Webhook",设置名称和头像
- 复制Webhook URL,格式类似:
https://discord.com/api/webhooks/XXXXXX/XXXXXX
配置reNgine
- 编辑default_yaml_config.yaml,添加Discord配置:
notifications:
discord:
enabled: true
webhook_url: "https://discord.com/api/webhooks/XXXXXX/XXXXXX"
username: "reNgine Bot"
- 重启服务应用配置:
docker-compose restart web celery
Email通知配置
Email通知通过SMTP协议发送,支持主流邮件服务提供商。
SMTP配置参数
| 参数 | 说明 | 示例值 |
|---|---|---|
| EMAIL_HOST | SMTP服务器地址 | smtp.gmail.com |
| EMAIL_PORT | SMTP服务器端口 | 587 |
| EMAIL_USE_TLS | 是否启用TLS加密 | true |
| EMAIL_HOST_USER | 发件人邮箱 | security@example.com |
| EMAIL_HOST_PASSWORD | 邮箱密码/授权码 | your_app_password |
配置reNgine
- 编辑Django设置文件web/reNgine/settings.py,添加Email配置:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'your_email@gmail.com'
EMAIL_HOST_PASSWORD = 'your_app_password'
DEFAULT_FROM_EMAIL = 'reNgine <security@example.com>'
- 添加通知接收人配置到default_yaml_config.yaml:
notifications:
email:
enabled: true
recipients:
- "team@example.com"
- "manager@example.com"
subject_prefix: "[reNgine Alert]"
通知模板自定义
reNgine允许自定义通知内容模板,模板文件位于web/templates/base/_items/目录下。你可以修改以下模板文件来自定义通知格式:
故障排除与常见问题
通知发送失败
- 检查服务日志:
docker-compose logs -f web celery
- 验证配置文件权限:
ls -l default_yaml_config.yaml
- 测试外部连接:
docker-compose exec web curl -I https://hooks.slack.com
通知延迟问题
如果通知发送存在延迟,可尝试调整Celery工作队列配置,修改web/reNgine/settings.py中的Celery相关参数:
CELERY_WORKER_CONCURRENCY = 4
CELERY_TASK_PUBLISH_RETRY_POLICY = {
'max_retries': 3,
'interval_start': 0,
'interval_step': 0.5,
'interval_max': 2,
}
总结与最佳实践
通过本文介绍的方法,你已经掌握了reNgine的多渠道通知配置。建议:
- 为不同类型的事件配置不同的通知渠道(如严重漏洞发送Email和Slack,普通任务完成仅发送Discord)
- 定期测试通知功能,确保关键时刻能正常工作
- 保护好Webhook URL和API密钥,避免泄露导致安全风险
希望本文能帮助你更好地利用reNgine的通知功能,提升安全响应效率。如有任何问题,欢迎查阅README.md或提交issue反馈。
点赞收藏本文,关注项目更新,下期将带来"reNgine自动化扫描策略高级配置"教程!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



