Sentry
是什么?
Sentry 是一个开源的应用错误监控(Error Tracking)系统。它的主要功能是:
- 自动捕获应用中的错误(比如 JavaScript 报错、Python 异常、Java 崩溃等)。
- 记录错误的堆栈信息、发生时间、用户信息、浏览器/操作系统等上下文。
- 提供 Web 界面便于查看、分类、排查错误。
- 支持告警(比如通过邮件、Slack 通知严重错误)。
简单说,它就像一个"监控摄像头",专门盯着应用有没有出错。
怎么用?
-
部署 Sentry 服务
方式 说明 Sentry 官方 托管在 Sentry 官方服务器,开箱即用,按用量付费。 自托管 部署在自己的服务器上,数据完全自主可控,长期使用更经济。 -
项目中集成 Sentry SDK
部署自托管 Sentry
本文使用 Docker Compose 进行部署
流程
流程很简单,但是中间的问题一个接一个。。。
-
安装 Docker、Docker Compose
-
克隆自托管仓库
bashVERSION=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/getsentry/self-hosted/releases/latest) VERSION=${VERSION##*/} git clone https://github.com/getsentry/self-hosted.git cd self-hosted git checkout ${VERSION}
⚠️ 上述是官方给的流程,根据上述流程切分支后发现
docker-compose.yml
中缺少 Web 项后续会报错,所以直接 clone 仓库后用 master 分支就行。 -
运行安装脚本
./install.sh
(问题集中在此,并未完全解决完) -
启动 Sentry 服务
bashdocker compose up --wait
👉 启动成功后,打开浏览器访问:http://127.0.0.1:9000
遇到的问题
-
❌ 拉取镜像超时
✅ 在
/etc/docker/daemon.json
中配置镜像源json"registry-mirrors": [ "https://docker.1ms.run", "https://docker-0.unsee.tech" ]
-
❌ (未彻底解决,如果有朋友知道如何解决,求分享)
⚠️ 这里应该是有两个问题:
- apt-utils is not installed
- dpkg: error: need an action option
-
针对第一个问题,修改
jq/Dockerfile
文件:DockerfileFROM debian:bookworm-slim LABEL MAINTAINER="oss@sentry.io" RUN apt-get update RUN apt-get install -y apt-utils RUN set -x \ && apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends jq \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* ENTRYPOINT ["jq"]
❓ 但是这个问题应该不会导致报错,并且该提示出现过多次,最开始通过修改上述代码解决了,但后续仍会出现这个提示,所以对该方案是否能解决问题存疑。
-
针对第二个问题,
docker builder prune
❓ 这个问题在第一次通过清除缓存解决了,但后续依然出现,目前也是卡在这个问题上,清除缓存失效,所以依旧存疑。
-
❌ 镜像拉取失败
✅ 最开始没有统一配镜像源,遇到拉取失败手动安装,这也导致了下一个问题的出现。
-
❌ 架构不匹配
我的CPU是
ZHAOXIN kaixian KX-7000
对应于X86
(也称为X64
架构),而我最开始下载了arm64
版本。 -
❌ Github 上 Python 包安装失败
✅ 修改
sentry/Dockerfile
:DockerfileARG SENTRY_IMAGE FROM ${SENTRY_IMAGE} RUN pip install https://gh.llkk.cc/https://github.com/stayallive/sentry-nodestore-s3/archive/main.zip COPY . /usr/src/sentry RUN if [ -s /usr/src/sentry/enhance-image.sh ]; then \ /usr/src/sentry/enhance-image.sh; \ fi RUN if [ -s /usr/src/sentry/requirements.txt ]; then \ echo "sentry/requirements.txt is deprecated, use sentry/enhance-image.sh - see https://develop.sentry.dev/self-hosted/#enhance-sentry-image"; \ pip install -r /usr/src/sentry/requirements.txt; \ fi
-
❌ 镜像源拉取失败
✅ 尝试了几个镜像仓库拉取失败,手动拉取
clickhouse-server:25.3.6.10034.altinitystable
-
❌ 权限问题 + 参数列表过长
-
针对权限问题,尝试了添加在上述目录中添加
USER:0
,不生效;尝试将cron
和sentry
目录下的entrypoint.sh
文件中权限相关代码注释:sh#if [ "$(ls -A /usr/local/share/ca-certificates/)" ]; then # update-ca-certificates #fi
解决权限问题后,又出现问题2中的
dpkg
问题。 -
❓ 针对参数列表过长问题,尝试清除缓存,重新安装,但未成功,并且卡在了最开始的步骤,一直报问题2的错误:
-
准备重新拉仓库下来尝试一下,网上搜到的教程都很丝滑,我这儿实在是困难重重啊,有经验的小伙伴求分享!