Skywalking
https://skywalking.apache.org/
Skywalking是专为微服务、云原生和基于容器的(Kubernetes)架构设计的分布式系统性能监控工具。
Skywalking关键特性
● 分布式跟踪
○ 端到端分布式跟踪。服务拓扑分析、以服务为中心的可观察性和API仪表板。
● 针对您的技术栈的代理
○ Java、.Net Core、PHP、NodeJS、Golang、LUA、Rust、C++、客户端JavaScript和Python代理,持续积极开发和维护。
● 早期采用eBPF技术
○ Rover代理作为指标收集器和性能分析工具,采用eBPF技术来诊断CPU和网络性能问题。
● 扩展能力
○ 从一个SkyWalking集群中可以收集和分析1000亿级别的遥测数据。
● 成熟的遥测生态系统支持
○ 支持成熟的遥测生态系统的指标、跟踪和日志,例如Zipkin、OpenTelemetry、Prometheus、Zabbix、Fluentd等。
● 原生APM数据库
○ BanyanDB是一个2022年创建的可观察性数据库,旨在接收、分析和存储遥测/可观察性数据。
● 一致的指标聚合
○ SkyWalking本机的度量格式和广泛使用的度量格式(如OpenCensus、OTLP、Telegraf、Zabbix等)通过相同的脚本管道进行处理。
● 日志管理管道
○ 通过脚本管道支持日志格式化、提取指标和各种采样策略,具有高性能。
● 报警和遥测管道
○ 支持基于服务、基于部署和基于API的报警规则设置。支持将报警和所有遥测数据转发给第三方。
Skywalking应用架构
Docker-Compose快速构建Skywalking最小可用实例
yaml
mkdir -p /etc/sca/skywalking
cd /etc/sca/skywalking
cat > docker-compose.yaml <<-'EOF'
version: '3'
services:
mysql:
container_name: mysql
image: mysql:8
restart: always
environment:
- MYSQL_ROOT_PASSWORD=root
ports:
- "3306:3306"
nacos:
image: nacos/nacos-server:v2.2.1-slim
container_name: nacos
restart: always
environment:
- PREFER_HOST_MODE=hostname
- MODE=standalone
- NACOS_AUTH_IDENTITY_KEY=2222
- NACOS_AUTH_IDENTITY_VALUE=2xxx
- NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
depends_on:
- mysql
ports:
- "7848:7848"
- "8848:8848"
- "9848:9848"
oap:
image: apache/skywalking-oap-server:9.4.0
container_name: oap
restart: always
ports:
- "11800:11800"
- "12800:12800"
oap-ui:
image: apache/skywalking-ui:9.4.0
container_name: oap-ui
restart: always
environment:
SW_OAP_ADDRESS: http://oap:12800
ports:
- "8080:8080"
depends_on:
- oap
EOF
docker-compose up -d
● 11800端口用于skywalking将应用的服务监控信息收集端口
● 12800端口用于skywalking对UI提供查询接口
● 8080端口是Skywalking WebUI接口提供可视化交互
Agent下载地址:https://skywalking.apache.org/downloads/
Java Agent说明文档:https://skywalking.apache.org/docs/skywalking-java/v8.15.0/readme/
安装Skywalking Java Agent
下载后apache-skywalking-java-agent-8.15.0.tgz后解压缩到D:\java-agent
打开D:\java-agent\config\agent.config
将104行127.0.0.1:11800改成 宿主机IP:11800
yaml
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.31.230:11800}
yaml
java jar \
-javaagent:D:\java-agent\skywalking-agent.jar \
-Dskywalking.agent.service_name=c-service \
-Dskywalking.logging.file_name=c-service-api.log \
xxx.jar
通过WebUI获取监控数据