Sentry私有化部署的内存和存储优化

在官方的介绍与文档里面对sentry进行了详细的介绍,以及教大家如何进行私有化部署。但是在部署后会出现什么问题,在安装之前与安装之后我们可以通过什么方式进行优化?

通过项目的实际使用所遇到的问题:

1.磁盘空间占用大

2.内存出现爆满

通过在安装之前与安装之后进行优化配置,避免服务出现以上两点问题

一、安装之前

1.配置日志存储时长

官方默认配置为90天,我们可以根据自己服务器资源(硬盘大小),以及项目需要调整配置。调整".env"文件下的配置即可。此配置可有效控制日志存储,防止日志过多,导致硬盘容量不足。

复制代码
# 将此90调整为所需要的值即可

SENTRY_EVENT_RETENTION_DAYS=90

2.开放项目集成的postgresql、clickhouse的端口

开放所用数据的端口,便于使用客户端连接。若数据量过大可以通过数据脚本进行数据清理操作。开放端口主要调整"docker-compose.yml"文件内容。具体调整内容如下:

复制代码
postgres:
    <<: *restart_policy
    # Using the same postgres version as Sentry dev for consistency purposes
    image: "postgres:14.5"
    healthcheck:
      <<: *healthcheck_defaults
      # Using default user "postgres" from sentry/sentry.conf.example.py or value of POSTGRES_USER if provided
      test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres}"]
    command:
      [
        "postgres",
        "-c",
        "wal_level=logical",
        "-c",
        "max_replication_slots=1",
        "-c",
        "max_wal_senders=1",
      ]
    environment:
      POSTGRES_HOST_AUTH_METHOD: "trust"
    entrypoint: /opt/sentry/postgres-entrypoint.sh
    volumes:
      - "sentry-postgres:/var/lib/postgresql/data"
      - type: bind
        read_only: true
        source: ./postgres/
        target: /opt/sentry/
    ports:
      - "5432:5432"  #增加的端口映射
clickhouse:
    <<: *restart_policy
    image: clickhouse-self-hosted-local
    build:
      context: ./clickhouse
      args:
        BASE_IMAGE: "${CLICKHOUSE_IMAGE:-}"
    ulimits:
      nofile:
        soft: 262144
        hard: 262144
    volumes:
      - "sentry-clickhouse:/var/lib/clickhouse"
      - "sentry-clickhouse-log:/var/log/clickhouse-server"
      - type: bind
        read_only: true
        source: ./clickhouse/config.xml
        target: /etc/clickhouse-server/config.d/sentry.xml
    ports:
      - "8123:8123"  #增加的端口映射
      - "9001:9000"  #增加的端口映射
    environment:
      # This limits Clickhouse's memory to 30% of the host memory
      # If you have high volume and your search return incomplete results
      # You might want to change this to a higher value (and ensure your host has enough memory)
      MAX_MEMORY_USAGE_RATIO: 0.3
    healthcheck:
      test: [
          "CMD-SHELL",
          # Manually override any http_proxy envvar that might be set, because
          # this wget does not support no_proxy. See:
          # https://github.com/getsentry/self-hosted/issues/1537
          "http_proxy='' wget -nv -t1 --spider 'http://localhost:8123/' || exit 1",
        ]
      interval: 10s
      timeout: 10s
      retries: 30

3.设置服务内存限制

内存大小限制,能有效的控制服务运行时存储爆满,将服务器拖垮导致服务宕机。此处建议对clickhouse、postgres、redis服务进行内存限制

复制代码
# 在对应服务的docker-compose文件下增加如下内容即可
deploy:
    resources:
    limits:
    memory: 8G  #根据需要设置内存大小,此处8GB

二、安装之后

根据上述配置进行调整之后,第一次服务运行起来了,我们还需要对一些服务内部的配置进行优化调整,以保持服务长时间稳定运行。

1.kafka日志数据保留时长设置调整

kafka队列日志保存时长设置,能有效的控制kafka所需使用的磁盘空间大小。在刚使用的sentry时,我就因为使用默认的配置,为调节导致kafka服务占用磁盘达到了500G左右,导致服务器空间不足。因此我就此问题找到了调整kafka队列日志保存时间,有效控制磁盘使用,kafka服务所需磁盘空间在20G左右.

以下内容为调整的方式

复制代码
# 进入kafka容器
docker exec -it sentry-self-hosted-kafka-1 /bin/bash

#查看topics
kafka-topics --list --zookeeper zookeeper:2181

# 安装vim
apt-get update
apt-get install vim

# 安装vim 时可能因为资源问题不能正常安装
# 可以将资源增加阿里云资源 
cat >> /etc/apt/sources.list
# 按enter键输入如下内容
deb https://mirrors.aliyun.com/debian-archive/debian/ jessie main non-free contrib
deb-src https://mirrors.aliyun.com/debian-archive/debian/ jessie main non-free contrib
deb http://mirrors.aliyun.com/debian-security/ squeeze/updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian-security/ squeeze/updates main non-free contrib
# 按ctrl+d 保存内容


#修改kafka配置文件
vi /etc/kafka/server.properties 
#修改为7小时 默认168
log.retention.hours=7
log.cleaner.enable=true
log.cleanup.policy=delete
log.cleanup.interval.mins=1

2.调整完成后停掉服务,重新启动

复制代码
# 停止服务
docker-compose down 
# 启动服务
docker-compose up -d
相关推荐
小二·3 天前
前端 DevOps 完全指南:从 Docker 容器化到 GitHub Actions 自动化部署(Vue 3 + Vite)
前端·docker·devops
better_liang3 天前
每日Java面试场景题知识点之-Docker容器化部署
java·docker·微服务·devops·容器化·企业级开发
小二·4 天前
前端监控体系完全指南:从错误捕获到用户行为分析(Vue 3 + Sentry + Web Vitals)
前端·vue.js·sentry
智能运维指南5 天前
国产替代背景下,DevOps平台选型的信创生态协同战略——从“单点适配”到“全栈融合”
devops·研发管理·devops平台·devops厂商·研运一体化
星际棋手5 天前
【Devops三千问】需求排期不算 DevOps 环节?
运维·devops
无限大.6 天前
为什么“DevOps“能提高软件开发效率?——从开发到运维的融合
linux·运维·devops
hk11247 天前
【Architecture/Refactoring】2026年度企业级遗留系统重构与高并发架构基准索引 (Grandmaster Edition)
数据结构·微服务·系统架构·数据集·devops
黛玉晴雯子0017 天前
Devops基础之Jenkins持续集成工具(持续更新)
ci/cd·jenkins·devops
没有bug.的程序员7 天前
中台与微服务的关系:从技术迷雾到组织协同的深度解构
运维·微服务·devops·架构设计·数字化转型·中台架构·组织协同
Gofarlic_oms17 天前
Kisssoft许可证服务器高可用性(HA)集群配置方案
运维·服务器·网络·安全·需求分析·devops