Sentry 为一套开源的应用监控和错误追踪的解决方案。这套解决方案由对应各种语言的 SDK 和一套庞大的数据后台服务组成。应用需要通过与之绑定的 token 接入 Sentry SDK 完成数据上报的配置。通过 Sentry SDK 的配置,还可以上报错误关联的版本信息、发布环境。同时 Sentry SDK 会自动捕捉异常发生前的相关操作,便于后续异常追踪。异常数据上报到数据服务之后,会通过过滤、关键信息提取、归纳展示在数据后台的 Web 界面中。
Sentry 的管理后台是基于 Python Django 开发的。这个管理后台由背后的 Postgres 数据库(管理后台默认的数据库,后续会以 Postgres 代指管理后台数据库并进行分享)、ClickHouse(存数据特征的数据库)、relay、kafka、redis 等一些基础服务或由 Sentry 官方维护的总共 23 个服务支撑运行。可见的是,如果独立的部署和维护这 23 个服务将是异常复杂和困难的。幸运的是,官方提供了基于 docker 镜像的一键部署实现 getsentry/onpremise。
这种部署方式依赖于 Docker 和 Compose
Docker 是可以用来构建和容器化应用的开源容器化技术。
Compose 是用于配置和运行多 Docker 应用的工具,可以通过一个配置文件配置应用的所有服务,并一键创建和运行这些服务。
CentOS 7.8
4 CPU Cores
8 GB RAM
20 GB Free Disk Space
git 1.8.0.0+
Docker 19.03.6+
(这里的版本是指 Docker Engine Server version)
Compose 1.28.0+
python 3
lsb_release -a
//...
Distributor ID: CentOS
Description: CentOS Linux release 7.8.2003 (Core)
Release: 7.8.2003
//...
lscpu
//...
CPU(s): 8
On-line CPU(s) list: 0-7
//...
free -m
total used free shared buff/cache available
Mem: 15307 2819 11433 769 1055 11451
Swap: 7679 0 7679
df -hl
Filesystem Size Used Avail Use% Mounted on
//...
/dev/mapper/centos-root 50G 7.9G 43G 16% /
/dev/sda1 1014M 140M 875M 14% /boot
/dev/mapper/centos-home 42G 33M 42G 1% /home
/dev/mapper/vg_data-lv_data 500G 2.6G 498G 1% /data
//...
git
起步 - 安装 Git
Docker
Docker 版本升级
Docker-----版本选择
Compose
Docker-Compose安装、卸载、使用详解
docker-compose教程(安装,使用, 快速入门)
Docker Compose
Python3
Linux下安装Python3,超详细完整教程
git version
git version 1.8.3.1
docker version
Client: Docker Engine - Community
Version: 20.10.21
API version: 1.40
Go version: go1.18.7
Git commit: baeda1f
Built: Tue Oct 25 18:04:24 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 19.03.9
API version: 1.40 (minimum version 1.12)
Go version: go1.13.10
Git commit: 9d988398e7
Built: Fri May 15 00:24:05 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.11
GitCommit: d986545181c905378b0f90faa9c5eae3cbfa3755
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
docker-init:
Version: 0.18.0
GitCommit: fec3683
docker-compose version
docker-compose version 1.29.2, build 5becea4c
python3 --version
Python 3.11.0
# 可以尝试使用镜像地址:https://github.91chi.fun//https://github.com/getsentry/self-hosted.git
git clone https://github.com/getsentry/onpremise.git
cd self-hosted/
git checkout 22.11.0
在后续部署的过程中,需要拉取大量镜像,建议修改docker镜像源,修改文件位置为/etc/docker/daemon.json
。相关资料可以参考:Docker 镜像加速
./install.sh
提示内容:
▶ Parsing command line ...
▶ Detecting Docker platform
Detected Docker platform is linux/amd64
▶ Initializing Docker Compose ...
▶ Setting up error handling ...
Hey, so ... we would love to automatically find out about issues with your
Sentry instance so that we can improve the product. Turns out there is an app
for that, called Sentry. Would you be willing to let us automatically send data
about your instance upstream to Sentry for development and debugging purposes?
y / yes / 1
n / no / 0
(Btw, we send this to our own self-hosted Sentry instance, not to Sentry SaaS,
so that we can be in this together.)
Here's the info we may collect:
- OS username
- IP address
- install log
- runtime errors
- performance data
Thirty (30) day retention. No marketing. Privacy policy at sentry.io/privacy.
y or n?
大致内容讲是否允许Sentry收集运行的相关信息,允许是 输入 y
,不允许输入 n
。
输入之后等待相关程序的安装,安装时间较长,笔者第一次安装的时间接近40分钟。
如果中间安装失败,可以重新执行命令,笔者因为网络问题重试了3次。
docker-compose up -d
Sentry默认绑定9000端口,我们可以通过 http://127.0.0.1:9000/ 登录页面
注意:Sentry不支持子路径配置。例如想要实现 http://127.0.0.1/sentry 指向 http://127.0.0.1:9000/ ,这是不行的。
详情查看:
# 在容量最大的目录下创建文件夹
mkdir -p /data/var/sentry/lib/
# 停止 docker 服务
systemctl stop docker
# 将 docker 的默认数据复制到新路径下,删除旧数据并创建软连接,即使得存储实际占用磁盘为新路径
/bin/cp -a /var/lib/docker /data/sentry/var/lib/docker && rm -rf /var/lib/docker && ln -s /data/sentry/var/lib/docker /var/lib/docker
# 重启 docker 服务
systemctl start docker
在仓库的位置下面有个.env文件,使用vim打开,修改SENTRY_EVENT_RETENTION_DAYS
的值为30,修改后的配置为:
COMPOSE_PROJECT_NAME=sentry-self-hosted
SENTRY_EVENT_RETENTION_DAYS=30
# You can either use a port number or an IP:PORT combo for SENTRY_BIND
# See https://docs.docker.com/compose/compose-file/#ports for more
SENTRY_BIND=9000
# Set SENTRY_MAIL_HOST to a valid FQDN (host/domain name) to be able to send emails!
# SENTRY_MAIL_HOST=example.com
SENTRY_IMAGE=getsentry/sentry:22.11.0
SNUBA_IMAGE=getsentry/snuba:22.11.0
RELAY_IMAGE=getsentry/relay:22.11.0
SYMBOLICATOR_IMAGE=getsentry/symbolicator:0.5.1
WAL2JSON_VERSION=latest
HEALTHCHECK_INTERVAL=30s
HEALTHCHECK_TIMEOUT=60s
HEALTHCHECK_RETRIES=10
按ESC退出之后,输入:wq
保存,然后重启项目。
systemctl start docker
使用[email protected]进行账号创建:
docker-compose run --rm web createuser --email [email protected] --password admin --superuser
密码:admin
第一次登录之后,会出现配置页面
/api/[id]/store/
配置到公网环境,保证数据不会泄密)。页面刷新之后,语言会变为中文。
Docker 版本升级
Docker-----版本选择
docker-compose教程(安装,使用, 快速入门
Docker Compose
Docker-Compose安装、卸载、使用详解
Linux下安装Python3,超详细完整教程
【得物技术】前端项目使用Sentry错误监控实践
sentry 私有化部署
前端异常监控 Sentry 的私有化部署和使用
Self-Hosted Sentry 22.11.0
Self-Hosted Sentry