本文包括Sentry平台的介绍,以及环境搭建两部分,更多细节请查阅官方文档。

简介

Sentry是一个实时事件的日志聚合平台。它专门监测错误并提取所有有用信息用于分析,不再麻烦地依赖用户反馈来定位问题。

Sentry发展多年,几乎没有同类产品可与其媲美。它能覆盖大部分的主流编程语言与框架,很适合应用到实际生产环境中采集异常日志。

最近我在设计持续交付流程过程时,公司一位前辈提到这个工具与用法。简单搭建并使用之后,基本确定在CD的灰度发布环节应用Sentry:若在灰度过程中获取到异常则触发灰度结束,将可能出现的异常由
“上线-客户发现问题- 反馈问题-运维手动回滚”
变为
“灰度-Sentry捕获异常-自动停止灰度”,杜绝了回滚带来的不好形象,同时也能缩短问题发现的周期。

环境搭建

Sentry可以使用Python2.7搭建,也可以利用Docker直接部署。考虑到目前大部分用户已经使用Python3,直接安装Sentry可能弄乱Python环境,因此强烈推荐使用Docker搭建Sentry环境

以下是Docker搭建Sentry平台的步骤,请保证每一步执行完成:

  1. 启动一个 Redis 容器:
$ docker run -d --name sentry-redis redis
  1. 启动一个 Postgres 容器
$ docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry postgres
  1. 生成一个密钥,用于在后面所有sentry容器之间握手。请记住这串密钥,在后面的docker命令中,密钥需要以环境变量形式传入。
$ docker run --rm sentry config generate-secret-key
  1. 连接Redis、Postgres和Sentry,运行后会自动执行初始化操作:
$ docker run -it --rm -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry upgrade
  1. 启动 Sentry Server,同时添加端口映射。Sentry的端口为9000,可以使用 -p 9000:9000 参数,在启动后可以通过访问http://localhost:9000http://host-ip:9000进入Sentry的web管理页面:
$ docker run -d --name my-sentry -p 9000:9000 -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-redis:redis --link sentry-postgres:postgres sentry
  1. 默认配置中需要Celery,因此启动一个Celery 主节点与执行节点(worker节点可按需多启几个):
$ docker run -d --name sentry-cron -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry run cron
$ docker run -d --name sentry-worker-1 -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker

Sentry配置

进入Web管理页面后,按照提示配置管理员账号密码与其他信息。注意:URL填写你所访问的地址,如http://host-ip:9000

配置成功后,按顺序进入Project-internal-Setting页面, 选择右侧Release标签

选择Release

复制WEBHOOK中的curl命令,打开终端发送请求,即可在页面上看到测试的错误日志信息:

捕获到的异常详情

参考

作者:严北
链接:https://www.jianshu.com/p/ca4ad23a2dd6
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Sentry异常捕获平台的更多相关文章

  1. 电脑小白学习软件开发-C#的选择语句、异常捕获,进攻程序员

    写代码也要读书,爱全栈,更爱生活.每日更新原创IT编程技术及日常实用视频. 我们的目标是:玩得转服务器Web开发,搞得懂移动端,电脑客户端更是不在话下. 不得不说,C#这门语言是小编以为最好的语言.其 ...

  2. 异常捕获 崩溃 Bugly ACRC 简介 总结 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  3. .NET 基础 一步步 一幕幕[数组、集合、异常捕获]

    数组.集合.异常捕获 数组: 一次性存储多个相同类型的变量. 一维数组: 语法: 数组类型[] 数组名=new 数组类型[数组长度]; 声明数组的语法: A.数据类型 [] 数组名称= new 数据类 ...

  4. MVC 好记星不如烂笔头之 ---> 全局异常捕获以及ACTION捕获

    public class BaseController : Controller { /// <summary> /// Called after the action method is ...

  5. atitit.js浏览器环境下的全局异常捕获

    atitit.js浏览器环境下的全局异常捕获 window.onerror = function(errorMessage, scriptURI, lineNumber) { var s= JSON. ...

  6. C#中的那些全局异常捕获

    1.WPF全局捕获异常     public partial class App : Application     {         public App()         {    // 在异 ...

  7. Spring-MVC开发之全局异常捕获全面解读

    异常,异常 我们一定要捕获一切该死的异常,宁可错杀一千也不能放过一个! 产品上线后的异常更要命,一定要屏蔽错误内容,以免暴露敏感信息! 在用Spring MVC开发WEB应用时捕获全局异常的方法基本有 ...

  8. JavaScript异常捕获

    理论准备 ★   异常捕获 △ 异常:当JavaScript引擎执行JavaScript代码时,发生了错误,导致程序停止运行: △ 异常抛出:当异常产生,并且这个异常生成一个错误信息: △ 异常捕获: ...

  9. SQLServer异常捕获

    在SQLserver数据库中,如果有很多存储过程的时候,我们会使用动态SQL进行存储过程调用存储过程,这时候,很可能在某个环节就出错了,但是出错了我们很难去跟踪到出错的存储过程,此时我们就可以使用异常 ...

随机推荐

  1. JavaScript addEventListener()事件监听方法

    addEventListener()方法将事件处理程序附加到指定的元素. addEventListener()方法将事件处理程序附加到元素,而不覆盖现有的事件处理程序. 您可以向一个元素添加许多事件处 ...

  2. js 设计模式——单例模式

    单例模式 保证一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式是一种常用的模式,有一些对象我们往往只需要一个,比如线程池.全局缓存.浏览器中的 window 对象等. JavaScript ...

  3. cent OS 7 安装谷歌浏览器

    我直接写一个shell 脚本,  install_google.sh,  bash 命令直接运行就好, 脚本内容如下: (切换root用户执行) set -e  # 出错即退出 echo " ...

  4. [b0018] python 归纳 (四)_运算符重载

    # -*- coding: UTF-8 -*- """ 测试运算符重载 加法 总结: python 运算符表达式其实都是调用 类中方法 __xxx__ + <--- ...

  5. shell脚本按当前日期输出日志

    shell脚本基本技能是设置变量,输出信息.如下: sh脚本输出到控制台 将以上脚本保存到test.sh脚本文件中,并赋予可执行权限:sudo chmod +x test.sh 执行脚本:bash t ...

  6. [Linux]F5负载均衡器

    F5负载均衡器是硬件的负载均衡设备 F5配置最简单负载均衡,需要配置的参数有Node(节点).Pool(资源池).和Virtual Server(虚拟服务器),它们的关系是,先配置Node,然后配置V ...

  7. docker研究-4 docker镜像制作

    这次实验以centos镜像为基础镜像进行相关docker镜像制作. 1. 下载centos镜像 [root@localhost ~]# docker pull centosUsing default ...

  8. xenserver 添加和卸载硬盘

                最近在浪潮服务器上安了xenserver系统,创建虚拟机,没注意磁盘超负载就重启了服务导致各种坑,一言难尽,忧伤逆流成河啊,所以准备将各种操作整理总结记录下,持续更新ing~~ ...

  9. 201777010217-金云馨《面向对象程序设计Java》第四周总结学习

    2019面向对象程序设计(Java)第4周学习指导及要求 项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/ ...

  10. 02-numpy-笔记-amin

    >>> a = np.arange(4).reshape((2,2)) >>> a array([[0, 1], [2, 3]]) >>> np. ...