elk的日志系统占用空间,新手可能直接删除文件,但这样并不能释放空间,并且会引起elk的各种错误,包括权限错误等, 如果已经处理需要进行如下修复

物理删除文件后的权限处理

  1. 清除被占用空间 lsof -n|grep deleted
  2. 停止elasticsearch
  3. 停止kibana
  4. 注释elasticsearch.yml中的xpack配置
  5. 启动elasticsearch
  6. 删除.security-7
curl -XDELETE http://127.0.0.1:9200/.security-7
  1. 取消elasticsearch.yml的xpack配置的注释
  2. 修改elasticsearch密码,elasticsearch-setup-passwords interactive
  3. 请求测试
curl -u elastic:elastic http://127.0.0.1:9200/
  1. 删除kibana管理器
curl -u elastic:elastic -XDELETE http://127.0.0.1:9200/.kibana_task_manager_1 
  1. 请求删除kibana内容
curl -u elastic:elastic -XDELETE http://127.0.0.1:9200/.kibana*
  1. 登录kibana重建索引

正确删除空间方式

正确删除空间的方式是定时通过接口删除索引, 具体如下

  1. 获取所有索引
curl -u elastic:elastic -s  -XGET http://127.0.0.1:9200/_cat/indices?v
  1. 按照名字删除30天以前的所有索引
curl -u elastic:elastic -XDELETE http://127.0.0.1:9200/test-index-2021.01.01
  1. 创建脚本
#!/bin/bash

#删除ELK30天前的日志

DATE=`date -d "30 days ago" +%Y.%m.%d`

curl -u elastic:elastic -s  -XGET http://127.0.0.1:9200/_cat/indices?v| grep ${DATE} | awk -F '[ ]+' '{print $3}' >/tmp/elk.log

for elk in `cat /tmp/elk.log`

do

        curl -u elastic:ealstic  -XDELETE  "http://127.0.0.1:9200/$elk"

done
  1. 创建cron表达式
crontab -e
0 1 * * * del_30.sh