安装docker-compose
我使用的的系统是centos7的系统,已安装过的可以忽略这一步。
方式1:
github.下载:
curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
添加权限:
chmod +x /usr/local/bin/docker-compose
查看是否安装成功:
方式2:
PIP安装:
安装pip:
yum install -y python3 python3-devel
创建软链接:
ln -sf /usr/bin/python3 /usr/bin/python
执行以下命令升级pip:
pip3 install --upgrade pip
执行以下命令查看pip版本:
执行以下命令安装Docker Compose:
pip install docker-compose
编辑配置文件
创建文件夹/home/skywalking
将下面的 docker-compose.yml 文件保存到这个目录
version: '3.8'
services:
elasticsearch:
image: nanlist/elasticsearch7.14.1:v1.0
container_name: elasticsearch
restart: always
ports:
- 9222: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: nanlist/skywalking-oap-server8.7.0-es7:v1.0
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: nanlist/skywalking-ui8.7.0:v1.0
container_name: ui
depends_on:
- oap
links:
- oap
restart: always
ports:
- 8088:8080
environment:
TZ: Asia/Shanghai
SW_OAP_ADDRESS: http://oap:12800
拉取镜像并启动
cd 到docker-compose的yml文件目录下面,执行命令,这一步有点漫长,耐心等待。
查看日志
docker compose常用命令
docker-compose up -d # 在后台启动服务
docker-compose ps # 查看启动的服务
docker-compose stop #停止服务
启动成功以后查看一下docker容器:
可以看到启动了三个容器:skywalking-ui,
elasticsearch:( Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。而我们目前采用的是 ES ,主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主。),
skywalking-oap-server:记住他的端口号11800 后面使用探针的时候要用到:
启动之后浏览器访问 服务ip:8080 即可
http://10.10.11.79:8088第一次启动页面加载较慢,等待1-3分钟,出现如下界面,说明成功。右上角自动刷新最好开启一下。
下载 agent 代理包
服务端安装好了以后,还需要客户端(就是你的项目jar包)结合探针skywalking-agent才能在仪表盘展示数据。
下载:
还是之前的目录下面:
wget https://archive.apache.org/dist/skywalking/8.7.0/apache-skywalking-apm-8.7.0.tar.gz
或者提前下载好,传到服务器上面。
解压:
tar -zxvf apache-skywalking-apm-8.7.0.tar.gz
进入探针jar包的目录:
cd ./apache-skywalking-apm-bin/agent/
这个目录记一下,后面需要使用。
Java探针agent 使用:
使用agent 结合Java jar 启动方式主要有三种 idea使用, jar包使用, docker使用
我采用jar包方式使用探针,另外两种可以自行百度。
springcloud/springboot 一般是通过 java -jar xxx.jar 进行启动。我们只需要在其中加上 -javaagent 参数即可。
-javaagent:你的探针绝对路径\skywalking-agent.jar -Dskywalking.agent.service_name=服务名称(仪表板需要显示) -Dskywalking.collector.backend_service=ip:11800
说明:
ip:skywalking安装的那台服务器的ip;
端口号: 这个端口号是skywalking-oap-server的端口号,启动skywalking的时候运行了三个容器,有一个是skywalking-oap-server的容器默认的端口号是11800
启动两个服务试试:
java -javaagent:/home/skywalking/apache-skywalking-apm-bin/agent/skywalking-agent.jar=agent.service_name=lgs-lab,collector.backend_service=10.10.11.79:11800 -jar lgs-lab.jar
java -javaagent:/home/skywalking/apache-skywalking-apm-bin/agent/skywalking-agent.jar=agent.service_name=lgs-modules-system,collector.backend_service=10.10.11.79:11800 -jar lgs-modules-system.jar
你自己的服务jar包一定要放到最后;
性能监控:
控制台中实时看到包括jvm在内的性能信息。
链路追踪:
执行命令启动后,控制台 中看到访问的链接和调用链路。
控制台更多使用说明:
分布式链路追踪系统SkyWalking的可视化管理后台使用
日志收集
skywalking收集logback日志,我项目中用的日志框架是logback,仅供参考:
pom文件中引用jar包注意版本要跟skywalking一致
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>8.7.0</version>
</dependency>
Logback配置
<appender name="msystem-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
<!-- 日志输出编码 -->
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
</encoder></appender>
<root level="info">
<appender-ref ref="msystem-log"/></root>
agent.confg:
agent和oap在不同服务器上时,需配置agent/config/agent.config配置文件,在文件末尾添加如下配置信息,注意skywalking的log通信用的grpc
plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:10.10.10.1}
plugin.toolkit.log.grpc.reporter.server_port=${SW_GRPC_LOG_SERVER_PORT:11800}
plugin.toolkit.log.grpc.reporter.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760}
plugin.toolkit.log.grpc.reporter.upstream_timeout=${SW_GRPC_LOG_GRPC_UPSTREAM_TIMEOUT:30}
我的agent和oap容器在同一台服务器上所以这一步可以跳过。
服务运行后即可看到日志:
这样就可以了。