skywalking 8.5 部署
前言
本文以非容器方式部署skywalking
K8S部署方式见 《helm离线部署skywalking》
1. 安装准备
进入8.5 下载如下文件:
2. 安装ES
-
私有镜像
下载共有镜像:elasticsearch:7.11.2
上传私有仓库:harbocto.xxx.com.cn/public/elasticsearch:7.11.2
-
docker-compose文件
version: '3'
services:
elasticsearch:
image: 'harbocto.xxx.com.cn/public/elasticsearch:7.11.2'
restart: always
container_name: elasticsearch
volumes:
- ./data:/usr/share/elasticsearch/data
- ./logs:/usr/share/elasticsearch/logs
ports:
- '9200:9200'
- '9300:9300'
environment:
JAVA_OPTS: "-Xms2g -Xmx2g"
discovery.type: single-node
- 持久化存储
上边挂载了两个目录:
- ./data:/usr/share/elasticsearch/data
- ./logs:/usr/share/elasticsearch/logs
需要提前在宿主机创建这两个目录,并且把属主权限改成"容器里边用户所映射的宿主机用户",通常是1001这个id的用户。(当然,不改属主的话,你也可以给777权限,但是不提倡。)
如何确定属主改成哪个用户呢?
你可以先给logs目录777权限,然后启动容器,再查看容器在logs目录下创建文件的属主(假设为用户A)。
然后关闭容器,重新创建logs
、data
两个目录,属主设置成用户A。
- web查看
3. 安装skywalking
- 修改配置文件
/opt/skywalking/config/application.yml
selector: ${SW_STORAGE:h2}
改为
selector: ${SW_STORAGE:elasticsearch7}
- 启动服务
# cd /opt/skywalking/bin
# ./startup.sh
4. 后期维护
ES定时清理
- 查看ES中数据命
# curl -s -XGET http://127.0.0.1:9200/_cat/indices?v
可见skywalking数据格式如:sw_xxxxx-20210628
,因此写定时清理脚本如下:
- 清理脚本
#!/bin/bash
DATE=`date -d "6 days ago" +%Y%m%d`
curl -s -XGET http://127.0.0.1:9200/_cat/indices?v| grep $DATE | awk '{print $3}' >/tmp/elk.log
for elk in `cat /tmp/elk.log`
do
curl -XDELETE "http://127.0.0.1:9200/$elk"
done
设置定时任务每天执行即可