skywalking链路监控
大约 5 分钟
架构原理图
- docker
- docker
工程解读
地址:https://gitee.com/keyyds/skywalking
下面提供了docker运行skywalking的全套工程项目,包括配置文件、测试工程、运行脚本。
配
下面提供两种环境的运行方式,本地运行、云服务器运行。
- docker 启动
# https://skywalking.apache.org/downloads/
# /usr/local/bin/docker-compose -f /docs/dev-ops/skywalking/skywalking-docker-compose.yml up -d
version: '3.8'
services:
elasticsearch:
image: elasticsearch:7.16.2
container_name: elasticsearch
ports:
- "9200:9200"
healthcheck:
test: [ "CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
environment:
- discovery.type=single-node
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
# volumes:
# - ./data/es_data:/usr/share/elasticsearch/data
oap:
image: apache/skywalking-oap-server:8.9.0
container_name: oap
depends_on:
elasticsearch:
condition: service_healthy
links:
- elasticsearch
ports:
- "11800:11800"
- "12800:12800"
healthcheck:
test: [ "CMD-SHELL", "/skywalking/bin/swctl ch" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
environment:
SW_STORAGE: elasticsearch
SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200
SW_HEALTH_CHECKER: default
SW_TELEMETRY: prometheus
JAVA_OPTS: "-Xms1024m -Xmx1024m"
skywalking-ui:
image: apache/skywalking-ui:8.9.0
container_name: skywalking-ui
depends_on:
oap:
condition: service_healthy
links:
- oap
ports:
- "9090:8080"
environment:
SW_OAP_ADDRESS: http://oap:12800
本地运行
- 本地安装docker, 我的是win 版的。
- idea安装docker插件。
- idea连接本地docker,如果上面两步做好之后,idea会自动识别到,直接添加即可。
- 运行环境,如果本地运行的话,最好开启科学上网,不然镜像拉不到。
- http://localhost:9090/ 访问测试页面
本地工程启动
- 初始化数据
-javaagent:F:/Idea/ke/skywalking/docs/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=skywalking-app-dev -Dskywalking.collector.backend_service=127.0.0.1:11800
我的位置是
F:/Idea/ke/skywalking/docs/skywalking-agent/skywalking-agent.jar
启动测试
- 启动工程项目
- 请求数据接口,先压几分钟。
- 打开本地skywalking 监控UI http://localhost:9090/ 查看数据
压一会之后有数据了。
云服务运行
环境要求
两种方式部署云环境的skywalking环境,一种是通过idea插件,另一种是将配置文件sftp上传到服务器,手动执行配置文件。
idea插件连接云环境docker
- 开放端口
firewall-cmd --zone=public --add-port=9090/tcp --permanent
firewall-cmd --zone=public --add-port=11800/tcp --permanent
firewall-cmd --zone=public --add-port=9091/tcp --permanent
firewall-cmd --reload
- 访问测试 http://116.198.200.xxx:9090/ 换成自己服务的ip
本地数据上报云skywalking
需要换成部署的服务器ip。然后重启启动,请求测试。
- 压了5分钟 也有数据了,说明上报成功。
手动
- sftp 上传 文件
- 启动 docker-compose -f skywalking-docker-compose.yml up -d
程序在云服务器上运行
打包镜像
# 基础镜像
FROM openjdk:8-jre-slim
# 作者
MAINTAINER huangkeing
# 配置
ENV PARAMS=""
# 时区
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 添加应用
ADD /target/skywalking-app.jar /skywalking-app.jar
## 在镜像运行为容器后执行的命令
ENTRYPOINT ["java", "-Xmx512m", "-javaagent:/dev-ops/skywalking-agent/skywalking-agent.jar", "-Dskywalking.agent.service_name=skywalking-app", "-Dskywalking.collector.backend_service=116.198.200.xxx:11800", "-jar", "/skywalking-app.jar"]
注意:/dev-ops/skywalking-agent/skywalking-agent.jar为云服务器所在路径。
构建镜像推送到云服务器
- 新推送上来一个镜像
- 手动打上标签 huangkeming/skywalking-app:1.0
启动服务
<font style="color:rgb(71, 101, 130);">start.sh</font>
CONTAINER_NAME=skywalking-app
IMAGE_NAME=huangkeming/skywalking-app:1.0
PORT=9091
echo "容器部署开始 ${CONTAINER_NAME}"
# 停止容器
docker stop ${CONTAINER_NAME}
# 删除容器
docker rm ${CONTAINER_NAME}
# 启动容器 skywalking-agent 下载:https://archive.apache.org/dist/skywalking/java-agent/8.9.0/apache-skywalking-java-agent-8.9.0.tgz
docker run --name ${CONTAINER_NAME} \
-p ${PORT}:${PORT} \
-v /dev-ops/skywalking-agent/:/dev-ops/skywalking-agent/ \
-d ${IMAGE_NAME}
#docker run --name skywalking-app \
#-p 9091:9091 \
#-v /dev-ops/skywalking-agent/:/dev-ops/skywalking-agent/ \
#-d huangkeming/skywalking-app:1.2
echo "容器部署成功 ${CONTAINER_NAME}"
docker logs -f ${CONTAINER_NAME}
- ``
执行成功
idea2024.4版本无法
问题如下
解决办法
找到如下界面
下载 https://download.docker.com/win/static/stable/x86_64/
解压后配置上去