SkyWalking docker-compose 部署
提供 docker-compose 文件 及 记录 SkyWalking、kibana 安装过程。
版本说明:
插件 | 版本号 |
---|---|
elasticsearch | 7.17.0 |
kibana | 7.17.5 |
logstash | 7.17.0 |
skywalking | 10.0.1 |
agent | 9.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
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"
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 &