SLS告警的分组评估最佳实践

本文涉及的产品
对象存储 OSS,20GB 3个月
文件存储 NAS,50GB 3个月
对象存储 OSS,内容安全 1000 次 1年
简介: 监控系统一般包括监控目标(监控实体),监控条件,告警通知,自动修复等系模块,SLS作为云原生观测与分析平台,为Log、Metric、Trace等数据提供大规模、低成本、实时的平台化服务;SLS也提供了丰富的监控告警功能,可以针对在日志/时序/Trace数据中进行配置异常告警,比如在Nginx日志中500错误过多,主机时序数据中CPU超过90%需要告警,在告警发出时,往往需要对问题发生的原因进行追溯,需要知道哪些实体在出现了异常,比如哪个域名500错误过多,哪台主机CPU过高等。本文将介绍通过SLS告警监控中的分组评估功能找出异常的实体。

前言

监控系统一般包括监控目标(监控实体),监控条件,告警通知,自动修复等系模块,SLS作为云原生观测与分析平台,为Log、Metric、Trace等数据提供大规模、低成本、实时的平台化服务;SLS也提供了丰富的监控告警功能,可以针对在日志/时序/Trace数据中进行配置异常告警,比如在Nginx日志中500错误过多,主机时序数据中CPU超过90%需要告警,在告警发出时,往往需要对问题发生的原因进行追溯,需要知道哪些实体在出现了异常,比如哪个域名500错误过多,哪台主机CPU过高等。本文将介绍通过SLS告警监控中的分组评估功能找出异常的实体。


接下来就以此为背景来介绍如果使用SLS告警中的分组评估来查找出现异常告警的实体。

SLS告警监控简介

告警监控介绍

上述为SLS告警监控部分的功能结构,其中左边为监控目标指标:包括日志存储和时序存储等,在日志存储和时序存储中一般会有监控实体的信息,比如nginx日志中会有host字段表示域名,主机时序指标的labels会有hostname和ip等实体信息,通过SLS告警监控的规则中的分组评估,我们可以实现根据不同的实体,发出不同的告警。

分组评估告警效果

如上图所示,不同的主机CPU信息存储在SLS时序库中,告警规则可以同时对时序库中不同的主机进行监控。下面介绍如何在监控规则中使用分组评估。


SLS告警监控最佳实践

日志类分组评估告警

以Nginx访问日志为例,Nginx日志接入SLS可以参考使用Nginx模式采集日志,日志的字段如下图所示,其中host可以作为监控的实体,比如www.nwg.mock.com可以作为一个域名实体,每个域名背后对应着一个微服务;在日志中可以存储多个域名的访问日志,不同的域名往往意味着不同的业务,不同的开发运维团队,所以不同的业务发生问题时运维团队首先需要定位的就是哪个实体除了问题。

这种情况下,如果按照host来发出告警,就可以很容易的定位到是哪个服务除了问题。

接下来看下在SLS监控中如何按照host来分组,监控域名下的500错误:

查询分析语句使用

status >= 500 | SELECT host, COUNT(*) as err_cnt GROUP BY host;

可以查出每个host的5xx错误数,如果在15分钟内错误数大于10就发出告警,并且每个host分开发送,可以在告警规则中这样配置,分组评估选择“标签自定义”,值选择host字段,类似SQL语法中group by的效果。

告警在评估时会对每个组内的数据进行评估,是否有数据匹配 err_cnt > 10;如果该组的数据有满足err_cnt > 10,则该组可以认为满足触发条件,会产生一条告警;整个告警规则会对每个组的内容进行评估,每个组会对应一条告警。

每个组对应的告警产生的告警属性中的labels中会默认加上分组字段,例如:

labels: {"host": "www.zjn.mock.com"}

时序类分组评估告警

以主机监控时序数据为例,可以使用SLS采集主机监控数据,主要包括CPU,内存,磁盘,网络,TCP等相关指标,使用SLS的promql_range函数查询时序数据,返回的字段主要包括labels,metric, time, value;举例如下:

labels: "{\"hostname\":\"hostname0\",\"ip\":\"192.168.31.246\"}"

metric: "cpu_util"

time: "1635506700000"

value: "52.58"

其中labels字段一般用来表示监控实体,所以对于时序类数据,SLS告警提供了“标签自动”的分组选项,自动设置为labels为分组字段,当满足触发条件时,每个分组都会分开评估是否触发告警。

查询分析语句使用:

* | select promql_query('cpu_util') from metrics limit 1000

告警配置如下:

监控规则在评估时,会根据按照时序数据中的labels进行分组,然后对每个分组评估是否满足 value > 90,如果满足,将会生成一条告警,告警属性中的labels默认会加上时序中的labels,如:

labels: {"hostname":"hostname0","ip":"192.168.31.246"}

告警属性的标签

