Apache SkyWalking
Apache SkyWalking 是一款非常优秀的应用性能监控(APM)工具,对微服务、云原生和容器化应用提供自动化、高性能的监控方案。项目于 2015 年创建,并于 2017 年 12 月进入 Apache 孵化器,目前已经是Apache的顶级项目。
Apache SkyWalking 提供了分布式追踪,服务网格(Service Mesh)遥感数据分析,指标聚合和可视化等多种能力。项目覆盖范围,从一个单纯的分布式追踪系统,扩展为一个可观测性分析平台(observability analysis platform)和应用性能监控管理系统。它包括以下主要功能:
- 基于分布式追踪的 APM 系统。满足 100%分布式追踪和数据采集,同时对被监控系统造成极小的压力
- 云原生友好。支持通过以 Istio 和 Envoy 为核心的 Service Mesh 来观测和监控分布式系统
- 多语言自动探针,包括 Java,.NET,NodeJS,Python
- 包含展示 Trace,指标和拓扑图在内的可视化界面
SLS Trace
SLS Trace方案完全兼容可观察性数据标准:OpenTelemetry,为客户提供Trace数据的存储、分析、展示等功能,此外SLS Trace也支持其他Trace方案(例如Jaeger、Zipkin、SkyWalking等)数据的接入。SLS Trace方案的主要功能特点如下:
- 支持多种接入方式,SLS本身支持以OpenTelemetry、Jaeger、Zipkin等协议直接写入,接入包括10+种语言,多种现有平台,支持公网、阿里云内网、全球加速等接入网络。
- 内部存储、分析、展示等数据格式均遵循OpenTelemetry Trace 1.0标准规范,符合云原生、微服务背景下的Trace格式需求。
- 高性能,支持日PB级数据接入,提供预计算能力,提取指标并进行依赖分析,具备支撑海量场景下Trace数据100%采样的能力。
- 弹性:可任意设置日志存储周期,Logstore容量可动态伸缩以满足业务增长需求。
- 具备丰富的Trace功能,包括Trace详情展示、服务概览、Trace查询统计、依赖分析等,同时提供自定义分析(SQL分析方式)的功能,满足各类特性化需求。
- 下游生态友好,SLS的Trace数据以及计算后的指标数据等都支持对各类接流计算、离线计算引擎,并支持自定义订阅数据进行定制化的处理。
- 提供多种内置的AIOps算法,自动分析Trace对于性能、错误率的影响,帮助开发者在复杂环境下快速排查问题的根因
当SkyWalking结合SLS
Apache SkyWalking总体共分为Agent,后端和存储三部分:
- Agent和应用绑定在一起,随应用启动而启动,这个不需运维人员过多的关心
- 后端和存储则重度依赖运维人员,需要根据业务的规模和数据量决定该部署多大规模的后端和存储集群。特别地,当某个业务因某个活动出现追踪数据流量激增下,后端很大可能会因为当时评估的量不够从而导致因处理能力不够,也可能出现存储能力不够而造成追踪数据丢失的问题。
SLS Trace已经支持Apache SkyWalking Agent端直接接入SLS Trace服务。运维人员可以直接将已经接入Apache SkyWalking的应用的Agent端直接接入到SLS Trace服务(下文会有详细说明)而不需要考虑规模和部署的问题。接入SLS Trace的优势有:
- 弹性:弹性是SLS的一大特点,在面对激增流量方面使得SLS Trace具有天然的优势。
- 高性能:SLS提供了相比ES更优的查询性能,支持每天PB级的数据接入,十亿、百亿级别的查询在秒级即可返回。
- 稳定性:SLS的数据全部使用3副本存储,提供99.9%的可用性以及十一个9的数据可靠性。
- 免运维:SLS提供了开箱即用的SkyWalking Trace接入服务,SLS本身是云服务,无需运维服务器和后端应用。
使用SLS Trace服务接入Apache SkyWalking数据
架构解析
1. SLS Trace接入配置
创建Project
- 登陆SLS控制台,点击创建Project按钮
- 根据实际情况填写Project名称和归属地域
创建SLS Trace实例
- 登陆SLS控制台,选择“日志应用” 下的“Trace服务”
- 点击创建Trace实例
3. 根据实际情况填写Trace实例名称,项目Project选择刚创建的Project
SLS SkyWalking数据接入配置
- 登陆SLS控制台,在接入数据中选择SkyWalking接入
- 进入配置页后,点击选择上一节创建的Project和Logstore。注意:Logstore的名字为<INSTANCE>_traces。举个例子,创建的Trace实例为qs-trace-test,那么存放trace的logstore名字为qs-trace-test_traces。
- 创建机器组
- 如果您已有可用的机器组,请单击使用现有机器组。
- 如果您还没有可用的机器组,请执行以下操作(以ECS为例)。
- 在ECS页签中,选中目标ECS实例,单击立即执行。更多信息,请参见安装Logtail(ECS实例)。
- 如果是自建集群、其他云厂商服务器,需要手动安装Logtail。更多信息,请参见安装Logtail(Linux系统)或安装Logtail(Windows系统)。
- 添加Logtail配置, 将以下配置内容到配置中,
{
"inputs" : [
{
"detail" : {
// 注意:若您的Logtail本地11800端口被占用,可替换为其他可用端口,同时需修改SkyWalking上报的端口号。
"Address" : "0.0.0.0:11800"
},
"type" : "service_skywalking_agent_v3"
}
],
"aggregators" : [
{
"detail" : {
"MetricsLogstore" : "qs-trace-test-metrics",
"TraceLogstore" : "qs-trace-test-traces"
},
"type" : "aggregator_skywalking"
}
],
"global" : {
"AlwaysOnline" : true,
"DelayStopSec" : 300
}
}
- 点击下一步,进入点击查询分析配置。这一步不用做任何调整
- SkyWalking数据接入配置完成
2. Apache SkyWalking环境配置(以Java为例)
- 进入Apache SkyWalking官网,点击Downloads后进入下载页面
- 下载最新版本(当前最新版本是8.6.0, 目前SLS Trace只支持8.0.0及以上的版本)
3. 启动应用
将ApacheSkyWalking Agent参数添加到启动命令,并启动应用,以下以Java应用为例。demo代码见Github.
java -javaagent:/PATH/TO/AGENT/skywalking-agent.jar -Dskywalking.agent.service_name=XXX -Dskywalking.agent.service_name=XXX -jar xxx.jar
4. 查看相关trace数据
Trace接入概览
概览页面可以查看单个服务的概览信息,其中包括Trace发生的条数,服务数,平均延迟,Pxx等相关指标
服务列表
服务列表可以查看服务列表及单个服务下调用的相关指标信息
拓扑调用图
拓扑调用图可以展示所有接入SLS Trace服务中的服务的调用关系及调用相关指标
Trace相关数据
单条Trace详情
总结
从总体来看,SLS Trace服务接入SkyWalking Trace方面比较简单,对于现有接入SkyWalking的应用和服务来说,无需做任何修改就能让现有的已接入SkyWalking的应用直接接入到SLS中,对于新接入SkyWalking,运维人员不用再为评估和部署SkyWalking后端集群和ES集群而发愁。