SLS告警最佳实践——自定义分析告警历史

本文涉及的产品
对象存储 OSS,OSS 加速器 50 GB 1个月
简介: 在SLS告警评估、触发到通知的整个生命周期过程中,都会有一些日志记录,通过这些日志我们可以借助告警对系统的整体健康状况、稳定性等有一个相对全面的了解。

概述

在SLS告警评估、触发到通知的整个生命周期过程中,都会有一些日志记录,通过这些日志我们可以借助告警对系统的整体健康状况、稳定性等有一个相对全面的了解。


在开始使用SLS告警的时候,需要选择一个地域来存储告警相关的数据,该初始化操作会自动创建一个 sls-alert-$uid-$region 形式的project,例如阿里云账号ID是 12345,选择的地域是杭州,那么默认创建出来的 project 就是 sls-alert-12345-cn-hangzhou。该 Project 下也会自动创建出来一个 internal-alert-center-log 的 LogStore,用于存放告警相关的数据,也就是告警中心日志。

注:该LogStore完全免费,并且已经默认创建索引。

之后我们就可以基于该 LogStore 进行分析。

Topic

告警中心日志根据 __topic__ 字段做区分,每个 __topic__ 表示告警处理的不同阶段。常见的 __topic__ 及其所处的阶段、以及说明如下:

__topic__

说明

alert_state

告警规则评估日志。

alert_received

告警管理服务接收到告警消息。

alert_routed

告警经过告警策略之后,进行路由合并。

alert_pre_filter

告警进入抑制静默流程。

alert_silenced

告警被抑制或者静默。

alert_pre_notify

告警进入通知发送流程

alert_notified

告警通知被发送。

system_config

配置错误,有可能导致告警通知失败。例如配置了不存在的联系人。

案例

下面通过一些案例来展示如何基于告警中心日志做自定义的查询分析。

案例一:告警触发统计

查询一段时间内,一共有多少告警触发过,以及触发的次数。

查询分析语句如下:

__topic__: alert_received |select"alert.project"as project,"alert.alert_name"as alert_name,count(*)as cnt
groupby  project,  alert_name
orderby  cnt desc

结果参考如下:

案例二:通知失败统计

统计一段时间内,各个通知渠道的失败次数。

查询分析语句如下:

__topic__: alert_notified and level: error |select"notifierConfig.type"as notificationType,count(*)as cnt
groupby  notificationType
orderby  cnt desc

案例三:通知失败原因

某告警规则没有收到通知,可通过如下方式查询失败原因。

第一步,首先查看是否有配置错误:

__topic__: system_config and alert.alert_id: alert-xxx-yyy |select level, error, msg,"desc"

如果有数据,则说明配置有问题导致无法进行通知。详细的错误说明可以参考下面表格。如果没有配置错误,那么可能是由于通知发送失败了,可以通过如下语句查询是否有通知错误:

__topic__: alert_notified and level: error and alert.alert_id: alert-xxx-yyy |select error

参考结果如下:

此时可以发现是配置的Webhook地址无效导致通知发送失败。

告警内置仪表盘

日志服务告警内置了如下几个仪表盘,用来统计告警的触发情况和通知情况。事实上,这些仪表盘也是基于告警中心日志数据来进行制作的。如果需要一些定制化的图标,也可以自己写查询语句来自定义仪表盘。

监控规则中心

监控规则中心仪表盘主要展示了告警监控规则的执行情况。

告警链路中心

告警链路中心主要包含了了告警在触发、合并、抑制静默、通知等各个阶段的统计。

告警排障中心

告警排障中心主要统计的是告警通知过程中的种种错误。比如由于配置错误导致通知无法发出。通过告警排障,选择相应的项目以及规则名,可以查看该规则相关的配置错误信息,从而快速定位通知收不到的原因。常见的配置错误参考下表。

常见配置错误

告警中心日志中,通过 __topic__: system_config 可以过滤出配置错误导致的通知异常。常见的错误参考如下:

