• Sentry异常捕获平台


    一、概述

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

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

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

    二、环境搭建

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

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

    环境说明

    ip地址:192.168.31.145
    docker版本:19.03.12

    配置:2核4g

    注意:推荐内存不能低于3g

    部署

    1. 启动一个 Redis 容器:

    docker run -d --name sentry-redis redis

    2. 启动一个 Postgres 容器

    docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry postgres

    3. 生成一个密钥,用于在后面所有sentry容器之间握手。

    docker run --rm sentry config generate-secret-key

    输出:

    ^th-r%5nts5a9@eiyjgbxbb0_=n6(oefl!jt+8j8cg_%0r@k@t

    请记住这串密钥,在后面的docker命令中,密钥需要以环境变量形式传入。

    4. 连接Redis、Postgres和Sentry,运行后会自动执行初始化操作:

    docker run -it --rm -e SENTRY_SECRET_KEY='^th-r%5nts5a9@eiyjgbxbb0_=n6(oefl!jt+8j8cg_%0r@k@t' --link sentry-postgres:postgres --link sentry-redis:redis sentry upgrade

    注意:根据实际情况修改SENTRY_SECRET_KEY的值。

    输出:

    ...
    Would you like to create a user account now? [Y/n]: y
    Email: 12345678@qq.com
    Password: 
    Repeat for confirmation: 
    User created: 12345678@qq.com

    注意:这里一定要创建一个默认账号,否则无法登陆后台。账号名必须是一个邮箱地址,方便以后密码找回。

     

    5. 启动 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='^th-r%5nts5a9@eiyjgbxbb0_=n6(oefl!jt+8j8cg_%0r@k@t' --link sentry-redis:redis --link sentry-postgres:postgres sentry

    注意:根据实际情况修改SENTRY_SECRET_KEY的值。

    6. 默认配置中需要Celery,因此启动一个Celery 主节点与执行节点(worker节点可按需多启几个):

    docker run -d --name sentry-cron -e SENTRY_SECRET_KEY='^th-r%5nts5a9@eiyjgbxbb0_=n6(oefl!jt+8j8cg_%0r@k@t' --link sentry-postgres:postgres --link sentry-redis:redis sentry run cron
    
    docker run -d --name sentry-worker-1 -e SENTRY_SECRET_KEY='^th-r%5nts5a9@eiyjgbxbb0_=n6(oefl!jt+8j8cg_%0r@k@t' --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker

    注意:根据实际情况修改SENTRY_SECRET_KEY的值。

    三、Sentry配置

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

    切换语言为中文

    点击用户设置

    选择简体中文

     点击保存,然后刷新页面,效果如下:

    创建项目

    以python为例

     效果如下:

    根据提示,需要安装模块

    pip install --upgrade sentry-sdk==0.10.2

    新建一个test.py,内容如下:

    # !/usr/bin/python3
    # -*- coding: utf-8 -*-
    import sentry_sdk
    sentry_sdk.init("http://bbda9844af0a4359b77c364576dfdef4@192.168.31.145:9000/1")
    division_by_zero = 1 / 0

    执行输出:

    Traceback (most recent call last):
      File "E:/python_script/demo/test.py", line 5, in <module>
        division_by_zero = 1 / 0
    ZeroDivisionError: division by zero

    返回主页,查看信息

     查看详情

     注意:这里可以看到是具体哪一行报错了,感觉很不错的样子。

    本文参考链接:

    https://www.jianshu.com/p/ca4ad23a2dd6

    http://sinhub.cn/2019/07/getting-started-guide-of-sentry/

    https://blog.csdn.net/socct_yj/article/details/105506710

  • 相关阅读:
    静态代码块--》非静态代码块--》构造方法
    谈谈SQL server的 worker threads-----微软亚太区数据库技术支持组 官方博客
    SQL SERVER SQLOS的任务调度--微软亚太区数据库技术支持组 官方博客
    线程池 数据库连接池 内存池
    SQL Server的thread scheduling(线程调度)
    ookla 网络上传下载 PING 测试
    mysql 监控工具
    SQL Server 2000 ——系统表和系统视图
    SQL Server 2000 ——DBCC命令
    几个未公开的 DBCC 命令
  • 原文地址:https://www.cnblogs.com/xiao987334176/p/14601488.html
Copyright © 2020-2023  润新知