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)
- 架构图
- 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
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
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控制台是否有数据显示
6、注意问题
- 如果发现请求项目接口skywalking中无数据
- 检查SW_AGENT_COLLECTOR_BACKEND_SERVICES地址是否正确
- 检查skywalking控制台中时区和系统中时区
- telnet测试下skywalking-oap-server是否通