从零搭建Sentry

news2024/11/15 8:59:17

前言

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
//...

检查CPU

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

快速部署Sentry

克隆项目

# 可以尝试使用镜像地址: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/ ,这是不行的。

详情查看:

  • https://github.com/getsentry/sentry/issues/34760
  • https://github.com/getsentry/develop/pull/584/files

调整配置

调整日志配置

修改日志存储位置

# 在容量最大的目录下创建文件夹
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

创建超级用户

使用admin888@example.com进行账号创建:

docker-compose run --rm web createuser --email admin888@example.com --password admin --superuser

账号:admin888@example.com

密码:admin

登录配置

第一次登录之后,会出现配置页面

在这里插入图片描述

  • Root URL:异常上报接口的公网根地址(在做网络解析配置时,后台服务可以配置到内网外网两个域名,只将上报接口的解析规则 /api/[id]/store/ 配置到公网环境,保证数据不会泄密)。
  • Admin Email:在 install.sh 阶段创建的管理员账号。
  • Outbound email:这部分内容为邮件服务配置,可以先不配置。

其他配置

修改语言为简体中文

在这里插入图片描述

页面刷新之后,语言会变为中文。

调整时区为上海

在这里插入图片描述

参考资料

Docker 版本升级
Docker-----版本选择
docker-compose教程(安装,使用, 快速入门
Docker Compose
Docker-Compose安装、卸载、使用详解
Linux下安装Python3,超详细完整教程
【得物技术】前端项目使用Sentry错误监控实践
sentry 私有化部署
前端异常监控 Sentry 的私有化部署和使用
Self-Hosted Sentry 22.11.0
Self-Hosted Sentry

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/73795.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

四信机房环境监测方案上线 实现集中监控,统一管理

随着“东数西算”工程和新基建的加速落地,数智化技术正逐渐渗透到各领域。以机房行业为例,由于数据中心建设规模的逐步壮大,机房设备市场需求同步增长,为行业用户带来更多可能性。 伴随着机房中设备数量不断增多,如何…

Vue2实现浏览器ctrl+f功能

Vue2实现浏览器ctrlf功能 安装插件 使用一个Vue2的插件search-bar-vue2 npm install search-bar-vue2全局注册 //全局注册 import SearchBar from search-bar-vue2 Vue.use(SearchBar)局部注册 <template><div><search-bar :root"#app" :highlig…

【VUE】实现分页组件

&#x1f4d8;前言 &#x1f6a9;&#x1f6a9;&#x1f6a9; &#x1f48e;个人主页: 阿选不出来 &#x1f4a8;&#x1f4a8;&#x1f4a8; &#x1f48e;个人简介: 一名大二在校生,学习方向前端,不定时更新自己学习道路上的一些笔记. &#x1f4a8;&#x1f4a8;&#x1f4a…

Navigation--导航机理

1.ROS navigation为移动机器人导航相关包的集合&#xff0c;实现定位规划避障等相关功能。 整体工作流程为&#xff1a; 1.加载地图 navigation通过map_server加载现有地图。navigation无建图相关包&#xff0c;需另外实现后保存&#xff0c;默认只支持2维地图&#xff0c;其…

[附源码]Python计算机毕业设计Django游戏商城平台论文

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

推荐测试用例管理工具,看这篇就行。

我们在考虑测试用例管理的时候&#xff0c;其实不能单纯考虑测试用管理&#xff0c;因为你的测试用例是需要和需求关联起来的&#xff0c;是需要和 bug 关联起来的。在有些行业&#xff0c;比如汽车、医药&#xff0c;不仅要对需求进行测试&#xff0c;还需要对架构设计、详细设…

某CCF C会议对国内和国外作者实行两套标准, 引27%+中稿者发声!

点击文末公众号卡片&#xff0c;不错过计算机会议投稿信息 本文主要反映轻松参会交流群内UIC22(CCF C类) 的81位国内中稿作者的诉求&#xff08;占UIC22中稿数的27%&#xff09;。目前群内作者们的诉求为&#xff0c;希望国内作者可选择线上参会。因为线下参会有困难&#xff0…

2023年湖北监理工程师报考时间是什么时候?

2023年湖北监理工程师报考时间是什么时候&#xff1f; 监理工程师考试时间虽说是全国统一的&#xff0c;但是监理工程师报名时间不统一&#xff0c;每个省份自行安排报名时间&#xff0c;监理工程师报名时间基本都是在2.3月份开始报名&#xff0c;具体关注每个省人事考试院网站…

文件包含漏洞(原理及介绍)

文件包含漏洞&#xff08;原理及介绍&#xff09; File inclusion&#xff0c;文件包含&#xff08;漏洞&#xff09;。程序开发人员通常出于灵活性的考虑&#xff0c;会将被包含的文件设置成变量&#xff0c;然后动态调用这些文件。但正是因为调用的灵活性导致用户可能调用一…

flex布局子项属性

flex布局子项属性 1、flex属性 源代码 flex属性定义子项目分配剩余空间&#xff0c;用flex来表示占多少份数 flex: number; 填数值&#xff0c;分配剩余空间的占比 2、align-self控制子项自己在侧轴上的排列方式 源代码 align-self属性允许单个项目有…

Semi-Supervised Classification with Graph Convolutional Networks

Semi-Supervised Classification with Graph Convolutional Networks, ICLR, 2017 要点&#xff1a; 1、可扩展的半监督学习方法 2、基于卷积神经网络的有效变体&#xff0c;直接对图进行操作 3、通过谱图卷积的局部一阶近似来激励卷积架构的选择 4、在图的边数上进行线性缩放…

车辆纵向动力学、加速性能和燃料消耗研究(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 车辆纵向动力学方面包括车辆传动系统换挡控制、制动系统的设计与控制以及车辆状态的参数估计;车辆横向动力学方面涉及车辆转向…

lua vm 共享 proto

lua vm共享proto 场景 在skynet中&#xff0c;对于每一个lua服务&#xff0c;实际上就是在snlua上启动了一个lua虚拟机去完成lua逻辑&#xff0c;所以skynet的服务是相互隔离的。 这样就会产生一个问题&#xff0c;多个服务都require同一个lua库&#xff0c;每个服务内都会有…

原生API编写简单富文本编辑器001

原生API编写简单富文本编辑器001 从这一节开始&#xff0c;我们将亲自动手&#xff0c;使用我们之前介绍过的浏览器原生API来实现一个简单的可以处理文本的富文本编辑器。 1. 设计 这一个简单版的编辑器&#xff0c;由于我们是基于原生的API&#xff0c;基于浏览器原生API的…

线性表-双向链表

双向链表 双向链表也叫双向表&#xff0c;是链表的一种&#xff0c;它由多个结点组成&#xff0c;每个结点都由一个数据域和两个指针域组成&#xff0c;数据域用来存储数据&#xff0c;其中一个指针域用来指向其后继结点&#xff0c;另一个指针域用来指向前驱结点。链表的头结…

手动实现SpringBoot日志链路追踪

概述 有时候一个业务调用链场景&#xff0c;很长&#xff0c;调了各种各样的方法&#xff0c;看日志的时候&#xff0c;各个接口的日志穿插&#xff0c;确实让人头大。 模糊匹配搜索日志能解决吗&#xff1f;能解决一点点。但是不能完全呈现出整个链路相关的日志。 那要做到方…

致迷茫的程序员一封信——我的程序生涯

0、开头 大家好&#xff0c;我是罗鹏程&#xff0c;一个很老套的开头&#xff0c;哈哈哈。 这封信姗姗来迟&#xff0c;与其说是一封信&#xff0c;不如说是来听听我的故事。从2020开始&#xff0c;收到过很多网友的问题&#xff0c;职业的选择&#xff0c;是做大数据还…

Intellij Idea生成含有META-INF的jar包

新建一个module&#xff0c;如果不会新建的话&#xff0c;参考&#xff1a;Intellij Idea新建module。命名为jar_test。 新建一个java类DateUtil&#xff0c;可以输出当前时间对应的是星期几。代码如下&#xff1a; import java.util.Calendar; import java.util.Date;publi…

编译原理 1 - 概述、形式语言

第1章 引论一些概念1.3 编译程序的总体结构1.4 编译程序的组织第二章 形式语言2.1 文法描述中的基本概念上下文无关文法第1章 引论 一些概念 机器语言&#xff1a;以0、1代码表示的机器指令所构成的语言 每一个具体的计算机系统都具有自己的指令系统 汇编语言&#xff1a;用助…

shiro

概述 shiro是什么 Apache Shiro 是一个功能强大且易于使用的 Java 安全(权限)框架。Shiro 可以完成&#xff1a;认证、授权、加密、会话管理、与 Web 集成、缓存 等。借助 Shiro 您可以快速轻松地保护任何应用程序——从最小的移动应用程序到最大的 Web 和企业应用程序。 为…