Apache SkyWalking接入SLS Trace实践

本文涉及的产品
对象存储 OSS,20GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
对象存储 OSS,内容安全 1000次 1年
简介: Apache SkyWalking 是一款非常优秀的应用性能监控(APM)工具,对微服务、云原生和容器化应用提供自动化、高性能的监控方案。项目于 2015 年创建,并于 2017 年 12 月进入 Apache 孵化器,目前已经是Apache的顶级项目。SLS Trace已经支持Apache SkyWalking Agent端直接接入SLS Trace服务。运维人员可以直接将已经接入Apache SkyWalking的应用的Agent端直接接入到SLS Trace服务(下文会有详细说明)而不需要考虑规模和部署的问题。

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方案的主要功能特点如下:

  1. 支持多种接入方式,SLS本身支持以OpenTelemetry、Jaeger、Zipkin等协议直接写入,接入包括10+种语言,多种现有平台,支持公网、阿里云内网、全球加速等接入网络。
  2. 内部存储、分析、展示等数据格式均遵循OpenTelemetry Trace 1.0标准规范,符合云原生、微服务背景下的Trace格式需求。
  3. 高性能,支持日PB级数据接入,提供预计算能力,提取指标并进行依赖分析,具备支撑海量场景下Trace数据100%采样的能力。
  4. 弹性:可任意设置日志存储周期,Logstore容量可动态伸缩以满足业务增长需求。
  5. 具备丰富的Trace功能,包括Trace详情展示、服务概览、Trace查询统计、依赖分析等,同时提供自定义分析(SQL分析方式)的功能,满足各类特性化需求。
  6. 下游生态友好,SLS的Trace数据以及计算后的指标数据等都支持对各类接流计算、离线计算引擎,并支持自定义订阅数据进行定制化的处理。
  7. 提供多种内置的AIOps算法,自动分析Trace对于性能、错误率的影响,帮助开发者在复杂环境下快速排查问题的根因

当SkyWalking结合SLS

Apache SkyWalking总体共分为Agent,后端和存储三部分:

  1. Agent和应用绑定在一起,随应用启动而启动,这个不需运维人员过多的关心
  2. 后端和存储则重度依赖运维人员,需要根据业务的规模和数据量决定该部署多大规模的后端和存储集群。特别地,当某个业务因某个活动出现追踪数据流量激增下,后端很大可能会因为当时评估的量不够从而导致因处理能力不够,也可能出现存储能力不够而造成追踪数据丢失的问题。


SLS Trace已经支持Apache SkyWalking Agent端直接接入SLS Trace服务。运维人员可以直接将已经接入Apache SkyWalking的应用的Agent端直接接入到SLS Trace服务(下文会有详细说明)而不需要考虑规模和部署的问题。接入SLS Trace的优势有:

  1. 弹性:弹性是SLS的一大特点,在面对激增流量方面使得SLS Trace具有天然的优势。
  2. 高性能:SLS提供了相比ES更优的查询性能,支持每天PB级的数据接入,十亿、百亿级别的查询在秒级即可返回。
  3. 稳定性:SLS的数据全部使用3副本存储,提供99.9%的可用性以及十一个9的数据可靠性。
  4. 免运维:SLS提供了开箱即用的SkyWalking Trace接入服务,SLS本身是云服务,无需运维服务器和后端应用。


使用SLS Trace服务接入Apache SkyWalking数据

架构解析

1. SLS Trace接入配置

创建Project

  1. 登陆SLS控制台点击创建Project按钮

  1. 根据实际情况填写Project名称和归属地域

创建SLS Trace实例

  1. 登陆SLS控制台,选择“日志应用” 下的“Trace服务”

  1. 点击创建Trace实例

3. 根据实际情况填写Trace实例名称,项目Project选择刚创建的Project

SLS SkyWalking数据接入配置

  1. 登陆SLS控制台,在接入数据中选择SkyWalking接入

  1. 进入配置页后,点击选择上一节创建的Project和Logstore。注意:Logstore的名字为<INSTANCE>_traces。举个例子,创建的Trace实例为qs-trace-test,那么存放trace的logstore名字为qs-trace-test_traces。

  1. 创建机器组
  2. 如果您已有可用的机器组,请单击使用现有机器组
  3. 如果您还没有可用的机器组,请执行以下操作(以ECS为例)。
  4. ECS页签中,选中目标ECS实例,单击立即执行。更多信息,请参见安装Logtail(ECS实例)
  5. 如果是自建集群、其他云厂商服务器,需要手动安装Logtail。更多信息,请参见安装Logtail(Linux系统)安装Logtail(Windows系统)
  6. 添加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

   }

}


  1. 点击下一步,进入点击查询分析配置。这一步不用做任何调整

  1. SkyWalking数据接入配置完成

