Trace告警配置最佳实践

本文涉及的产品
对象存储 OSS,20GB 3个月
阿里云盘企业版 CDE,企业版用户数5人 500GB空间
文件存储 NAS,50GB 3个月
简介: 阿里云日志服务(SLS)提供了Log,Metric,Trace等三种数据快速接入的能力,同时也提供了丰富的分析功能和可定制化的Dashboard的能力,客户可以利用SLS快速的搭建可观测性平台,让用户更加关注于分析,降低用户接入各类数据的门槛。本文主要讲述应用接入SLS Trace服务后,针对各种场景化如何配置告警。

背景


近两年系统可观测性可算是火爆的概念,从2017年 Peter Bourgon编写的《Metrics, Tracing, and Logging》系统地阐述了这三者的定义、特征,以及它们之间的关系与差异,受到了业界的广泛认可。由此确认了可观测性的三大支柱数据。可观测性平台旨在将三类数据数据采集,通过专家经验进行融合分析,输出成各种Dashboard,运维或者研发同学可通过Dashboard可以快速的定位和发现隐藏的问题。


阿里云日志服务(SLS)提供了Log,Metric,Trace等三种数据快速接入的能力,同时也提供了丰富的分析功能和可定制化的Dashboard的能力,客户可以利用SLS快速的搭建可观测性平台,让用户更加关注于分析,降低用户接入各类数据的门槛。


本文主要讲述应用接入SLS Trace服务后,针对各种场景化如何配置告警。


配置告警流程

  1. 点击Trace实例的project,进入存放trace数据的logstore。例如trace实例名称为sls-mall,存放trace数据的logstore名字就叫sls-mall-traces
  2. 添加执行告警SQL,下图以服务延迟告警为例,实现效果:当服务方法的平均延迟超过2秒则告警。

  1. 另存为新版告警

  1. 配置告警监控规则,同时添加触发条件

  1. 新增行动策略

  1. 配置行动列表,这里以钉钉消息为例,

当触发告警后,配置的钉钉号将会收到相应告警消息,如下图。以上便是添加SLS Trace告警的流程,接下来将会带来针对性Trace场景告警的SQL。

告警SQL最佳实践

服务方法告警

  • 针对服务错误率告警
service:*and parentSpanID:""|select sum(error)*1.0/count(1)as errorRate, service from(select CASE when statusCode ='ERROR' then 1 ELSE 0 END as error, service from log )groupby service


  • 针对服务请求QPS告警,注意:执行下面SQL,时间选择为:1分钟,如果是其他时间,调整分母即可
service :*and parentSpanID:""|selectcount(1)/60as QPS, service from log groupby service


  • 针对服务P90, P95, P99延迟(ms)告警
  • P90
service:*|select approx_percentile(duration,0.9)as avg, service from log groupby service, name
  • P95
service:*|select approx_percentile(duration,0.95)as avg, service from log groupby service, name
  • P99
service:*|select approx_percentile(duration,0.99)as avg, service from log groupby service, name


  • 针对入口事务的平均延迟(ms)告警
service :*and parentSpanID:""|select round(avg(duration)/1000.0,2)as total, service from log groupby service


  • 针对单个方法平均延迟(ms)告警
service :*|select round(avg(duration)/1000.0,2)as avg, service, name from log groupby service, name


DB/NoSQL告警

  • 针对DB平均延迟(ms)告警,本条SQL同样也适用于NoSQL(Redis,Cassandra,MongoDB,Elasticsearch)
attribute.db.system:*|select round(avg(duration)/1000.0,2)as avg, service, json_extract_scalar(attribute,'$["db.statement"]')as statement from log groupby service, name, sql


服务调用告警

  • 针对Http平均延迟(ms)告警
kind: client and attribute.http.method:*|select round(avg(duration)/1000.0,2)as avg, service, json_extract_scalar(attribute,'$["http.url"]')as url from log groupby service, name, url


消息中间件

  • 针对消息处理平均延迟(ms)告警
kind:consumer and attribute.messaging.system:*|select round(avg(duration)/1000.0,2)as avg, service from log groupby service, name


FAQ

  1. 如何单个服务进行告警?

只需要在告警sql中添加service: XXX即可

  1. DB/NoSQL指标能否支持P90告警

可以,只需将上述的avg算子替换成使用approx_percentile算子即可

获得第一手资料与支持:

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
存储 数据采集 人工智能
以Trace为核心的根因分析概述
近期一直在学习和复现“根因分析”领域的相关文章,在这里跟大家一起分享下相关内容。这里不在赘述关于“可观测性”和“AIOps”的重要性和必要性,也不过多的陈述在“复杂系统”中进行快速根因诊断的必要性,直接进入到相关算法和系统设计部分。
1603 0
以Trace为核心的根因分析概述
|
编解码 监控 前端开发
Sentry 监控 - Alerts 告警
Sentry 监控 - Alerts 告警
708 0
Sentry 监控 - Alerts 告警
|
JSON 监控 Dubbo
基于SkyWalking的分布式跟踪系统 - 异常告警
基于SkyWalking的分布式跟踪系统 - 异常告警
321 0
|
存储 数据采集 监控
无数据告警最佳实践
在对SLS的Logstore和Metricstore进行监控的过程中,有时候会出现一些无数据的情况,监控SLS的存储库中无数据的情况,是保证数据成功上传到SLS的一个重要手段,本文将介绍无数据告警的常见配置方法。
477 0
无数据告警最佳实践
|
8月前
|
存储 数据采集 监控
【最佳实践】无数据告警配置
背景在对SLS的Logstore和Metricstore进行监控的过程中,有时候会出现一些无数据的情况,例如数据采集阶段出现故障Logtail采集异常、数据导入任务异常或者SDK写入数据出错等情况都有可能导致日志库中没有数据。业务系统出现问题例如用户的业务日志中有某个系统模块的日志,在一段时间内,由...
178 0
【最佳实践】无数据告警配置
|
8月前
|
机器学习/深度学习 运维 监控
用SLS配置日志关键字告警的N种方法
本文由日志关键词告警出发,介绍了使用SLS进行关键词监控告警配置,并且介绍了几种常见的配置方法,可以覆盖关键词监控的大部分场景。
410 0
用SLS配置日志关键字告警的N种方法
|
8月前
|
运维 监控 安全
SLS相同监控规则太多?试试告警监控模板
本文主要介绍了SLS自定义告警监控模板的使用场景以及最佳实践。
153 0
SLS相同监控规则太多?试试告警监控模板
|
存储 监控 索引
SLS告警最佳实践——自定义分析告警历史
在SLS告警评估、触发到通知的整个生命周期过程中,都会有一些日志记录,通过这些日志我们可以借助告警对系统的整体健康状况、稳定性等有一个相对全面的了解。
568 0
|
Prometheus 运维 Cloud Native
prometheus告警问题分析
prometheus告警问题分析
prometheus告警问题分析
|
JSON 监控 应用服务中间件
SLS告警最佳实践——Webhook通知最佳实践
SLS告警通知对接了常用的各种 IM 系统,例如钉钉、企业微信、飞书、Slack。SLS对这些系统的 Webhook 进行了包装,用户无需关心各个通知渠道的具体消息格式,只需要配置希望通知的内容即可。 除此之外,还有其它的一些场景,需要使用通用Webhook(自定义 Webhook),本文主要介绍通用 Webhook 使用过程中常见的一些问题和最佳实践。
746 0