本文包括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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最新文章

  1. Struts2中获取servlet API的几种方式
  2. Zookeeper安装,Zookeeper单机模式安装
  3. 错误 未能找到类型或命名空间名称 (是否缺少 using 指令或程序集引用?)
  4. C#版 Socket编程(最简单的Socket通信功能)
  5. MT写的对URL操作的两个方法
  6. openCV 直方图统计
  7. Spider Studio 数据挖掘集成开发环境
  8. MSSQLServer的备份与还原
  9. Linux System Programming note 8 ——File and Directory Management
  10. js控制文本框仅仅能输入中文、英文、数字与指定特殊符号
  11. c语言中实现从0-1的随机数输出
  12. 【Zabbix】Zabbix-agent自动化脚本
  13. wpf中插入winform控件并获取句柄
  14. 【BZOJ4715】囚人的旋律
  15. 使用jfreechart生成柱状图、折线图、和饼状图
  16. Linux_CentOS-服务器搭建 &lt;七&gt;
  17. 计算请假天数JavaScript方法
  18. AWS CSAA -- 04 AWS Object Storage and CDN - S3 Glacier and CloudFront(一)
  19. 解决Android 6.0(api 23) SDK,不再提供org.apache.http.*
  20. LA 4287 等价性证明(强连通分量缩点)

热门文章

  1. Java常用类Date相关知识
  2. CHIP8模拟器的python3实现-3-指令实现
  3. matlab 基础语法
  4. Ubuntu16.04的搭建l.2.t.p.d(宿舍访问公司内网)
  5. Android 实现系统分享
  6. 多线程学习笔记(三) BackgroundWorker 暂停/继续
  7. springcloud学习之路: (四) springcloud集成Hystrix服务保护
  8. JS高阶---事件循环模式(事件轮询)
  9. 张兴盼-201871010131《面向对象程序设计(Java)》第七周学习总结
  10. python的requests库