Sentry23.12版本私有化部署的内存和存储优化

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

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

1.磁盘空间占用大

2.内存出现爆满

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

一、安装之前

1.配置日志存储时长

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

# 将此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
<think>嗯,用户想了解如何在私有环境中通过Docker部署Sentry。根据之前的引用内容,我需要整理一个步骤指南。首先,系统要求部分,用户需要Ubuntu 20.04或更高版本,DockerDocker Compose。然后安装DockerCompose,这部分可以引用之前的步骤,比如添加阿里云的镜像源来加速安装。接下来是配置环境,比如创建目录结构,设置密钥,编辑配置文件。然后启动数据库Redis容器,这部分要注意使用--link或者自定义网络,但可能用户更熟悉自定义网络,所以建议创建一个sentry-network。然后运行Sentry升级命令来初始化数据库,这里需要确保环境变量正确,特别是密钥数据库链接。接下来编写docker-compose.yml文件,包括web、worker、cronpostgres、redis服务。启动服务后,配置Nginx反向代理,SSL证书部分可能需要用户自己申请,比如用Let's Encrypt。验证部署是否成功,访问域名查看登录页面。常见问题部分需要包括端口冲突、密钥一致性、性能优化等。最后生成相关问题,比如如何备份数据、监控性能、配置邮件通知等。需要检查步骤是否正确,特别是命令的准确性,比如docker run的参数是否正确,docker-compose文件的内容是否完整。还要注意引用对应的参考资料,比如初始化命令来自引用3,安装Docker的步骤来自引用12。确保回答结构清晰,分步骤说明,帮助用户逐步完成部署。</think>### Sentry Docker 私有化部署分步指南 #### 一、系统要求 1. Ubuntu 20.04+ 或兼容的Linux发行版 2. Docker ≥20.10.7 3. Docker Compose ≥1.29.2 4. 推荐配置:4核CPU/8GB内存/50GB存储 #### 二、安装依赖环境 1. **安装Docker** ```bash # 添加阿里云Docker镜像源(加速安装) $ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - $ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null $ sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io ``` 2. **安装Docker Compose** ```bash $ sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose ``` #### 三、部署Sentry服务 1. **创建部署目录** ```bash $ mkdir sentry-onpremise && cd sentry-onpremise ``` 2. **生成密钥** ```bash $ echo "export SENTRY_SECRET_KEY='$(docker run --rm sentry config generate-secret-key)'" > .env ``` 3. **启动基础服务** ```bash # 创建专用网络 $ docker network create sentry-network # 启动PostgreSQL $ docker run -d --name sentry-postgres --network sentry-network -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry postgres:14 # 启动Redis $ docker run -d --name sentry-redis --network sentry-network redis:6 ``` 4. **初始化数据库** ```bash $ docker run -it --rm --network sentry-network -e SENTRY_SECRET_KEY -e SENTRY_POSTGRES_HOST=sentry-postgres -e SENTRY_REDIS_HOST=sentry-redis --env-file .env sentry upgrade ``` *注意:此处会交互式创建管理员账号*[^3] 5. **编写docker-compose.yml** ```yaml version: '3' services: postgres: image: postgres:14 networks: - sentry-network environment: POSTGRES_USER: sentry POSTGRES_PASSWORD: secret redis: image: redis:6 networks: - sentry-network web: image: sentry:latest ports: - "9000:9000" networks: - sentry-network env_file: .env depends_on: - postgres - redis worker: image: sentry:latest networks: - sentry-network env_file: .env command: sentry run worker cron: image: sentry:latest networks: - sentry-network env_file: .env command: sentry run cron networks: sentry-network: driver: bridge ``` 6. **启动服务集群** ```bash $ docker-compose up -d ``` #### 四、配置反向代理(Nginx示例) ```nginx server { listen 80; server_name sentry.yourdomain.com; location / { proxy_pass http://localhost:9000; proxy_set_header Host $host; proxy_redirect off; } # 推荐配置SSL证书 # listen 443 ssl; # ssl_certificate /path/to/fullchain.pem; # ssl_certificate_key /path/to/privkey.pem; } ``` #### 五、验证部署 访问 `http://sentry.yourdomain.com` 或 `http://<服务器IP>:9000`,应出现Sentry登录页面。 #### 六、常见问题排查 1. **端口冲突**:修改docker-compose.yml中的`9000:9000`为其他端口 2. **密钥一致性**:确保.env文件中的`SENTRY_SECRET_KEY`在所有服务中一致 3. **性能优化**:可添加`-e SENTRY_WORKER_CONCURRENCY=4`调整worker并发数
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值