博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sentry 部署踩坑记
阅读量:7174 次
发布时间:2019-06-29

本文共 2428 字,大约阅读时间需要 8 分钟。

背景

Open-source error tracking that helps developers monitor and fix crashes in real time. Iterate continuously. Boost efficiency. Improve user experience.

总之是一个听起来非常牛逼的开源的报错收集服务,目前公司里有一个比较奇怪的现象,server、app都有对应的监控系统,唯独H5没有完美的解决方案。可能是H5诡异的case太多了,而且追查还需要依赖sourcemap,麻烦。但能及时获取页面报错的工具,深受前端开发者的喜爱,对于线上业务的稳定性也有很大帮助。于是重蹈覆辙,踩在巨人肩膀上,搭建一套错误监控平台。后期根据效果评估进行深入二次封装开发,先从踩坑说起。

踩的比较结实的坑

1. postgresql

>  docker exec -it onpremise_postgres_1 bashroot@0c6ca0eb2f54:/#  psql -h 127.0.0.1 -d postgres -U postgrespostgres=# SELECT * FROM xxx复制代码

2. 按照步骤安装完 报错

第一步

# run sentry shelldocker-compose run --rm web shell复制代码

第二步

3. 没有提示创建第一个用户

docker-compose run --rm web upgrade复制代码

理论上upgrade这个步骤会提示创建superuser,但是有的时候不会需要手动创建

docker-compose run --rm web createuser复制代码

4.Root URL

这个坑踩结实了!!一进来就让设置Root URL这个找了一天,没找到怎么修改。最后发现配置链接可以修改

  • 另外推荐一个比较好的做法
    • 配置1:
    • 配置2: 然后nginx proxy 到http://1.2.3.4:9000/
    • 配置3【强烈推荐】: 这样跟便于配置nginx

5.开启sourcemap

核心:

  • 编译打开sourcemap,
  • 将编译完成的sourcemap & 静态资源 , 传到sentry服务器上面
  • 创建版本号(可以创建一个,也可以创建n个,可以通过平台或者sentry-cli管理版本号)
# 组织:sentry# 项目:internal# 版本号:xx@1.0.1sentry-cli releases -o sentry -p internal new xx@1.0.1复制代码

上传sourcemap

# 组织:sentry# 项目:internal# 版本号:xf@1.0.1# 静态资源sentry服务器位置:/root/dist/# 线上静态资源访问位置(除了域名之外的URI,这里是 https://xxx.xxx.xxx/js/index.js,指的就是 ):~/js/# --rewrite 是覆盖之前的版本sentry-cli releases -o sentry -p internal files xf@1.0.1 upload-sourcemaps /root/dist/ --url-prefix '~/js/' --rewrite复制代码

6.Sentry 基础安装对依赖环境的空间要求

答:至少1G 存储

7.Sentry 数据存在什么地方

  • docker数据库镜像约1G
  • 数据库初始化占用空间约 20G
  • 单条数据约121Kb
  • 读取目前排行前6的表,也是报错信息主要存储的地方(如下表)
  • 目前一共28条报错记录,以存储前6个表数据总和*2来估算空间,单条数据,对应PostgreSQL存储为:121k(1074k * 2 / 28)
表名 Size 数据量 平均每条记录大小
nodestore_node 528k 96 5.5k
sentry_groupedmessage 328k 28 11.7k
sentry_eventtag 280k 822 0.34k
sentry_messagefiltervalue 216k 283 1k
sentry_filtervalue 192k 64 3k
sentry_message 160k 96 1.66K

// 查看占用空间排行前5的表SELECT    relname AS "relation",    pg_size_pretty (        pg_total_relation_size (C .oid)    ) AS "total_size"FROM    pg_class CLEFT JOIN pg_namespace N ON (N.oid = C .relnamespace)WHERE    nspname NOT IN (        'pg_catalog',        'information_schema'    )AND C .relkind <> 'i'AND nspname !~ '^pg_toast'ORDER BY    pg_total_relation_size (C .oid) DESCLIMIT 5;复制代码

8.一台物理机如何部署多个实例

  • onpremise 多实例
    • 代码部署服务到不同路径下面,多次根据git安装提示进行安装
  • 同一台机器上报的服务支持多端口?
    • 很好,支持多端口配置,互不影响
    • 数据存储存储存到了哪儿?多个数据库中 ,仔细看NAMES
    • SELECT view FROM sentry_groupedmessage; 查看具体报错
  • nginx负载均衡?
    • 云本身有负载均衡,但是无法实现一个负载均衡对应一台机器上的多台实例
    • 单台上面nginx实现负载均衡,对应到实例

转载地址:http://nrdzm.baihongyu.com/

你可能感兴趣的文章
tomcat之 Tomcat 7.0.78 单机多实例配置
查看>>
2018年总结
查看>>
34个漂亮的应用程序后台管理界面
查看>>
java JDK6的可变参数
查看>>
初入职场程序员的五大钻石法则
查看>>
Node.js学习笔记(一)概述
查看>>
split的3种方法
查看>>
忽略PNG透明区域的事件(AS/Flash)
查看>>
文本框只能输入正整数(大于0的整数)代码
查看>>
一步一个脚印学习WCF系列之WCF概要—WCF服务的创建与调用HelloWorld实例,通过配置文件方式(六)...
查看>>
只需简单一步,android自带的示例程序 BluetoothChat 变蓝牙串口助手
查看>>
在WIN7下安装运行mongodb
查看>>
(C#)与Windows用户账户信息的获取
查看>>
thrift之TTransport层的内存缓存传输类TMemoryBuffer
查看>>
使用pull方式解析xml文件示例:
查看>>
学习jQuery的免费资源:电子书、视频、教程和博客
查看>>
找出数列中个数大于总数一半的元素(编程之美2.3)
查看>>
断路器(CircuitBreaker)设计模式
查看>>
SQL中利用DMV进行数据库性能分析
查看>>
讨论:程序员高手和菜鸟的区别是什么?
查看>>