SkyWalking:开源分布式链路运维入门
介绍
官方地址:https://github.com/apache/skywalking
官方博客地址:
https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-docker/#start-the-storage-oap-and-booster-ui-with-docker-compose
阿里云培训视频地址:
https://edu.aliyun.com/course/315095/lesson/341651455
概述
Apache SkyWalking是一个开源的分布式追踪与性能监视平台,特别适用于微服务架构、云原生环境以及基于容器(如Docker、Kubernetes)的应用部署。该项目由吴晟发起,并已加入Apache软件基金会的孵化器,现已成为顶级项目之一。
核心特性与功能包括:
分布式追踪:提供从终端用户请求到后端服务的完整调用链路视图,帮助开发者快速定位分布式系统中的性能瓶颈和错误根源。
性能监控:收集并分析服务及服务间调用的性能指标,如响应时间、吞吐量、错误率等,支持服务级和接口级的监控。
服务网格观测:除了自动探针外,SkyWalking还能与Istio、Envoy等服务网格集成,通过服务网格的基础探针来收集数据,进一步增强观测能力。
多语言支持:SkyWalking原生支持Java、.NET Core等多种语言,并且持续扩展中,同时也提供手动打点SDK以支持更多语言环境,如Go、C++等。
自动探针:通过探针(Agents)在无需修改应用程序代码的情况下,利用字节码植入技术收集运行时数据,实现对应用程序性能的透明监控。
丰富的插件生态:为常见的基础设施和框架(如Tomcat、Spring、MySQL、Dubbo、Kafka等)提供了丰富的监测插件,易于集成到现有系统中。
告警与通知:根据预定义的规则,当检测到性能异常或故障时,能够及时发出告警并通过邮件、短信、Slack等渠道通知相关人员。
可视化界面:提供直观的Web UI,展示服务拓扑图、追踪详情、性能指标图表等,便于运维人员和开发团队理解和优化系统性能。
可扩展的存储:支持将数据存储在Elasticsearch、H2、MySQL等不同后端,以适应不同规模和需求的场景。
最新版本的SkyWalking(根据之前的更新信息,但请注意实际版本可能已更新)强调了gRPC上报日志的能力,意味着它能够高效地处理现代微服务架构中的大量监控数据传输需求。随着项目的不断发展,其功能集和性能也在不断进化,以更好地服务于日益复杂的云原生应用环境。
SkyWalking 在逻辑上分为四个部分:探针,平台后端,存储 和 UI。
探测器收集遥测数据,包括各种格式的指标、跟踪、日志和事件(SkyWalking、Zipkin、OpenTelemetry、Prometheus、Zabbix 等)。
平台后端支持数据聚合、分析和流处理,涵盖跟踪、指标、日志和事件。作为聚合器角色、接收器角色或两者。
存储通过开放/可插入的接口存储 SkyWalking 数据。您可以选择现有的实现,例如 ElasticSearch,H2,MySQL,TiDB,BanyanDB,或实现您自己的实现。
UI 是一个高度可定制的基于 Web 的界面,允许 SkyWalking 终端用户可视化和管理 SkyWalking 数据。

部署步骤
Linux, macOS, Windows (WSL)
# 一键docker启动,过程中可以选择安装es 或者BanyanDB (网络问题有可能下载失败,可以多试几次)
bash <(curl -sSL https://skywalking.apache.org/quickstart-docker.sh)
# 一键卸载
docker compose --project-name=skywalking-quickstart down
安装过程中可以选择使用哪种存储,我这里使用的是es
[root@C202509090033630 sky]# bash <(curl -sSL https://skywalking.apache.org/quickstart-docker.sh)
Checking if Docker is installed...
Please select a storage option:
1. Elasticsearch
2. BanyanDB (0.9.0)
Enter the number of your choice: 1
Installing SkyWalking 10.3.0 with elasticsearch storage...
WARN[0000] /tmp/tmp.zxHe6W5H8m/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
[+] up 19/20
✔ Image apache/skywalking-oap-server:10.3.0 Pulled 1.6sss
✔ Image apache/skywalking-ui:10.3.0 Pulled 222.8s
✔ Image docker.elastic.co/elasticsearch/elasticsearch-oss:7.4.2 Pulled 260.6s
✔ Network skywalking-quickstart_demo Created 0.0s
✔ Container ui Healthy 48.9s
✔ Container elasticsearch Healthy 48.9s
⠧ Container oap Healthy
如果出现es报错,可以通过下面的命令重启opa
# 以 BanyanDB 作为存储启动一个独立容器,其地址为 banyandb:17912
export RELEASE_VERSION=x.y.z
docker run --name oap --restart always -d -e SW_STORAGE=banyandb -e SW_STORAGE_BANYANDB_TARGETS=banyandb:17912 apache/skywalking-oap-server:${RELEASE_VERSION}
# 以 ElasticSearch 7 作为存储启动一个独立容器,其地址为 elasticsearch:9200
export RELEASE_VERSION=x.y.z
docker run --name oap --restart always -d -e SW_STORAGE=elasticsearch -e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 apache/skywalking-oap-server:${RELEASE_VERSION}
docker run --name oap --restart always -d \
-e SW_STORAGE=elasticsearch \
-e SW_STORAGE_ES_CLUSTER_NODES=192.168.0.1:9200 \
-p 12800:12800 -p 11800:11800 -p 11900:11900 \
apache/skywalking-oap-server:latest

java-agent
下载地址:
https://skywalking.apache.org/downloads/

解压后,里面有个agent.jar
skywalking-agent/
├── skywalking-agent.jar # 核心Agent包(必须)
├── config/
│ └── agent.config # 核心配置文件(可自定义)
├── plugins/ # 各类插件(如Spring Boot、Dubbo等,默认已包含)
└── bootstrap-plugins/ # 启动类加载插件
拷贝agent目录到所需位置。 日志,插件和配置都包含在包中,请不要改变目录结构。 建议将该agent目录与客户端应用放在同一台服务器,
多台服务器需要监控则都部署agent目录,每台服务器上的应用配置本机的agent参数。
Springboot项目 使用agent探针
-Dskywalking.agent.service_name=my-springboot-app # 覆盖应用名
-Dskywalking.collector.backend_service=192.168.1.100:11800 # 覆盖OAP地址 agent必须完整的一个包解压后保留,使用绝对路径
我这里借用开源项目Ruoyi
java -javaagent:/data/codes/apache-skywalking-java-agent-9.6.0/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=Ruoyi -Dskywalking.collector.backend_service=192.168.0.1:11800 -jar app.jar
在浏览器访问一下我们的项目,此时仪表盘出现了我们的项目:



更多推荐




所有评论(0)