故障级别

故障类型

故障详情

描述

详细描述

解决方案

error

AlertPolicyNotConfigured

Alert xxx has no alert policy configured

this alert will be ignored since it could not be routed

该告警规则未配置告警策略,导致该告警无法被进行路由分组,因此会被忽略。

修改告警规则,配置正确的告警策略。

error

AlertPolicyNotExist

alert policy xxx not exist

alerts that use this alert policy will be ignored

告警策略不存在,使用该告警策略的告警会被忽略。

检查该告警策略是否存在,如果不存在的话需要创建出来,或者使用其它的告警策略

error

AlertPolicyInvalid

alert policy xxx format error

alerts that use this alert policy will be ignored

告警策略格式错误,导致无法解析,使用该告警策略的告警会被忽略。

修改该告警策略的内容,或者删除重新创建。

warn

AlertPolicyInheritanceLoop

alert policy xxx has inheritance loop with yyy

inheritance loop alert policies will be ignored

告警策略集成有循环,例如 A 继承 B,B 又继承 A。在实际使用的时候,如果配置的是 A,则 B 和 A 生效;如果配置的是 B,则 A 和 B 生效。不会无限解析继承链

修改告警策略,避免有循环继承。

error

NoDefaultAlertPolicy

no default alert policy

alerts that use default alert policy will be ignored

没有配置默认告警策略。因此如果告警规则配置使用了默认告警策略,则相应的告警会被忽略。

设置默认的告警策略。

error

GroupPolicyEmpty

Group policy of alert policy xxx is empty

alerts using this alert policy will be ignored

告警策略中的分组规则为空,因此告警会被忽略。

修改告警策略中的分组规则配置,避免为空。

error

ActionPolicyNotExist

action policy xxx not exist

alerts that use default action policy will not be notified

行动策略不存在,导致使用了该行动策略的告警不会被发送。

创建相应的行动策略,或者修改告警策略中的分组规则,使用其它的行动策略。

error

ActionPolicyInvalid

action policy xxx invalid

alerts that use default action policy will not be notified

行动策略格式错误,导致使用了该行动策略的告警不会被发送。

修改相应的行动策略,或者删除后重新创建。

error

ActionPolicyEmpty

Primary(Secondary) policy for action policy xxx is empty

alerts using this action policy will not be notified

第一(第二) 行动策略为空,导致使用该行动策略的告警不会被发送。

修改相应的行动策略,确保不为空。

warn

UserNotExist

user xxx not exist

this user will not be notified

用户 xxx 不存在,该用户不会被通知。

从行动策略中去掉该用户,或者创建该用户。

warn

UserGroupNotExist

group xxx not exist

this group will not be notified

用户组 xxx 不存在,该用户组不会被通知。

从行动策略中去掉该用户组,或者创建该用户组。

warn

UserGroupEmpty

group xxx is empty

this group will not be notified

用户组 xxx 为空,因此该用户组不会被通知。

为该用户组添加用户。

warn

OncallGroupNotExist

oncall group xxx not exist

this oncall group will not be notified

值班组 xxx 不存在,因此该值班组不会被通知。

创建该值班组。

warn

ContentTemplateNotExist

content template xxx not exist

notifications that use this content template will be ignored

内容模板 xxx 不存在,因此使用了该内容模板的通知渠道会被忽略。

配置行动策略使用其它的内容模板,或者创建该内容模板。

warn

CalendarNotExist

calendar xxx not exist

oncall group that using this calendar will be ignored

日历 xxx 不存在,因此使用该日历的值班组会被忽略。

配置值班组使用其它日历,或者创建该日历。

warn

ChannelQuotaNotExist

channel quota not exist

action policies will ignore channel quota

渠道配额不存在,因此发送通知的时候会忽略 quota 限制。

创建渠道配额。

warn

ChannelQuotaInvalid

channel quota format invalid

action policies will ignore channel quota

