SkyWalking 是什么?
SkyWalking是一款分布式系统的应用程序性能监控工具,专为 微服务 、 云原生 和基于 容器 的 (Kubernetes) 架构而设计。
既然这么强大,那么SkyWalking 有哪些功能呢?
SkyWalking 整体架构如何?
SkyWalking 在逻辑上分为四个部分:Probes、Platform backend、Storage 和 UI。
- mkdir skywalking
- cd skywalking
- mkdir elasticsearch && cd elasticsearch
- mkdir config && cd config
- touch elasticsearch.yml
- cluster.name: "docker-cluster"
- network.host: 0.0.0.0
- # In tracing scenario, consider to set more than this at least.
- # thread_pool.index.queue_size: 1000 # Only suitable for ElasticSearch 6
- thread_pool.write.queue_size: 1000 # Suitable for ElasticSearch 6 and 7
然后保存
3. 新建docker-compose.yaml
- version: '3.3'
- services:
- elasticsearch:
- image: elasticsearch:7.17.5
- container_name: elasticsearch
- environment:
- - "cluster.name=elasticsearch"
- - "discovery.type=single-node"
- - "ES_JAVA_OPTS=-Xms1g -Xmx2g"
- volumes:
- - ./elasticsearch/plugins:/usr/share/elasticsearch/plugins
- - ./elasticsearch/data:/usr/share/elasticsearch/data
- - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- ports:
- - 9200:9200
- restart: always
- oap:
- image: apache/skywalking-oap-server:9.1.0
- container_name: oap
- depends_on:
- - elasticsearch
- links:
- - elasticsearch:elasticsearch
- restart: always
- ports:
- - 11800:11800
- - 12800:12800
- volumes:
- - ./config:/skywalking/config
- environment:
- SW_STORAGE: elasticsearch
- SW_NAMESPACE: sk-es
- SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
- SW_STORAGE_ES_ADVANCED: "{\"index.translog.durability\":\"request\",\"index.translog.sync_interval\":\"5s\"}"
- SW_STORAGE_ES_INDEX_SHARDS_NUMBER: 2
- SW_STORAGE_ES_BULK_ACTIONS: 2000
- SW_STORAGE_ES_BULK_SIZE: 20
- SW_STORAGE_ES_FLUSH_INTERVAL: 10
- SW_STORAGE_ES_CONCURRENT_REQUESTS: 2
- SW_STORAGE_DAY_STEP: 15
- SW_CORE_RECORD_DATA_TTL: 15
- SW_CORE_METRICS_DATA_TTL: 20
- skywalking-ui:
- image: apache/skywalking-ui:9.1.0
- container_name: skywalking-ui
- depends_on:
- - oap
- links:
- - oap
- restart: always
- ports:
- - 9090:8080
- environment:
- SW_OAP_ADDRESS: http://oap:12800
- SW_TIMEOUT: 5000
编辑完保存
在skywalking目录下运行容器
docker-compose up -d
出现以下代表安装成功
浏览器输入http://127.0.0.1:9090/,出现以下界面
进入skywalking 下载页面 ,下载Java Agent最新包
解压缩skywalking-agent.jar
idea 启动
jvm 参数
SW_AGENT_NAME=sparkzxl-auth-server;SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800;SW_AGENT_SPAN_LIMIT=3000
SW_AGENT_NAME=sparkzxl-auth-server;SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800;SW_AGENT_SPAN_LIMIT=3000
SkyWalking Agent 配置
SW_AGENT_NAME=sparkzxl-auth-server;SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800;SW_AGENT_SPAN_LIMIT=3000
参数 | 说明 | 示例值 |
---|---|---|
SW_AGENT_NAME | 配置 Agent 名字。一般来说,我们直接使用 Spring Boot 项目的 spring.application.name | sparkzxl-auth-server |
SW_AGENT_COLLECTOR_BACKEND_SERVICES | 配置 Collector 地址(OAP连接地址) | 127.0.0.1:11800 |
SW_AGENT_SPAN_LIMIT | 配置链路的最大 Span 数量。一般情况下,不需要配置,默认为 300 。主要考虑,有些新上 SkyWalking Agent 的项目,代码可能比较糟糕 | 2000 |
启动 Spring Boot 项目
idea 启动项目,在启动日志中,我们可以看到 SkyWalking Agent 被加载的日志。日志示例如下:
- EBUG 2022-07-27 17:22:43.915 main AgentPackagePath : The beacon class location is jar:file:/Users/zhouxinlei/skywalking/agent/skywalking-agent.jar!/org/apache/skywalking/apm/agent/core/boot/AgentPackagePath.class.
- INFO 2022-07-27 17:22:43.916 main SnifferConfigInitializer : Config file found in /Users/zhouxinlei/skywalking/agent/config/agent.config.
同时,也可以在 /Users/zhangsan/skywalking-agent/logs/skywalking-api.log 查看对应的 SkyWalking Agent 日志。
启动完成后,可以去 SkyWalking UI 查看是否链路收集成功。
① 打开 http://127.0.0.1:9090/ 地址,进入 SkyWalking UI 界面。
② 点击service names
可以看到很多指标
③ 点击Trace,追踪接口请求
④其他tab
下一节讲解skywalking 日志追踪分析,先上个效果图: