SLS告警最佳实践——Webhook通知最佳实践

本文涉及的产品
对象存储 OSS,标准 - 本地冗余存储 20GB 3个月
对象存储 OSS,内容安全 1000 次 1年
日志服务 SLS,月写入数据量 50GB 1个月
简介: SLS告警通知对接了常用的各种 IM 系统,例如钉钉、企业微信、飞书、Slack。SLS对这些系统的 Webhook 进行了包装,用户无需关心各个通知渠道的具体消息格式,只需要配置希望通知的内容即可。除此之外,还有其它的一些场景,需要使用通用Webhook(自定义 Webhook),本文主要介绍通用 Webhook 使用过程中常见的一些问题和最佳实践。

SLS告警通知对接了常用的各种 IM 系统,例如钉钉、企业微信、飞书、Slack。SLS对这些系统的 Webhook 进行了包装,用户无需关心各个通知渠道的具体消息格式,只需要配置希望通知的内容即可。

除此之外,还有其它的一些场景,需要使用通用Webhook(自定义 Webhook),本文主要介绍通用 Webhook 使用过程中常见的一些问题和最佳实践。

Webhook请求

Webhook 调用本质上就是一次 HTTP 请求调用,SLS告警支持 GET、POST、PUT、DELETE 等多种方法。但是从应用广泛性上来讲,建议如下:

  • 如无特殊必要,建议使用 POST 方法,因为该方法在各个 Web 框架中支持程度最好
  • 请求体建议一律使用 JSON 格式,默认情况下也会加上 Content-Type: application/json这个 header
  • Webhook 处理正常的话返回值需要返回 200,不然会认为请求失败,有可能重复调用

内容模板

上文提到,Webhook的通知内容建议是JSON格式,因此在配置内容模板的时候需要注意,最后的渲染内容需要是合法的JSON。例如告警结构如下:

{
"project": "test-alert",
"region": "cn-hangzhou",
"labels": {
"service": "signin",
"env": "prod"    },
"annotations": {
"message": "user \"xxx\" signin failed, error is: userNotFound"    }
}

假如我们配置的内容模板如下:

{
"project": "{{ alert.project }}",
"service": "{{ alert.labels.service }}",
"message": "{{ alert.annotations.message }}"}

那么最终渲染的结果是:

{
"project": "test-alert",
"service": "signin",
"message": "user "xxx" signin failed, error is: userNotFound"}

由于 alert.annotations.message 本身包含双引号,因此会导致最终的渲染结果不是合法JSON,从而导致发送失败。


在此情况下,可以使用内置模板函数 quote 来对数据进行引用,从而避免特殊字符导致的 JSON 格式异常,例如模板配置如下:

{
"project": "{{ alert.project }}",
"service": "{{ alert.labels.service }}",
"message": {{ alert.annotations.message|quote }}
}

那么最终渲染的结果就是合法的 JSON,内容如下:

{
"project": "test-alert",
"service": "signin",
"message": "user \"xxx\" signin failed, error is: userNotFound"}

网络问题

告警的Webhook通知仅支持公网访问,因此某些场景下,如果为内部系统,不希望对外开启访问的时候,可以通过一个公网代理的方式来解决。架构参考如下:

IP 白名单

告警的 Webhook 通知使用的是动态代理,因此不固定 IP 地址,无法通过配置 IP 白名单的方式限制访问。此时建议通过 HTTP Header 校验的方式来避免被恶意调用。例如:

  • 自定义 Token:Header 添加 Authorization: Bearer xxxxx,其中 xxxxx 为自定义 Token
  • 使用 BasicAuth,Header 添加 Authorization: Basic $(base64_encode({username}:{password}))

下面示例为 Nginx 的 BasicAuth 配置,作为参考:

  • 在密码文件中添加用户,用户名为 admin,密码为 foobar。

注意:如果没有 conf/passwd 文件,可以先手动创建

htpasswd -b conf/passwd admin foobar

  • 配置 Nginx,添加 auth_basic 和 auth_basic_user_file 配置,开启 BasicAuth。