渠道配额为空,因此会忽略 quota 限制。

修改渠道配额的内容,确保限制不为空。


相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
12月前
|
存储 运维 监控
SelectDB 实现日志高效存储与实时分析,完成任务可领取积分、餐具套装/水杯/帆布包!
SelectDB 实现日志高效存储与实时分析,完成任务可领取积分、餐具套装/水杯/帆布包!
|
12月前
|
运维 Prometheus 监控
基于阿里云可观测产品构建企业级告警体系的通用路径与最佳实践
本文围绕企业级告警体系构建展开,探讨了监控与告警在系统稳定性中的重要作用。通过梳理监控对象、分析指标、采集数据及配置规则等环节,提出告警体系建设的通用流程,并针对多平台告警、误报、告警风暴等问题提供解决思路。结合阿里云可观测产品,分享了某电商企业的实践案例,展示了如何通过标签规范、日志标准和统一管理平台实现高效告警处置,为构建全面且实用的告警体系提供了参考指南。
1110 1
|
7月前
|
Prometheus 监控 Java
日志收集和Spring 微服务监控的最佳实践
在微服务架构中,日志记录与监控对系统稳定性、问题排查和性能优化至关重要。本文介绍了在 Spring 微服务中实现高效日志记录与监控的最佳实践,涵盖日志级别选择、结构化日志、集中记录、服务ID跟踪、上下文信息添加、日志轮转,以及使用 Spring Boot Actuator、Micrometer、Prometheus、Grafana、ELK 堆栈等工具进行监控与可视化。通过这些方法,可提升系统的可观测性与运维效率。
648 1
日志收集和Spring 微服务监控的最佳实践
|
7月前
|
负载均衡 监控 安全
5 个 IIS 日志记录最佳实践
IIS日志记录是监控Web服务器性能与安全的关键。本文介绍启用日志、应用池配置、负载均衡、敏感数据防护、日志集中管理及保留策略等五大最佳实践,助力高效分析与合规审计。
396 1
|
7月前
|
监控 安全 搜索推荐
使用EventLog Analyzer进行日志取证分析
EventLog Analyzer助力企业通过集中采集、归档与分析系统日志及syslog,快速构建“数字犯罪现场”,精准追溯安全事件根源。其强大搜索功能可秒级定位入侵时间、人员与路径,生成合规与取证报表,确保日志安全防篡改,大幅提升调查效率,为执法提供有力证据支持。
259 0
|
7月前
|
机器学习/深度学习 运维 数据挖掘
运维告警不是“玄学”:聊聊怎么用机器学习优化事件关联分析
运维告警不是“玄学”:聊聊怎么用机器学习优化事件关联分析
287 3
|
SQL 监控 数据挖掘
SLS 重磅升级:超大规模数据实现完全精确分析
SLS 全新推出的「SQL 完全精确」模式,通过“限”与“换”的策略切换,在快速分析与精确计算之间实现平衡,满足用户对于超大数据规模分析结果精确的刚性需求。标志着其在超大规模日志数据分析领域再次迈出了重要的一步。
798 118
|
11月前
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
1051 54
|
消息中间件 运维 监控
智能运维,由你定义:SAE自定义日志与监控解决方案
通过引入 Sidecar 容器的技术,SAE 为用户提供了更强大的自定义日志与监控解决方案,帮助用户轻松实现日志采集、监控指标收集等功能。未来,SAE 将会支持 istio 多租场景,帮助用户更高效地部署和管理服务网格。
651 51
|
9月前
|
监控 安全 NoSQL
【DevOps】Logstash详解:高效日志管理与分析工具
Logstash是ELK Stack核心组件之一,具备强大的日志收集、处理与转发能力。它支持多种数据来源,提供灵活的过滤、转换机制,并可通过插件扩展功能,广泛应用于系统日志分析、性能优化及安全合规等领域,是现代日志管理的关键工具。
1297 0

相关产品

  • 日志服务