【Docker】之部署skywalking实现全链路监控功能
简介
skywalking是一个开放源码的,用于收集、分析,聚合,可视化来自于不同服务和本地基础服务的数据的可观察的平台,
skywalking提供了一个简单的方法来让你对你的分布式系统甚至是跨云的服务有清晰的了解。
它更像是一个现代的系统性能管理,特别为分布式系统而设计。
功能
skywalking提供了在很多不同的场景下用于观察和监控分布式系统的方式。 首先,像传统的方法,skywalking为java,c#,Node.js等提供了自动探针代理. 同时,它为Go,C++提供了手工探针。
随着本地服务越来越多,需要越来越多的语言,掌控代码的风险也在增加, Skywalking可以使用网状服务探针收集数据,以了解整个分布式系统。 通常,skywalking提供了观察service,service instance,endpoint的能力。
架构图
快速部署
下载镜像
docker pull elasticsearch:7.17.3
docker pull apache/skywalking-oap-server:9.0.0
docker pull apache/skywalking-ui:9.0.0
部署
安装elasticsearch
安装过程,参考: 【Docker】之安装 ElasticSearch
# 修改系统参数
vi /etc/sysctl.conf
# 调整参数
vm.max_map_count=262144
# 刷新参数
sysctl -p
启动elasticsearch
docker run -d --name=es7 \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" elasticsearch:7.17.3
等待30秒左右,查看docker日志,如果有出现
"publish_address {172.17.0.2:9300}, bound_addresses {0.0.0.0:9300}"
说明启动成功了。
创建持久化目录,并重启启动elasticsearch
mkdir -p /data/elasticsearch
docker cp es7:/usr/share/elasticsearch/data /data/elasticsearch/
docker cp es7:/usr/share/elasticsearch/logs /data/elasticsearch/
docker rm -f es7
docker run -d --name=es7 \
--restart=always \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /data/elasticsearch/logs:/usr/share/elasticsearch/logs \
elasticsearch:7.17.3
安装oap
注意:等待elasticsearch完全启动之后,再启动oap
参考:https://skywalking.apache.org/docs/main/latest/en/setup/backend/backend-docker/
docker run \
--name skywalking-oap \
--restart always \
-p 11800:11800 \
-p 12800:12800 -d \
--privileged=true \
-e TZ=Asia/Shanghai \
-e SW_STORAGE=elasticsearch \
-e SW_STORAGE_ES_CLUSTER_NODES=10.211.55.81:9200 \
-v /etc/localtime:/etc/localtime:ro \
apache/skywalking-oap-server:9.0.0
docker run \
--name skywalking-oap \
--restart always \
-p 11800:11800 \
-p 12800:12800 -d \
--privileged=true \
-e TZ=Asia/Shanghai \
-e SW_STORAGE=elasticsearch7 \
-e SW_STORAGE_ES_CLUSTER_NODES=10.211.55.81:9200 \
-v /etc/localtime:/etc/localtime:ro \
apache/skywalking-oap-server:8.6.0-es7
说明:这里指定elasticsearch
来存储数据
安装ui
参考: https://skywalking.apache.org/docs/main/latest/en/setup/backend/ui-setup/
docker run \
--name skywalking-ui \
--restart always \
-p 8086:8080 -d \
--privileged=true \
--link skywalking-oap:skywalking-oap \
-e TZ=Asia/Shanghai \
-e SW_OAP_ADDRESS=http://10.211.55.81:12800 \
-v /etc/localtime:/etc/localtime:ro \
apache/skywalking-ui:9.0.0
docker run \
--name skywalking-ui \
--restart always \
-p 8086:8080 -d \
--privileged=true \
--link skywalking-oap:skywalking-oap \
-e TZ=Asia/Shanghai \
-e SW_OAP_ADDRESS=10.211.55.81:12800 \
-v /etc/localtime:/etc/localtime:ro \
apache/skywalking-ui:8.6.0
docker-compose 的方式
# 创建配置文件保存的目录
mkdir -p /data/docker/admin/skywalking
# 切换到刚创建的目录
cd /data/docker/admin/skywalking
# 将下面的 docker-compose.yml 文件保存到这个目录
vi docker-compose.yml
# 拉去镜像并启动
docker-compose up -d
# 查看日志
docker-compose logs -f
docker-compose.yml
version: '3.8'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.14.1
container_name: elasticsearch
restart: always
ports:
- 9200:9200
healthcheck:
test: ["CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
environment:
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- TZ=Asia/Shanghai
ulimits:
memlock:
soft: -1
hard: -1
oap:
image: apache/skywalking-oap-server:8.7.0-es7
container_name: oap
depends_on:
- elasticsearch
links:
- elasticsearch
restart: always
ports:
- 11800:11800
- 12800:12800
healthcheck:
test: ["CMD-SHELL", "/skywalking/bin/swctl"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
environment:
TZ: Asia/Shanghai
SW_STORAGE: elasticsearch7
SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
ui:
image: apache/skywalking-ui:8.7.0
container_name: ui
depends_on:
- oap
links:
- oap
restart: always
ports:
- 8088:8080
environment:
TZ: Asia/Shanghai
SW_OAP_ADDRESS: http://oap:12800
Spring-boot实例部署
下载agent:https://skywalking.apache.org/downloads/
以agent的方式启动,对代码没有侵入性,直接在启动命令上指定javaagent即可。
启动命令javaagent参数添加:
java -javaagent:/Users/xiaosige/Downloads/skywalking-agent/skywalking-agent.jar
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=10.211.55.81:11800
-DSW_AGENT_NAME=user-ser
-jar user-service-1.0-SNAPSHOT.jar
查看监控情况
启动程序后,登录skywalking查看监控情况:http://10.211.55.81:8086