无论作为新手还是老手程序员在程序的开发过程中,代码运行时难免会抛出异常,而且项目在部署到测试、生产环境后,我们便不可能像在开发时那样容易的及时发现处理错误了。一般我们都是在错误发生一段时间后,错误信息才会传递到开发人员那里,然后一顿操作查看程序运行的日志,就熟练使用awk和grep去分析日志,但是往往我们会因为日志中缺少上下文关系,导致很难分析真正的错误是什么。

Sentry由此应运而生成为了解决这个问题的一个很好的工具,设计了诸多特性帮助开发者更快、更方面、更直观的监控错误信息。

关于日志管理

随着不断的开发应用变得越来越复杂,输出日志五花八门,有print的,有写stdout的,有写stderr的, 有写logging的,也有自定义xxx.log的。那么这将导致平台应用日志分布在各个地方,无法统一管理。而且可能用的还不止一种开发语言,想规范和统一日志不是一件容易的事。所以这也是我们为什么使用Sentry的原因,

Sentry的优点

Sentry是一个集中式日志管理系统。它具备以下优点:

  1. 多项目,多用户
  2. 界面友好
  3. 可以配置异常触发规则,例如监控到程序出现异常后发送邮件
  4. 支持主流语言接口,本篇博客值介绍在python中的应用,其他语言自行阅读官方文档

Sentry目前支持的语言众多,下面展示一部分:

安装和使用

Sentry支持部署到本地服务器,本博文不做过多介绍,可参照官方文档进行部署:

本地部署官方文档

对于大所属个人和小型企业推荐使用Sentry官方提供的云服务,进行快速搭建属于自己的错误日志监控系统,只需要去官网进行注册一个Sentry账号即可

1、注册新账号

官网地址

注册新账号地址

Sentry免费版可用功能:

  1. 每月10k 错误日志上限
  2. 支持所有平台和语言,功能无缩水
  3. 无限项目数量,仅单用户访问,不提供团队功能

如果想享受更多功能和服务可以看这里:付费版价格策略

2、安装SDK

Sentry通过在应用程序运行时中使用SDK来捕获数据。这些是特定于平台的,允许Sentry深入了解您的应用程序的工作方式。

使用pip以下命令安装Python SDK :

pip install --upgrade sentry-sdk==0.10.2

3、配置SDK

在Sentry中完成项目设置后,您将获得一个我们称之为DSN数据源名称的值。它看起来很像标准URL,但它实际上只是Sentry SDK所需配置的表示。它由几部分组成,包括协议,公钥,服务器地址和项目标识符。

在应用程序的设置中尽早导入并初始化Sentry SDK:

import sentry_sdk
sentry_sdk.init("https://ae5f2eaff8404dbdb2e0d75f7466449d@sentry.io/我的") # 注册账号后在文档中自动生成

4、捕捉你的第一个异常

您可以通过在应用程序中插入除以零表达式来导致Python错误:

division_by_zero = 1 / 0

在云监控系统中显示的错误信息:

5、在django中的使用

安装:sentry-sdk

pip install --upgrade 'sentry-sdk==0.10.2'

要配置SDK,请在settings.py文件中使用Django集成对其进行初始化:

import sentry_sdk
from sentry_sdk.integrations.django import DjangoIntegration sentry_sdk.init(
dsn="https://ae5f2eaff8404dbdb2e0d75f7466449d@sentry.io/我的",
integrations=[DjangoIntegration()]
)

您可以通过创建触发错误的路由轻松验证Sentry安装:

from django.urls import path

def trigger_error(request):
division_by_zero = 1 / 0 urlpatterns = [
path('sentry-debug/', trigger_error),
# ...
]

访问此路由将触发程序将捕获的错误。

一旦你完成上面的配置,以后系统发生的所有错误异常都会被自动记录到Sentry,通过错误日志监控平台就可以看到对应的日常,并且一旦发生异常会发送邮件到你的邮箱,同样可以看到异常的错误描述信息,更多详细使用教程你请参照官网文档