2. Apache SkyWalking环境配置(以Java为例)

  1. 进入Apache SkyWalking官网,点击Downloads后进入下载页面

  1. 下载最新版本(当前最新版本是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集群而发愁。

参考

  1. https://skywalking.apache.org/
  2. https://www.infoq.cn/article/lclyrgcbxtlam82ue-7w
  3. https://help.aliyun.com/document_detail/208914.html?spm=a2c4g.11174283.6.1023.2a754c07H6Jyyb
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
24天前
|
存储 消息中间件 Java
Apache Flink 实践问题之原生TM UI日志问题如何解决
Apache Flink 实践问题之原生TM UI日志问题如何解决
31 1
|
24天前
|
消息中间件 分布式计算 Hadoop
Apache Flink 实践问题之Flume与Hadoop之间的物理墙问题如何解决
Apache Flink 实践问题之Flume与Hadoop之间的物理墙问题如何解决
34 3
|
24天前
|
消息中间件 运维 Kafka
Apache Flink 实践问题之达到网卡的最大速度如何解决
Apache Flink 实践问题之达到网卡的最大速度如何解决
34 2
|
3月前
|
存储 SQL BI
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
|
30天前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
当今社会,物联网技术的发展带来了许多繁琐的挑战,尤其是在数据库管理系统领域,比如实时整合海量数据、处理流中的事件以及处理数据的安全性。例如,应用于智能城市的基于物联网的交通传感器可以实时生成大量的交通数据。据估计,未来5年,物联网设备的数量将达数万亿。物联网产生大量的数据,包括流数据、时间序列数据、RFID数据、传感数据等。要有效地管理这些数据,就需要使用数据库。数据库在充分处理物联网数据方面扮演着非常重要的角色。因此,适当的数据库与适当的平台同等重要。由于物联网在世界上不同的环境中运行,选择合适的数据库变得非常重要。 原创文字,IoTDB 社区可进行使用与传播 一、什么是IoTDB 我
101 9
Apache IoTDB进行IoT相关开发实践
|
24天前
|
SQL 运维 分布式计算
Apache Flink 实践问题之避免用户作业包中包含Flink的core包如何解决
Apache Flink 实践问题之避免用户作业包中包含Flink的core包如何解决
37 1
Apache Flink 实践问题之避免用户作业包中包含Flink的core包如何解决
|
24天前
|
数据采集 分布式计算 Kubernetes
Apache Flink 实践问题之ZooKeeper 网络瞬断时如何解决
Apache Flink 实践问题之ZooKeeper 网络瞬断时如何解决
37 4
|
2月前
|
SQL 存储 关系型数据库
计算效率提升 30 倍、存储资源节省 90%,雨润集团基于 Apache Doris 的统一实时数据仓库建设实践
数字化转型的浪潮中,高效准确的数据分析能够帮助雨润集团快速洞察市场动态、优化供应链管理、提高生产效率。雨润集团引入了 Apache Doris 构建了统一实时数据仓库,实现了计算效率提升 30 倍、存储资源节省 90%、成本降低超 100 万、人员效率提升 3 倍,为智能化、高效化转型指明了方向。
计算效率提升 30 倍、存储资源节省 90%,雨润集团基于 Apache Doris 的统一实时数据仓库建设实践
|
27天前
|
人工智能
【Azure Application Insights】在Azure Function中启用Application Insights后,如何配置不输出某些日志到AI 的Trace中
【Azure Application Insights】在Azure Function中启用Application Insights后,如何配置不输出某些日志到AI 的Trace中
|
2月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
IoTDB是专为物联网(IoT)设计的开源时间序列数据库,提供数据收集、存储、管理和分析。它支持高效的数据写入、查询,适用于处理大规模物联网数据,包括流数据、时间序列等。IoTDB采用轻量级架构,可与Hadoop和Spark集成,支持多种存储策略,确保数据安全和高可用性。此外,它还具有InfluxDB协议适配器,允许无缝迁移和兼容InfluxDB的API和查询语法,简化物联网项目的数据管理。随着物联网设备数量的快速增长,选择适合的数据库如IoTDB对于数据管理和分析至关重要。
178 12

热门文章

最新文章

相关产品

  • 日志服务
  • 推荐镜像

    更多