在上述的日志或者时序类分组评估,分别触发告警后,生成的告警的labels即为告警属性中的标签,告警属性可以参考文章

告警属性的标签可以用在告警管理后续的告警策略行动策略的配置。本文主要介绍分组评估的实践,告警属性的用法这里不再赘述。具体可以参考SLS告警的官方文档告警学习路径

分组评估注意事项

分组评估虽然可以实现一套告警规则同时监控多个实体的效果,在支持客户的过程中,会遇到一些客户不恰当的使用分组评估:

选择分组评估字段时,最好选择可以标识监控实体的字段,离散的字段。

例:比如slb或者nginx日志中的host,url等字段,可以用来区分不同的服务,但是request_time字段就不具有区分度,更不能用来标记实体。

使用这样的字段会产生非常多的分组,每个分组对应一个告警,造成告警风暴,这些都是由于配置不合理导致的。

总结

通过文中对分组评估的介绍,分组评估在通过告警信息推导监控实体的过程中起了很大作用,可以对多个监控实体将日志或时序同时写入一个SLS存储中的时候,可以有效的对不同实体进行监控,实现一套规则,多个实体统一监控的目标。

同时在使用分组评估后,产生的告警会自动将分组字段加入到告警属性的标签中,可供后续的告警管理使用。

近期,阿里云也发布了《基于SLS实现统一告警最佳实践》,其中详细介绍了SLS告警的各种用法,包括开放告警/内置规则告警/自定义告警,以及灵活的告警管理策略。


参考

  • 什么是日志服务告警【链接
  • 告警分组评估【链接
  • 使用Nginx模式采集日志【链接
  • 采集主机监控数据【链接
  • 创建告警策略【链接
  • 创建行动策略【链接
  • SLS告警-学习路径【链接
  • 基于SLS实现统一告警最佳实践【链接


进一步参考

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
5月前
|
运维 Prometheus 监控
基于阿里云可观测产品构建企业级告警体系的通用路径与最佳实践
本文围绕企业级告警体系构建展开,探讨了监控与告警在系统稳定性中的重要作用。通过梳理监控对象、分析指标、采集数据及配置规则等环节,提出告警体系建设的通用流程,并针对多平台告警、误报、告警风暴等问题提供解决思路。结合阿里云可观测产品,分享了某电商企业的实践案例,展示了如何通过标签规范、日志标准和统一管理平台实现高效告警处置,为构建全面且实用的告警体系提供了参考指南。
359 1
|
6月前
|
数据采集 运维 监控
数据采集监控与告警:错误重试、日志分析与自动化运维
本文探讨了数据采集技术从“简单采集”到自动化运维的演进。传统方式因反爬策略和网络波动常导致数据丢失,而引入错误重试、日志分析与自动化告警机制可显著提升系统稳定性与时效性。正方强调健全监控体系的重要性,反方则担忧复杂化带来的成本与安全风险。未来,结合AI与大数据技术,数据采集将向智能化、全自动方向发展,实现动态调整与智能识别反爬策略,降低人工干预需求。附带的Python示例展示了如何通过代理IP、重试策略及日志记录实现高效的数据采集程序。
274 7
数据采集监控与告警:错误重试、日志分析与自动化运维
|
5月前
|
监控 安全 BI
优化 Apache 日志记录的 5 个最佳实践
Apache 日志记录对于维护系统运行状况和网络安全至关重要,其核心包括访问日志与错误日志的管理。通过制定合理的日志策略,如选择合适的日志格式、利用条件日志减少冗余、优化日志级别、使用取证模块提升安全性及实施日志轮换,可有效提高日志可用性并降低系统负担。此外,借助 Eventlog Analyzer 等专业工具,能够实现日志的高效收集、可视化分析与威胁检测,从而精准定位安全隐患、评估服务器性能,并满足合规需求,为强化网络安全提供有力支持。
119 0
优化 Apache 日志记录的 5 个最佳实践
|
6月前
|
运维 Prometheus 监控
基于阿里云可观测产品构建企业级告警体系的通用路径与最佳实践
基于阿里云可观测产品构建企业级告警体系的通用路径与最佳实践
233 1
|
10月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
216 1
|
11月前
|
XML JSON 监控
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
213 1
|
12月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
154 2
|
12月前
|
开发者 Python
基于Python的日志管理与最佳实践
日志是开发和调试过程中的重要工具,然而,如何高效地管理和利用日志常常被忽略。本文通过Python中的logging模块,探讨如何使用日志来进行调试、分析与问题排查,并提出了一些实际应用中的优化建议和最佳实践。
|
JSON Java fastjson
Java日志通关(五) - 最佳实践
作者日常在与其他同学合作时,经常发现不合理的日志配置以及五花八门的日志记录方式,后续作者打算在团队内做一次Java日志的分享,本文是整理出的系列文章第五篇。

相关产品

  • 日志服务