Sentry错误日志监控你会用了吗?的更多相关文章

  1. 运维开发实践——基于Sentry搭建错误日志监控系统

    错误日志监控也可称为业务逻辑监控, 旨在对业务系统运行过程中产生的错误日志进行收集归纳和监控告警.似乎有那么点曾相识?没错... 就是提到的“APM应用性能监控”.但它又与APM不同,APM系统主要注 ...

  2. 第四百零五节,centos7下搭建sentry错误日志服务器,接收python以及Django错误,

    第四百零五节,centos7下搭建sentry错误日志服务器,接收python以及Django错误, 注意:版本,不然会报错 Docker >=1.11Compose >1.6.0 通过d ...

  3. sentry_sdk 错误日志监控 Flask配置

    https://www.cnblogs.com/sui776265233/p/11348169.html 开源的平台,为小服务日志监控统一管理 pip install --upgrade sentry ...

  4. tomcat错误日志监控脚本

    #!/usr/bin/env python #-*-coding:utf-8-*- #CreateDate:2017/04/14 #Author:Eivll0m #ScriptName:monitor ...

  5. Docker手动搭建sentry错误日志系统

    Sentry介绍 在开发过程中,我们通过debug来排查bug,并且使用logging来记录系统的错误.但是logging有很多不足: 必须登陆到服务器查看日志文件 需要主动去查询 输出日志方式无法把 ...

  6. centos7下搭建sentry错误日志服务器

    1. docker 安装(方法一) 1.确保yum packages 是最新的 $ sudo yum update 2.添加yum repo $ sudo tee /etc/yum.repos.d/d ...

  7. 前端异常日志监控 - 使用Sentry

    背景 现在的前端项目越来越复杂,在不同的客户端会产生各种在开发人员机器上不会出现的问题.当用户报告一个问题给开发人员的时候,开发人员无法直接定位问题.在此前,听过一次鹅厂的前端人员,他们对QQ里面的网 ...

  8. 一种轻量级的微信小程序日志监控的方法

    今天一个活动要写个H5,明天一个功能要用小程序,天天都在写bug.用户反馈小程序用起来有问题还特么还不知道到底出了啥bug,反馈多了,老板要扣工资了!看来挖了太多坑不填也不行,程序异常还是要主动追踪, ...

  9. zabbix的日志监控

    前提条件是该日志文件对于启动zabbix agent进程的用户开启了可读权限,而且该日志的路径对该用户开方x权限,让能取到这个日志文件 第一个参数可以不用引号,前提是zabbix用户可以进入文件路径, ...

随机推荐

  1. web应用分页

    1. 场景描述 目前大部分的应用程序中都会用到分页功能,以便减少前端浏览器及后台服务器的压力,以及其他方面的考虑. (1)分页从概念上可分为逻辑分页和物理分页,逻辑分页主要是通过应用程序(前端或者后端 ...

  2. shell_umask用法

    我曾经用touch命令创建一个文件script,默认的权限是"rw-r- -r- -",有的朋友就有可能问为什么是这种组合?其实,这正是umask命令捣的鬼.在linux上输入:u ...

  3. 判断小端大端(C实现)

    C程序中的大端小端概念可以参见上一篇文章 如何区分小端和大端.本文重点讨论如何用C程序来判断当前系统是大端还是小端. 判断大端小端的程序如下: #include <stdio.h> int ...

  4. [sublime3] 在linux下的终端中使用sublime3打开文件

    通过ln命令创建软连接实现 echo $PATH 查看路径 例 我的路径是: /home/rh/anaconda3/bin:/home/rh/bin:/home/rh/.local/bin:/usr/ ...

  5. Android系列教程之前言

    内容转载自我自己的博客 目前安卓的主流开发语言是Java,在正式开始Android系列的教程之前,需要知道一些基本内容 Android介绍 Android['ændrɔid] 是一个基于Linux 内 ...

  6. Unity3D热更新之LuaFramework篇[07]--怎么让unity对象绑定Lua脚本

    前言 在上一篇文章 Unity3D热更新之LuaFramework篇[06]--Lua中是怎么实现脚本生命周期的 中,我分析了由LuaBehaviour来实现lua脚本生命周期的方法. 但在实际使用中 ...

  7. web设计_3_可伸缩的导航栏

    1. HTML5构建一个选项卡,需要<nav>标签包围一个无序列表,也可以添加role属性告诉辅助设备(如屏幕阅读器)这个元素所扮演的角色. 绝对不要基于图片的导航,对搜索引擎不友好,更新 ...

  8. textarea的拖拽怎么解决

    textarea文本域在页面中是可以拖动的,即时你给了固定的宽度和高度,但这在我们页面布局中,使我们不需要的,因为可拖拽很多时候会影响我们页面的布局和整体的美观度. css3提供了一个resize属性 ...

  9. istio使用教程

    kubernetes各版本离线安装包 安装 安装k8s 强势插播广告 三步安装,不多说 安装helm, 推荐生产环境用helm安装,可以调参 release地址 如我使用的2.9.1版本 yum in ...

  10. SpringBoot的yml配置

    Spring Boot的yml配置 #开发配置 spring: data: solr: host: http://localhost:6789/solr/mote mvc: view: # 页面默认前 ...