如何减少php占用磁盘,sentry磁盘占用过大如何清理历史数据

1、SENTRY数据软清理 (清理完不会释放磁盘,如果很长时间没有运行,清理时间会很长)#登录worker容器

docker exec -it sentry_onpremise_worker_1 /bin/bash

#保留多少天的数据,cleanup使用delete命令删除postgresql数据,但对于delete,update等操作,只是将对应行标志为DEAD,并没有真正释放磁盘空间

sentry cleanup --days 7

2、POSTGRES数据清理 (清理完后会释放磁盘空间)#登录postgres容器

docker exec -it sentry_onpremise_postgres_1 /bin/bash

#运行清理

vacuumdb -U postgres -d postgres -v -f --analyze

3、定时清理脚本0 1 * * * cd /data1/onpremise && { time docker-compose run --rm worker cleanup --days 7; } &> /var/log/cleanup.log

0 8 * * * { time docker exec -i $(docker ps --format "table {{.Names}}"|grep postgres) vacuumdb -U postgres -d postgres -v -f --analyze; } &> /data1/logs/vacuumdb.log

4、异常处理

因为磁盘已经被占满,所以上面的清理命令也执行不动了,没办法只能自己寻找大文件临时删除一些,于是找到了下面的大文件

/var/lib/docker/volumes/sentry-kafka/_data/events-0/*.log

看着是 .log结尾的文件,而且很大,就直接删除了,结果发现重启后,sentry无法正常收到上报了。

没办法,只能重新安装cd /data1/onpremise

./install.sh

重新启动生效,重新安装不会清理原有数据,所以不备份也没关系docker-compose down

docker-compose build

docker-compose up -d

5.清理kafka占用磁盘过大的问题

清理kafka占用磁盘过大的问题搜到可以配置 .env,如下,但是我的没有效果KAFKA_LOG_RETENTION_HOURS=24

KAFKA_LOG_RETENTION_BYTES=53687091200   #50G

KAFKA_LOG_SEGMENT_BYTES=1073741824      #1G

KAFKA_LOG_RETENTION_CHECK_INTERVAL_MS=300000

KAFKA_LOG_SEGMENT_DELETE_DELAY_MS=60000

于是自己研究,首先进入kafka的容器docker exec -it sentry_onpremise_kafka_1 /bin/bash

#查看topics

kafka-topics --list --zookeeper zookeeper:2181

#修改kafka配置文件

vi server.propertyies

#修改为7小时 默认168

log.retention.hours=7

log.cleaner.enable=true

log.cleanup.policy=delete

log.cleanup.interval.mins=1

#重启

kafka-server-stop

kafka-server-start -daemon

重启后过了一会也没效果,第二天才看到效果,具体原因有待研究,再去查看目录的大小,发小从20G下降到12G左右cd /var/lib/docker/volumes/sentry-kafka/_data/events-0

du -h --max-depth=1

ls -alh # 日期最小的是3天前的日志:00000000000000146071.log

docker容器没有vi命令的解决方案apt-get update

apt-get install vim

6、官方解决方案

其实官方已经提供了解决方案,修改 .env文件的以下配置SENTRY_EVENT_RETENTION_DAYS=7

重新安装即可

Event Retention

Sentry comes with a cleanup cron job that prunes events older than90 daysby default. If you want to change that, you can change theSENTRY_EVENT_RETENTION_DAYSenvironment variable in.envor simply override it in your environment. If you do not want the cleanup cron, you can remove thesentry-cleanupservice from thedocker-compose.ymlfile.

版权声明:本文由PHP面试资料网发布,如需转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值