docker-compose安装skywalking进行日志收集,性能监控和链路追踪!

时间:2022-12-08 15:57:09


安装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

查看是否安装成功:

docker-compose --version

方式2:

PIP安装:
安装pip:

yum install -y python3 python3-devel

创建软链接:

ln -sf /usr/bin/python3 /usr/bin/python

执行以下命令升级pip:

pip3 install --upgrade pip

执行以下命令查看pip版本:

pip  --version

执行以下命令安装Docker Compose:

pip install docker-compose

编辑配置文件

创建文件夹/home/skywalking

将下面的 docker-compose.yml 文件保存到这个目录

touch docker-compose.yml
vi 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 up -d

查看日志

docker-compose logs -f
docker compose常用命令

docker-compose up -d # 在后台启动服务

docker-compose ps # 查看启动的服务

docker-compose stop #停止服务

启动成功以后查看一下docker容器:

docker ps

可以看到启动了三个容器:skywalking-ui,

elasticsearch:( Storage :Tracing 数据存储。目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器。而我们目前采用的是 ES ,主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主。),

skywalking-oap-server:记住他的端口号11800 后面使用探针的时候要用到:

docker-compose安装skywalking进行日志收集,性能监控和链路追踪!


启动之后浏览器访问 服务ip:8080 即可

​ http://10.10.11.79:8088​​第一次启动页面加载较慢,等待1-3分钟,出现如下界面,说明成功。右上角自动刷新最好开启一下。

docker-compose安装skywalking进行日志收集,性能监控和链路追踪!

下载 agent 代理包

服务端安装好了以后,还需要客户端(就是你的项目jar包)结合探针skywalking-agent才能在仪表盘展示数据。

下载:

还是之前的目录下面:

wget https://archive.apache.org/dist/skywalking/8.7.0/apache-skywalking-apm-8.7.0.tar.gz

docker-compose安装skywalking进行日志收集,性能监控和链路追踪!


或者提前下载好,传到服务器上面。

docker-compose安装skywalking进行日志收集,性能监控和链路追踪!

解压:

tar -zxvf apache-skywalking-apm-8.7.0.tar.gz

进入探针jar包的目录:

cd ./apache-skywalking-apm-bin/agent/

docker-compose安装skywalking进行日志收集,性能监控和链路追踪!


这个目录记一下,后面需要使用。

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在内的性能信息。

docker-compose安装skywalking进行日志收集,性能监控和链路追踪!

链路追踪:

执行命令启动后,控制台 中看到访问的链接和调用链路。

docker-compose安装skywalking进行日志收集,性能监控和链路追踪!


docker-compose安装skywalking进行日志收集,性能监控和链路追踪!


控制台更多使用说明:

​​分布式链路追踪系统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容器在同一台服务器上所以这一步可以跳过。

服务运行后即可看到日志:

docker-compose安装skywalking进行日志收集,性能监控和链路追踪!


这样就可以了。