本文主要讲述过去一年内可观测平台 SLS 的改进和迭代。
SLS 作为一站式的可观测平台,提供了对 Log、Metric、Trace 等数据的完整支持,包括数据存储、查询分析、ETL、可视化、监控告警等能力。随着企业业务的不断发展,线上服务以及它们所产生的的可观测数据也会越来越多,越来越复杂,如何从这些海量的异构数据中快速发现有价值的信息,进而赋能运维与运营人员,是一个比较大的挑战。
在这个过程中,可能面临的挑战有:
为了解决这些问题,我们在 SLS 原有的监控告警能力基础上,进一步做了非常多重大的功能与体验升级,致力于将 SLS 打造成一站式的智能运维平台,从而帮助企业与用户解决以上诸多痛点。之前已经有多篇文章对此作了较为完整的介绍,可参考附1、附2。
在过去的一年,我们在功能性、易用性、集成度等方面做了大幅改进和优化,致力于满足不同需求层次的客户诉求,让智能告警触手可及。
整体上,SLS 智能告警系统主要分为以下几个组成部分:
在过去的一年,主要从以下两个维度做了功能演进:
集成独享 SQL 支持海量数据监控
在需要对大量数据进行监控的时候,由于查询资源的限制,可能会导致查询不完整、查询超时等问题,从而导致监控失效。为了解决该问题,SLS 告警的监控集成了 SQL 独享版,通过开启该功能,可以支持更大数据量、更高性能的监控。
在配置监控查询分析语句的时候,可以选择是否开启 SQL 独享版,有以下三种选项:
基于算法的智能合并降噪
在告警降噪过程中,我们可以通过配置适当的合并规则,将具有相似特征的告警合并到同一个分组中,实现批量的通知。例如可以设置将相同应用的告警进行合并,从而避免同一个应用的多个告警频繁触发通知。
但是在有些场景下,并没有非常明确的预设规则可以用来进行合并。基于这些场景,我们提供了智能合并模式。SLS 告警智能合并依托于 NLP 算法,自动化地去学习告警之间的关联或相似关系,在不依赖于历史告警数据的前提下(冷启动),可以实时地对不同来源的告警进行智能合并,然后再通知给用户,让用户免于告警风暴的困扰。关于智能合并更详细的介绍,可以参考附3。
通知渠道扩展
通知渠道方面,在已有的短信、语音、邮件、钉钉、自定义 Webhook 等基础上,新增了企业微信、飞书、Slack、函数计算、事件总线等通知渠道。
另外对于钉钉、企业微信、飞书、Slack、自定义 Webhook 等这些 Webhook 类型的通知渠道,提供了 Webhook 集成的功能,从而可以配置一次多处复用。在通知内容上,也对这些通知渠道做了包装,因此用户无需感知不同通知渠道的数据协议,只需要关注于自己希望看到的通知内容即可。
除了短信、钉钉这样的通知渠道,还可以对接函数计算来实现一些自动化的响应。即在告警触发后,无需人工干预,可以使用设定好的规则自动去处理故障,让故障的处理变得更加自动化和高效。详细使用案例可以参考附4。
内容模板增强
由于告警通知支持多个渠道,每个渠道都有各自的内容格式,比如邮件支持 HTML,钉钉等 IM 渠道支持 Markdown,因此同样的通知内容,在不同渠道中,需要使用不同的样式。另外对于具体的通知内容,可能需要根据不同的条件来展示不同的内容(例如告警触发的时候显示原始日志,恢复的时候无需展示);或者需要通过循环的方式,来遍历触发的日志内容,进行格式化的呈现。
基于这样动态渲染以及更丰富样式的诉求,我们在原有内容模板语法的基础上做了大幅改进,从而升级到了新版的模板语法。新版模板语法主要有以下特点:
例如同样的一条告警,使用新的模板语法,可以实现更好看的样式,从而让内容呈现更加直观。更多详细介绍,可以参考附5。
对接企业 CMDB 实现动态接收人
SLS 告警管理中,行动策略天然地支持动态分派的能力,例如将测试环境的告警发送给某个接收人,生产环境的告警通过短信发送给另一个接收人:
但是这对于某些特定场景,还是不太方便,例如:
在这种情况下,SLS 告警提供了动态接收人的方式,用户只需要提供一个 Webhook 服务,用于处理用户信息的对接以及告警通知的分派,无需将大量的用户信息导入 SLS 或配置大量的条件分支。
通过这种方式,可以灵活地与各种企业自建的 CMDB 系统进行对接,包括已有的用户信息管理、通知分派、值班等逻辑,都可以与 SLS 告警系统无缝对接。更多详细介绍可以参考附6。
移动端体验增强
通常在接收到告警通知后,我们可能需要登录控制台,再去查看详细的日志以及告警信息,然后进行告警事务的处理。这就带来了一些不方便,尤其是在路上或者夜里的时候,不仅需要开电脑,还需要登录才能操作。为了增强移动端的体验,我们提供了免登陆查看告警详情的功能。在接收到告警之后,通过免登陆链接在手机上直接点击,无需登录即可查看告警详情、查看触发日志、进行事务处理等操作。更多介绍可参考附7。
基于业务的告警统一管理
默认情况下,告警是在某个 Project 下进行管理的,也就是说,告警和数据相关联。但是在实际的一些使用场景中,我们可能希望能够根据业务单元为粒度,统一进行告警的管理以及态势的统计分析。因此我们提供了告警管理中心 APP,以业务为中心进行告警的统一管理,每个业务都包含从资源层到事务管理的完整链路。
在告警管理中心 APP 中,我们可以基于这样的业务划分,实现告警通知的统一管理、基于业务的告警态势查看与管理事务等功能。更多详细内容可以参考附8。
开箱即用:云产品/APP 集成
为了让其它云产品或者 SLS 日志应用能够快速启用告警,方便对相关资源进行监控,我们提供了大量的内置监控规则,并提供了一键开启告警的能力。覆盖了多个云产品以及 SLS 自身的功能监控等多个方面。通过这些内置的监控规则,用户甚至无需去理解日志数据的各个字段的详细语义,就可以实现对相关数据的监控,很大程度上降低了复杂数据的监控使用门槛。
目前已经集成的云产品包括容器服务 ACK、服务网格 ASM、操作审计等。以及 SLS 的日志应用,例如 k8s 事件中心、成本管家、日志审计、全栈监控 Cloud Lens for OSS 等十多个应用。
兼容并包:开放告警
除了将数据接入到 SLS 进行监控之外,对于一些用户已有的监控系统产生的告警,或者多云场景下的告警,也可以通过开放告警的方式统一接入到 SLS 告警管理平台,进行统一的告警管理。目前开放告警累计支持了 Prometheus、AlertManager、Grafana、Zabbix、DataDog、Loki、AWS CloudWatch、New Relic、华为云云监控等十多个监控源,从而可以将 SLS 作为统一的告警管理中心来对各个不同系统的告警进行管理。
自动化资源编排
随着 Infrastructure as Code 的理念发展,越来越多的企业在使用 Terraform 来进行云资源的管理编排。SLS 告警提供了对 Terraform 的支持,从而方便集成到企业的自动化流程中。另外也提供了完整的 SDK ,以方便批量自动化对告警规则及相关资源进行管理,相关信息可以参考附9、附10。
综合来说,过去的一年中我们主要在功能完整性、生态、易用性等方面做了比较大的演进。但整体上来说,依然存在着一些不足:
接下来的研发过程中,SLS 一站式智能告警运维系统会努力变得更加好用易用,进一步帮助用户更高效地挖掘潜在的数据价值。
参考文档
附1:一站式云原生智能告警运维平台——SLS 新版告警发布!
https://developer.aliyun.com/article/783352
附2:这才是可观测告警运维平台——20 个 SLS 告警运维场景
https://developer.aliyun.com/article/783354
附3:抑制告警风暴—SLS 告警智能合并发布
https://developer.aliyun.com/article/835401
附4:SLS 告警响应升级——通知对接 FC 进行自动化操作
https://developer.aliyun.com/article/832394
附5:SLS 告警重磅更新——让你的告警通知一目了然
https://developer.aliyun.com/article/793786
附6:设置动态接收人
https://help.aliyun.com/document_detail/415360.html
附7:免登录查看告警详情
https://help.aliyun.com/document_detail/346631.html
附8:告警管理中心概述
https://help.aliyun.com/document_detail/393361.html
附9:使用 Terraform 玩转 SLS 告警
https://developer.aliyun.com/article/880380
附10:如何使用 SDK 管理告警
https://help.aliyun.com/document_detail/387421.html
文章浏览阅读729次。Oracle 数据库之克隆方法Oracle 8.1.7 for Linux系统,在安装上存在一切困难,尤其在Redhat7.2系统下安装的时候会出现很多意想不到的事情,譬如图形界面无法显示、xwin无法远程连接,在编译的过程中如果没有安装GCC,Glibc等等一些库文件,容易出现无法link的错误,而全部安装又会造成其他困难。因此在Oracle安装过程中总结出来了一些经验。介绍如下::Oracle..._fmw_home/oracle_common/bin/pasteconfig.sh 克隆 timeout
文章浏览阅读899次,点赞2次,收藏3次。将一个n×n的对称矩阵A的下三角部分按行存放在一个一维数组B中,A[0][0]存放在B[0]中,那么第i行的对角元素A[i][i]在B中的存放位置是___(中国科学院大学 2016)如果分时系统的时间片固定,那么___,则响应时间越长。(兰州大学 2005年)关于路由器说法正确的是___。(中国科学院大学 2015)通常所说的“溢出”,是指___(哈尔滨工程大学 2004年)_用足够容量的一维数组b对nxn阶
文章浏览阅读101次。一、前言 AgileEAS.NET应用开发平台,简称EAS.NET,是基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台。用于帮助中小型软件企业建立一条适合市场快速变化的开发团队,以达到节省开发成本、缩短开发时间,快速适应市场变化的目的。 AgileEAS.NET应用开发平台包含基础类库、资源管理平台、运行容器、开发辅助工具等..._agile eas soa开发教程
文章浏览阅读4.8w次,点赞5次,收藏14次。前言上上周家里宽带升级成了200M,原有的100M光猫不能用了,电信公司给换上了一个新的1000M光猫,同时也将网络连接方式给从原来的光猫桥接改成光猫路由了,这让我自己的小服务器顿时与外界失去联系了。于是想进入光猫管理界面把连接方式修改回来,哪曾想进去后根本没有发现修改页面,好吧,知道是电信公司搞得鬼,我需要扒掉电信公司给带的套,无套作业才爽嘛。_pt622g超级密码
文章浏览阅读2.1k次,点赞5次,收藏5次。使用jclasslib不光可以直观地查看某个类对应的字节码文件,还可以查看类的基本信息、常量池、接口、属性、函数等信息。使用idea自带插件下载的方式安装在这就不说啦……网络上一大堆啦……说说我遇到的问题:我的idea版本是2020.2的,使用插件市场下载jclasslib后,点击view只有show Bytecode,没有JClasslib我怀疑应该是我的idea版本和插件的版本不太兼容,或者是新版的插件有其他更改导致然后找到了插件官网https://plugins.je..._jclasslib-bytecode-viewer插件没用
文章浏览阅读108次。深色地图Websites like Amazon, Facebook, and Google don’t just appear: people make them. Everything about their design is intentional, is serving some kind of purpose—and sometimes those designs deliberate..._深色地图如何制作
文章浏览阅读92次。在手工录入Oraclespatial表时,需要将空间表和字段记录插入到记录表USER_SDO_GEOM_METADATA中,然后创建空间表的空间字段索引。-- 1. 删除索引(若全新创建可不执行):DROP INDEX 空间表索引名称;-- 2. 删除记录(若全新创建可不执行):DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME='空间表名';-..._什么意思select * from user_sdo_geom_metadata
文章浏览阅读94次。1、什么是RFCRFC(Request For Comment):记录协议标准化过程的文档。RFC不仅记录了协议规范内容,还包含了协议的实现和运用的相关信息以及实验方面的信息。编号越大内容越新。2、下载RFC可以从下面这个网址搜索RFC文档并下载:http://www.rfc-editor.org/search/rfc_search.php 3、常见协议的RF..._rfc 2228
文章浏览阅读1.4w次,点赞49次,收藏293次。近年来,图像显著性检测研究引起了大量的学者关注。为了方便学术研究,本博客汇总了近几年比较经典的图像显著性检测论文及代码,同时也收集了一些显著性检测相关的Toolbox、Benchmark和大牛的主页等,希望对研究显著性检测的同学和老师们有所帮助啦~本博客汇总代码有可能需要翻墙请自备梯子。特别声明: 本博客汇总的开源代码仅作学术研究之用,如需商用请联系论文作者。本博客不生产论文和代码,我们只是学术...
文章浏览阅读606次。第一章 jsp开发基础[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MypxrDJs-1646450536079)(E:\QQ\错误代码.png)]什么是动态网页? 指的是能够通过不通的操作返回不同的功能及数据,具有交互功能常见的开发模式: B/S架构:浏览器和服务器 C/S架构:客户端和服务器B/S架构的执行原理: 基于请求和响应的内容 客户端====》应用服务器====》数据库服务器 客户端《====应用服务器《==_jsp+servlet笔记
文章浏览阅读199次。类模板的分离编译类模板的分离编译,即模板类的定义和其模板成员函数(接口)的定义不在同一文件中。如模板类的定义在.h头文件中,同时在.h头文件中声明接口,而在模板类之外的.cpp文件中定义接口。此时在main函数中,如果只引用.h头文件,编译会报错。原因:大多数编译器,不支持类模板的分离编译!(1)实现分离编译其实也可以实现分离编译。解决办法:在main函数中引用定义接口的.cpp文件,这时..._seqlist后为什么加
文章浏览阅读3.1k次。为什么80%的码农都做不了架构师?>>> ..._javafx打印界面