Skip to content
首页/server/本文内容

SkyWalking docker-compose 部署

提供 docker-compose 文件 及 记录 SkyWalking、kibana 安装过程。

版本说明:

插件版本号
elasticsearch7.17.0
kibana7.17.5
logstash7.17.0
skywalking10.0.1
agent9.2.0

需要注意的是:如果用skywalking 8.0 的版本监控jdk17及以上的sprignboot 项目,会出现控制台无数据显示的情况

踩坑点

1、elasticsearch 映射的data及log目录需要授权777权限 2、elasticsearch 安装完后先进入容器执行命令初始化密码

前置准备

  mkdir sky && cd sky
  mkdir skywalking-oap
  mkdir logstash
  mkdir kibana
  mkdir filebeat
  mkdir elasticsearch

elk docker-compose.yml

version: '3.8'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0
    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 -Xmx2048m"
      - TZ=Asia/Shanghai
    volumes:
      - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro,z
      - ./elasticsearch/data:/usr/share/elasticsearch/data:z
      - ./elasticsearch/logs:/usr/share/elasticsearch/logs
    ulimits:
      memlock:
        soft: -1
        hard: -1

  kibana:
    image: kibana:7.17.5
    container_name: kibana
    links:
      - elasticsearch #可以用es这个域名访问elasticsearch服务
    depends_on:
      - elasticsearch #kibana在elasticsearch启动之后再启动
    environment:
      KIBANA_SYSTEM_PASSWORD: kibana
    volumes:
      - ./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
    ports:
      - 5601:5601
  
      
  logstash:
    image: logstash:7.17.0
    container_name: logstash
    environment:
      LS_JAVA_OPTS: -Xms1024m -Xmx2048m
      LS_HEAP_SIZE: 3g
      TZ: Asia/Shanghai
    volumes:
      - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro,Z
      - ./logstash/pipeline:/usr/share/logstash/pipeline:ro,Z
    depends_on:
      - elasticsearch #kibana在elasticsearch启动之后再启动
    links:
      - elasticsearch #可以用es这个域名访问elasticsearch服务
    ports:
      - "5044:5044"
      - "5000:5000/tcp"
      - "5000:5000/udp"
      - "9600:9600"

sky docker-compose.yml

version: '3.7'
services:
  oap:
    image: apache/skywalking-oap-server:10.0.1-java21
    container_name: skywalking-oap21
    ports:
      - "12800:12800"
      - "11800:11800"
    healthcheck:
      test: ["CMD-SHELL", "/skywalking/bin/swctl"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s
    environment:
      TZ: Asia/Shanghai
      SW_STORAGE: elasticsearch
      SW_STORAGE_ES_CLUSTER_NODES: 192.168.18.69:9200
      SW_ES_USER: elastic
      SW_ES_PASSWORD: elastic
      SW_HEALTH_CHECKER: default
      SW_TELEMETRY: prometheus
      JAVA_OPTS: "-Xms1024m -Xmx2048m"
    volumes:
      - ./oap-logs:/skywalking-oap/logs
      - ./oap-data:/skywalking-oap/data
      - ./config/alarm-settings.yml:/skywalking-oap/config/alarm-settings.yml
      - ./config/application.yml:/skywalking-oap/config/application.yml
  ui:
    image: apache/skywalking-ui:10.0.1
    container_name: skywalking-ui21
    ports:
      - "8080:8080"
    environment:
      SW_OAP_ADDRESS: http://oap:12800
    volumes:
      - ./ui-logs:/skywalking-ui/logs
    depends_on:
      oap:
        condition: service_healthy

修改配置文件

elasticsearch 开启鉴权

修改:elasticsearch/config/elasticsearch.yml,内容如下:

cluster.name: "docker-cluster"
network.host: 0.0.0.0

xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true

alt text

kibana 配置文件调整

修改:kibana/config/kibana.yml

server.host: "0.0.0.0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
elasticsearch.username: "kibana_system"
elasticsearch.password: "kibana"
i18n.locale: "zh-CN"

alt text

logstash 配置文件修改

修改 logstash/config/logstash.yml

## Default Logstash configuration from Logstash base image.
## https://github.com/elastic/logstash/blob/master/docker/data/logstash/config/logstash-full.yml
#
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.username: logstash_system
xpack.monitoring.elasticsearch.password: ogstash

skywalking-oap文件修改

修改 主要将skywalking原包里面的文件复制出来方便后面修改

skywalking-oap/config/alarm-settings.yml; skywalking-oap/config/application.yml;

  docker cp f5b6b77d8e43:/skywalking/config/application.yml ./config/application.yml
  docker cp f5b6b77d8e43:/skywalking/config/alarm-settings.yml ./config/alarm-settings.yml

项目启动

注意启动顺序,需要es启动成功之后再启动skywalking

1、elasticsearch 里面的映射目前需要提前授权

chmod -r 777 elasticsearch/data;
chmod -r 777 elasticsearch/logs 

2、先启动elk脚本文件:
docker-compose -f docker-compose-elk.yml up -d

3、进入es容器 设置账号密码
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive

相关密码如下:
    elastic: elastic
    logstash_system: logstash  
    apm_system: apm_system
    kibana_system:kibana
    beats_system:beats_system
    remote_monitoring_user:remote_monitoring_user

4、重启es kibana logstash
5:安装filebeat服务 (filebeat在docker里面安装暂时无法正确采集日志,所以单独用service安装)
        1:mac用户直接进入filebeat-8.3.1  ./filebeat -c filebeat.yml -e
        2:其他用户: https://www.elastic.co/cn/downloads/beats/filebeat
        3:完成安装后修改filebeat.yml 中的日志配置 与 output.logstash 地址 注释输出到Elasticsearch 的方式


6、待elk启动完成后,启动sky脚本文件
docker-compose -f docker-compose-sky.yml up -d
7、docker ps 确认下启动状态
8、在springboot项目中使用探镇接入 sky链路分析中心

idea:
-javaagent:/Users/xyl/Desktop/xyl/services-config/elk/agent9/skywalking-agent.jar=agent.service_name=local::rlsh-gateway,collector.backend_service=192.168.18.69:11800

jar:
java -jar -javaagent:/mnt/project/agent/skywalking-agent.jar=agent.service_name=prod::rlsh-gateway,collector.backend_service=192.168.18.69:11800 -Xms256M -Xmx512M -DSERVER_PORT=17063  /mnt/project/gateway/gateway.jar > /mnt/project/gateway/logs/log.file 2>&1 &

项目截图

alt text

alt text

alt text

- END -
  • Summer
  • SkyWalking v10 docker-compose 部署
  • 2024-06-22