location / {
    auth_basic  on;
    auth_basic_user_file  conf/passwd;
    root   html;
    index  index.html index.htm;
}
  • 重启 Nginx 或者重新加载 Nginx 配置。

由于 echo -n admin:foobar | base64结果为 YWRtaW46Zm9vYmFy,因此在配置 Webhook 的时候,添加自定义 Header Authorization: Basic YWRtaW46Zm9vYmFy即可。

进一步参考

更多相关信息,可以参考:

对我们工作感兴趣的,可以通过如下方式了解更多,谢谢关注!

1624537055188-0b4cb237-52d3-4ac9-875d-1f8714e21d08.png

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
2月前
|
Prometheus 监控 Java
日志收集和Spring 微服务监控的最佳实践
在微服务架构中,日志记录与监控对系统稳定性、问题排查和性能优化至关重要。本文介绍了在 Spring 微服务中实现高效日志记录与监控的最佳实践,涵盖日志级别选择、结构化日志、集中记录、服务ID跟踪、上下文信息添加、日志轮转,以及使用 Spring Boot Actuator、Micrometer、Prometheus、Grafana、ELK 堆栈等工具进行监控与可视化。通过这些方法,可提升系统的可观测性与运维效率。
224 1
日志收集和Spring 微服务监控的最佳实践
|
2月前
|
负载均衡 监控 安全
5 个 IIS 日志记录最佳实践
IIS日志记录是监控Web服务器性能与安全的关键。本文介绍启用日志、应用池配置、负载均衡、敏感数据防护、日志集中管理及保留策略等五大最佳实践,助力高效分析与合规审计。
147 1
|
7月前
|
运维 Prometheus 监控
基于阿里云可观测产品构建企业级告警体系的通用路径与最佳实践
本文围绕企业级告警体系构建展开,探讨了监控与告警在系统稳定性中的重要作用。通过梳理监控对象、分析指标、采集数据及配置规则等环节,提出告警体系建设的通用流程,并针对多平台告警、误报、告警风暴等问题提供解决思路。结合阿里云可观测产品,分享了某电商企业的实践案例,展示了如何通过标签规范、日志标准和统一管理平台实现高效告警处置,为构建全面且实用的告警体系提供了参考指南。
627 1
|
6月前
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
700 54
|
8月前
|
数据采集 运维 监控
数据采集监控与告警:错误重试、日志分析与自动化运维
本文探讨了数据采集技术从“简单采集”到自动化运维的演进。传统方式因反爬策略和网络波动常导致数据丢失,而引入错误重试、日志分析与自动化告警机制可显著提升系统稳定性与时效性。正方强调健全监控体系的重要性,反方则担忧复杂化带来的成本与安全风险。未来,结合AI与大数据技术,数据采集将向智能化、全自动方向发展,实现动态调整与智能识别反爬策略,降低人工干预需求。附带的Python示例展示了如何通过代理IP、重试策略及日志记录实现高效的数据采集程序。
358 7
数据采集监控与告警:错误重试、日志分析与自动化运维
|
7月前
|
监控 安全 BI
优化 Apache 日志记录的 5 个最佳实践
Apache 日志记录对于维护系统运行状况和网络安全至关重要,其核心包括访问日志与错误日志的管理。通过制定合理的日志策略,如选择合适的日志格式、利用条件日志减少冗余、优化日志级别、使用取证模块提升安全性及实施日志轮换,可有效提高日志可用性并降低系统负担。此外,借助 Eventlog Analyzer 等专业工具,能够实现日志的高效收集、可视化分析与威胁检测,从而精准定位安全隐患、评估服务器性能,并满足合规需求,为强化网络安全提供有力支持。
167 0
优化 Apache 日志记录的 5 个最佳实践
|
8月前
|
运维 Prometheus 监控
基于阿里云可观测产品构建企业级告警体系的通用路径与最佳实践
基于阿里云可观测产品构建企业级告警体系的通用路径与最佳实践
290 1
|
12月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
255 1
|
XML JSON 监控
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
245 1

热门文章

最新文章

相关产品

  • 日志服务