本来打算用docker安装,但是发觉数据一致存不进去es,故退而求其次,仅保留es使用docker安装,skywalking采用原生安装方式
版本选型
apache-skywalking-8.7.0
es:7.10.1
文件下载
https://download.csdn.net/download/SpringHASh/85759581
安装es
docker pull elasticsearch:7.10.1
mkdir -p /docker/elasticsearch/data
mkdir -p /docker/elasticsearch/logs
chmod -R 777 /docker/elasticsearch/data
chmod -R 777 /docker/elasticsearch/logs
docker run -d --name=es7 \
--restart=always \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-v /docker/elasticsearch/data:/usr/share/elasticsearch/data \
-v /docker/elasticsearch/logs:/usr/share/elasticsearch/logs \
elasticsearch:7.10.1
修改skywalking配置
修改agent/config/agent.config如下配置:
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.1.100:11800}
agent/config/agent.config 新增如下配置:
plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:192.168.1.100}
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}
更新配置application.yml 指定es存储 / 也可选择mysql持久化存储
我用ES7版本存储
elasticsearch7:
nameSpace: ${SW_NAMESPACE:""}
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.1.100:9200}
#不必填
nacos:
# Nacos Server Host
serverAddr: ${SW_CONFIG_NACOS_SERVER_ADDR:192.168.1.100}
# Nacos auth username
username: ${SW_CONFIG_NACOS_USERNAME:"xxx"}
password: ${SW_CONFIG_NACOS_PASSWORD:"xxx"}
项目配置
基于docker构建
dockerfile
FROM openjdk:8-jdk-alpine
VOLUME /tmp
VOLUME /var/log/test-server
ADD target/app-1111.jar app-1111.jar
EXPOSE 15000
ENTRYPOINT ["java", "-javaagent:/var/local/skywalking-agent.jar", "-Dskywalking.agent.service_name=app-1111", "-Dskywalking.collector.backend_service=192.168.1.100:11800", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app-1111.jar"]
gitlab.ci (主要关注docker部分)
test-app-1111:
stage: deploy
tags:
- test
variables:
service_name: "app-1111"
service_port: 15000
script:
- echo -e "\n[$CI_JOB_NAME] $(date) ($CI_BUILD_REF_NAME) ($CI_BUILD_STAGE)\n" | tee -a /tmp/test.txt
- mvn clean package
- sh scripts/clean-container.sh $service_name
- sh scripts/clean-image.sh $service_name latest
- cd $app_parent_path
- cd $service_name
- docker build -f Dockerfile -t $service_name:latest .
- docker create -m 1G --name $service_name -p $service_port:$service_port -e "SPRING_PROFILES_ACTIVE=test" -v /opt/apache-skywalking-apm-bin/agent:/var/local -v /var/log/$project_name:/var/log/$project_name $service_name:latest
- docker start $service_name
when:
manual