SkyWalking 分布式系统追踪

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
日志服务 SLS,月写入数据量 50GB 1个月
应用实时监控服务-应用监控,每月50GB免费额度
简介: 分布式日志追踪traceId

SkyWalking 分布式系统追踪

官网: https://skywalking.apache.org/

简书:https://www.jianshu.com/p/2fd56627a3cf

文档:https://skywalking.apache.org/docs/

SkyWalking ,它是一款优秀的国产 APM(Application Performance Management) 工具

SkyWalking 8.x

frame-v8.jpg

tar包下载: https://skywalking.apache.org/downloads/ SkyWalking APM Distribution
选择版本 v8.5.0 for H2/MySQL/TiDB/InfluxDB/ElasticSearch 7

启动服务:
OAPServerStartUp配置文件 config/application.yml 默认存储h2,修改存储为elasticsearch7,以及ES7服务地址。
skywalking-webapp 配置文件 webapp/webapp.yml 默认端口localhost:8080

selector: ${SW_STORAGE:elasticsearch7}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}

安装bin目录下

./startup.sh

访问UI localhost:8080

image.png

启动采集端
java -jar方式通过修改启动脚本启动,示例

java agent技术原理及简单实现

nohup java -javaagent:/data/skywalking/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar -
Dskywalking.agent.service_name=${SERVER_NAME} -Dskywalking.collector.backend_service=127.0.0.1:11800 -
jar -Xms1024m -Xmx1024m -Djava.security.egd=file:/dev/./urandom $JAR_FILE --spring.application.
name=${SERVER_NAME} --spring.profiles.active=${ACTIVE} --server.port=${PORT}> /data/logs/${SERVER_NAME}
/console.log 2>&1&

idea中启动,修改 VM options,示例如下

-DSW_AGENT_NAME=skywalking-consumer ##
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 ##
-javaagent:~\skywalking\apache-skywalking-apm-bin-es7\agent\skywalking-agent.
jar ##agent

日志中打印traceId 增加[%traceId]

<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-logback-1.x</artifactId>
    <version>8.5.0</version>
</dependency>

修改logback.xml中的Appender的Pattern

<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
    <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level logger_name:%logger{36} - [%tid] - message:%msg%n</pattern>
    </layout>
</encoder>

输出日志

image1.png

项目中加入feign的调用后查看,调用的关系,每个环节的耗时
image2.png

image3.png

kibana查看ES,有很多数据记录在ES中
image4.png

至此即完成链路追踪,性能检测,日志查询。

号外:
docker 安装

docker pull apache/skywalking-oap-server:8.5.0-es7 
docker run --name skywalking --net esnet -d -e SW_STORAGE=elasticsearch7 \ 
-e SW_STORAGE_ES_CLUSTER_NODES=localhost:9200 apache/skywalking-oap-server:8.5.0-es7 

总结:

skywalking 通过agent的方式可以低侵入的方式实现链路追踪,链路追踪是微服务治理的重要一环,进行日志查询,系统监控,性能分析的重要工具。

相关实践学习
通过云拨测对指定服务器进行Ping/DNS监测
本实验将通过云拨测对指定服务器进行Ping/DNS监测,评估网站服务质量和用户体验。
相关文章
|
7月前
|
存储 数据采集 监控
SkyWalking全景解析:从原理到实现的分布式追踪之旅
SkyWalking全景解析:从原理到实现的分布式追踪之旅
1243 1
EMQ
|
7月前
|
存储 NoSQL API
EMQX Enterprise 5.4 发布:OpenTelemetry 分布式追踪、OCPP 网关、Confluent 集成支持
新版本提供 OpenTelemetry 分布式追踪与日志集成功能,新增了开放充电协议 OCPP 协议接入能力,并为数据集成添加了 Confluent 支持。此外,新版本还进行了多项改进以及 BUG 修复,进一步提升了整体性能和稳定性。
EMQ
1195 13
EMQX Enterprise 5.4 发布:OpenTelemetry 分布式追踪、OCPP 网关、Confluent 集成支持
|
7月前
|
Prometheus 监控 Cloud Native
Golang深入浅出之-Go语言中的分布式追踪与监控系统集成
【5月更文挑战第4天】本文探讨了Go语言中分布式追踪与监控的重要性,包括追踪的三个核心组件和监控系统集成。常见问题有追踪数据丢失、性能开销和监控指标不当。解决策略涉及使用OpenTracing或OpenTelemetry协议、采样策略以及聚焦关键指标。文中提供了OpenTelemetry和Prometheus的Go代码示例,强调全面可观测性对微服务架构的意义,并提示选择合适工具和策略以确保系统稳定高效。
224 5
|
7月前
|
数据采集 存储 运维
如何使用SkyWalking收集分析分布式系统的追踪数据
通过以上步骤,你可以使用 SkyWalking 工具实现对分布式系统的数据采集和可视化。SkyWalking 提供了强大的追踪和度量功能,帮助开发者和运维人员更好地理解系统的性能状况。欢迎关注威哥爱编程,一起学习成长。
160 0
|
前端开发 Cloud Native JavaScript
《深入分布式追踪:OpenTracing 实践手册》
《深入分布式追踪:OpenTracing 实践手册》
211 0
|
存储 监控 Java
Spring Boot 中的分布式追踪
Spring Boot 中的分布式追踪
|
存储 监控 Cloud Native
opentracing(开放分布式追踪) + jaeger初探
以下是小马整理总结的入门理解笔记,助于入门和理解分布式链路追踪,opentracing(开放分布式追踪) + jaeger。
195 0
opentracing(开放分布式追踪) + jaeger初探
|
JSON Java 数据格式
springboot 集成tlog 实现分布式日志标记追踪
springboot 集成tlog 实现分布式日志标记追踪
1263 0
|
存储 机器学习/深度学习 人工智能
一文读懂分布式追踪:过去、现在和未来
Hello folks,我是 Luga,今天我们来聊一下云原生生态体系可观测性核心之——分布式追踪技术。
508 0
|
2月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?