背景:
gitlab服务器上, 磁盘经常爆满。后来通过 du -sh ./*
查出prometheus下的data占了绝大多数磁盘空间。
因此,准备删除prometheus的数据。
思路
由于prometheus的数据占用的空间较大,因此在实际使用时,可以关闭prometheus。
vim /etc/gitlab/gitlab.rb
修改配置
prometheus_monitoring['enable'] = true
改为 false
重启gitlab
gitlab-ctl stop
gitlab-ctl reconfigure
gitlab-ctl start
以上只是关闭prometheus,但是之前存储的数据并没有删除。
现进行清除历史数据。
1、进入prometheus目录
2 启动prometheus服务:
/opt/gitlab/embedded/bin/prometheus --web.enable-admin-api --web.enable-lifecycle --config.file=prometheus.yml
我的服务器上的prometheus 可执行文件位于 /opt/gitlab/embedded/bin 下。
如果报错:
err="opening storage failed: lock DB directory: resource temporarily unavailable
原因:
修改配置文件后需要重新加载,重启后prometheus的探针一直在重启,删除重新创建会导致数据丢失,所以还是需要解决这个问题,主要是因为prometheus运行过程中使用的是nobody。
处理方法, 删除 data下的 lock文件。
然后重新启动prometheus:
/opt/gitlab/embedded/bin/prometheus --web.enable-admin-api --web.enable-lifecycle --config.file=prometheus.yml
新开一个命令终端。
3 执行删除数据的命令:
要完全删除delete_series发送clean_tombstones API 调用删除的数据,请执行以下操作: (亲测有效)
curl -X POST -g 'http://localhost:9090/api/v1/admin/tsdb/clean_tombstones'
然后使用 df -h
就可以看到磁盘可用空间增加。
要从中prometheus删除所有数据,请运行:
curl -X POST -g 'http://localhost:9090/api/v1/admin/tsdb/delete_series?match[]={__name__=~".+"}'