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

  • A+

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

拉取镜像并启动

这一步有点漫长,耐心等待

docker-compose up -d

查看日志

docker-compose logs -f
停止:docker-compose -f skywalking-docker-compose_3.3.yaml stop
启动:docker-compose -f skywalking-docker-compose_3.3.yaml up -d

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

docker ps 

可以看到启动了三个容器:skywalking-ui,elasticsearch,还有一个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进行日志收集,性能监控和链路追踪!
这样就可以了。

w3cjava