Skywalking分布式链路跟踪(一)原理、docker搭建oap-ES7.x存储、配置java测试项目

1、什么是Skywalking

Skywalking是一个可观察性分析平台和应用性能管理系统,分布式系统的应用性能监视工具,专门为微服务,云原生和基于容器(Docker,Kubernetes,Mesos)的体系结构而设计。

跟踪,指标和日志记录多合一解决方案。

支持Java、.NET Core、PHP、NodeJS、Golang、Lua、C++代理

支持Istio + Envoy Service Mesh

轻量级: 没有大数据栈、采用不同的规模

模块化:存储可插拔、群集协调器可插拔、支持pull/push

由国内开源爱好者吴晟(原OneAPM工程师,目前在华为)开源并提交到Apache孵化器的产品,它同时吸收了Zipkin/Pinpoint/CAT的设计思路,支持非侵入式埋点。

2、Skywalking功能优点

  • 服务、服务实例、端点度量分析

  • 根本原因分析。在运行时分析代码

  • 业务拓扑图分析

  • 服务、服务实例和端点依赖关系分析

  • 检测到缓慢的服务和端点

  • 性能优化

  • 分布式跟踪和上下文传播

  • 数据库访问指标。检测慢速数据库访问语句(包括SQL语句)

  • 报警:报警HTTP/gRPC转发器、Slack 通知、丁丁通知、微信通知、原始度量数据导出器

  • 浏览器性能监控

  • 基础设施(虚拟机,网络,磁盘等)监控

  • 跨度量、跟踪和日志的协作

3、技术架构

  • 流程图(我感觉官网的流程图好像 Recelver 单词错了receiver)
    Skywalking分布式链路跟踪(一)原理、docker搭建oap-ES7.x存储、配置java测试项目
  • 架构图
    Skywalking分布式链路跟踪(一)原理、docker搭建oap-ES7.x存储、配置java测试项目
  • Agent(代理) :负责从应用中,无侵入式的收集,并通过HTTP或者gRPC方式发送数据到SkyWalking OAP 服务器;
  • SkyWalking OAP :负责接收Agent发送的Tracing数据信息,然后进行分析(Analysis Core),存储到外部存储器(Storage),最终提供查询(Query)功能;
  • Storage:Tracing数据存储,目前支持ES、MySQL、Sharding Sphere、TiDB、H2等多种存储器,SkyWalking开发团队自己的生产环境采用ES为主;
  • SkyWalking UI:负责提供控台,查看链路等等;

官网地址

配置信息可以查看官方代码

4、docker部署skywalking数据存储es

skywalking-oap-server镜像地址根据es自行选择:

  • docker pull apache/skywalking-oap-server:8.4.0-es7
  • docker pull apache/skywalking-oap-server:8.4.0-es6

skywalking-ui镜像地址:docker pull apache/skywalking-ui:8.4.0

4.1、执行docker 部署

  • skywalking-oap-server 启动命令 link后更换你的es容器名

    docker run --name oap --restart always -p 1234:1234 -p 11800:11800 -p 12800:12800 -d --link es:es -e SW_STORAGE=elasticsearch7 -e SW_STORAGE_ES_CLUSTER_NODES=es:9200 apache/skywalking-oap-server:8.4.0-es7

  • skywalking-ui 启动命令 link后更换你的skywalking-oap-server容器名

    docker run --name skywalking-ui --restart always -p 9898:8080 --link oap:oap -d -e SW_OAP_ADDRESS=oap:12800 apache/skywalking-ui:8.4.0

Skywalking分布式链路跟踪(一)原理、docker搭建oap-ES7.x存储、配置java测试项目

5、启动java 项目测试

5.1、linux 下载skywalking-agent.jar

下载地址

wget https://mirrors.bfsu.edu.cn/apache/skywalking/8.4.0/apache-skywalking-apm-es7-8.4.0.tar.gz

tar -zxvf apache-skywalking-apm-es7-8.4.0.tar.gz

Skywalking分布式链路跟踪(一)原理、docker搭建oap-ES7.x存储、配置java测试项目

5.2、Skywalking测试项目采集数据

  • java 项目启动
    #!/bin/sh
    # SkyWalking Agent配置
     #Agent名字,一般使用
    export SW_AGENT_NAME=travel-post-it-web-api`spring.application.name` 
    #配置 Collector 地址。
    export SW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.22.133:11800 
    #配置链路的最大Span数量,默认为 300。
    export SW_AGENT_SPAN_LIMIT=2000 
    # agent 包地址
    export JAVA_AGENT=-javaagent:/home/skywalking/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar
    # 启动jar
    java $JAVA_AGENT -jar travel-post-it-web-api-1.0.0.jar 
    
    
  • 请求项目接口,查看Skywalking控制台是否有数据显示
    Skywalking分布式链路跟踪(一)原理、docker搭建oap-ES7.x存储、配置java测试项目

6、注意问题

  • 如果发现请求项目接口skywalking中无数据
    • 检查SW_AGENT_COLLECTOR_BACKEND_SERVICES地址是否正确
    • 检查skywalking控制台中时区和系统中时区
      Skywalking分布式链路跟踪(一)原理、docker搭建oap-ES7.x存储、配置java测试项目
  • telnet测试下skywalking-oap-server是否通
上一篇:python实现skywalking邮件告警webhook接口


下一篇:Skywalking+Nacos实现高可用集群和动态配置