使用docker-compose部署Sentry(附Sentry数据清理)
Ubuntu下Sentry部署
Sentry作为一款常见以及使用人数较多的监控服务,在接口监控、错误捕捉、错误报警等方面是非常不错的,在此之前我也用过Prometheus监控,各有各的好处,有兴趣的同学可以对这些都了解一下。
安装docker
apt install curl -y
sh -c "$(curl -fsSL https://get.docker.com)"
systemctl start docker
systemctl enable docker
安装docker-compose
# 下载 docker-compose
wget https://github.com/docker/compose/releases/download/1.26.0/docker-compose-Linux-x86_64
# 移到 /usr/local/bin/docker-compose
sudo mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
# 给 docker-compose 执行权限
sudo chmod +x /usr/local/bin/docker-compose
下载安装sentry
wget https://github.com/getsentry/onpremise/archive/refs/tags/21.4.1.tar.gz
tar -zxvf 21.4.1.tar.gz
cd onpremise-21.4.1/
修改 /sentry/config.yml,注意邮箱的tls和ssl只能一个为true
mail.host: 'smtp.exmail.qq.com'
mail.port: 465
mail.username: 'xxx@xxx.com'
mail.password: 'xxx'
mail.use-tls: false
mail.use-ssl: true
#The email address to send on behalf of
mail.from: 'xxx@xxx.com'
修改.env文件,在末尾添加数据自动清理时间,默认90天太长了,不设置也没关系
SENTRY_EVENT_RETENTION_DAYS=14
执行 :
./install.sh
中途会让创建用户
然后执行:
docker-compose up -d
如果想停止sentry服务,执行:
docker-compose down
sentry数据清理
sentry服务部署一段时间后发现剩余磁盘空间越来越小,寻找了很多解决方案,以下两个方案供参考。
方法一
实际上最大的数据是postgres里一个不断增长的表public.nodestore_node,一般发现的时候磁盘基本都被它满了,所以百度到的通用解决方案可能并没有办法执行,所以我们直接将它TRUNCATE掉即可,清空后不会影响后续的业务就行。
首先进入postgres容器
docker exec -it sentry_onpremise_postgres_1 /bin/bash
切换用户
su postgres
进入postgres
psql
清空这个害人的表
TRUNCATE public.nodestore_node;
在清理前后可以查看下这个表占用的空间
SELECT
table_schema || '.' || table_name AS table_full_name,
pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"')) AS size
FROM information_schema.tables
ORDER BY
pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC limit 20;
方法二
下方是百度到排名靠前的解决方案,在执行第二步时剩余磁盘空间不足会出现问题,在此记录作为参考。
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
vacuumdb -U postgres -d postgres -t nodestore_node -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无法正常收到上报了。
参考:https://forum.sentry.io/t/sentry-disk-cleanup-kafka/11337
没办法,只能重新安装
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
重新安装即可
详情参考:https://github.com/getsentry/onpremise
使用docker-compose部署Sentry(附Sentry数据清理)的更多相关文章
- Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- Docker Compose 部署 Redis 及原理讲解 | 懒人屋
原文:Docker Compose 部署 Redis 及原理讲解 | 懒人屋 Docker Compose 部署 Redis 及原理讲解 4.4k 字 16 分钟 2019-10-1 ...
- Docker Compose部署项目到容器-基于Tomcat和mysql的项目yml配置文件代码
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- 使用Docker Compose 部署Nexus后初次登录账号密码不正确,并且在nexus-data下没有admin,password
场景 Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...
- Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程)
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- Docker Compose部署Nexus3时的docker-compose,yml代码
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- 使用Docker Compose 部署Nexus后提示:Unable to create directory /nexus-data/instance
场景 Ubuntu Server 上使用Docker Compose 部署Nexus(图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...
- 基于Docker Compose部署分布式MinIO集群
一.概述 Minio 是一个基于Go语言的对象存储服务.它实现了大部分亚马逊S3云存储服务接口,可以看做是是S3的开源版本,非常适合于存储大容量非结构化的数据,例如图片.视频.日志文件.备份数据和容器 ...
- 使用Docker Compose部署基于Sentinel的高可用Redis集群
使用Docker Compose部署基于Sentinel的高可用Redis集群 https://yq.aliyun.com/articles/57953 Docker系列之(五):使用Docker C ...
- Docker Compose 部署前后端分离应用
部署前后端分离应用 容器化 Abp 应用 关于 Abp 应用的容器化,其实和普通的 ASP.NET Core 应用差不多,大家可以参考我此前的文章. 唯一需要注意的是:因为 Abp 解决方案中有多个项 ...
随机推荐
- linux中如何添加用户并赋予root权限详解
#adduser username 修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示: ## Allow root to run any commands anyw ...
- Adaptive AUTOSAR 学习笔记 2 - 官方文档下载及阅读建议
目前互联网上没有太多的 Adaptive AUTOSAR 的学习资料,官方文档是一个很不错的途径.看过官方文档才发现,目前很多关于 Adaptive AUTOSAR 的文章都是官方文档的简化翻译,不如 ...
- Javascript实现数组去重 [转]
1.遍历数组法 它是最简单的数组去重方法(indexOf方法) 实现思路:新建一个数组,遍历去要重的数组,当值不在新数组的时候(indexOf为-1)就加入该新数组中: var arr=[2,8,5, ...
- Java8实战——自己的总结
java8 介绍 java8是2014年3月份,由Oracle发布的一个版本,又称之为jdk1.8,是现再我们在学习和工作中用的最多的一个版本. 在jdk1.8中,java8以添加非常多的新特 ...
- docker之构建镜像
构建Docker镜像有以下两种方法: 使用docker commit命令. 使用docker build命令和 Dockerfile 文件. 在这里并不推荐使用docker commit来构建镜像,而 ...
- php-18个魔法函数
目录 php魔法函数 介绍 范例 1.__construct() 2.__destruct() 3.__call() 4.__callStatic 5.__get() 6.__set() 7.__is ...
- sshd_config详解
# $OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $ # This is the sshd server system-wide ...
- 微信小程序云开发-数据库表创建和操作
一.新建云数据库 进入[云开发]界面,点击[数据库]>添加>创建集合>确定. 二.向数据库中添加数据 选中[数据库],点击[添加记录],向数据库中添加记录 添加[字段]和[值],并选 ...
- 新iPhone有望加入指纹解锁,你会买吗?
苹果新款iPhone即将在9月份正式发布,或命名为iPhone 13或者iPhone 12s.据外媒报道,新一代iPhone的屏幕和相机都将迎来重大升级,同时还将首次加入屏下指纹解锁技术.你期待吗? ...
- 性能测试之查看cpu命令
top -m 用户空间进程(us). 内核空间进程(sy). 高nice值的用户空间进程(ni). 空闲(id). 空闲等待io(wa). 中断上半部(hi). 中断下半部(si). 以及steal时 ...