最近工作上的Django项目,使用了Sentry来做错误日志的监控报警,因为错误日志太多,排查不容易,所以还不如来个主动报警,这样定位排错也很方便,而实际使用情况来看,确实是超级方便的!Sentry在错误监控领域已经是一个很成熟的应用了,支持各种语言多种服务程序的日志监控,如下图:
关于更详细的介绍,可以访问官网查看:https://sentry.io/
Sentry安装
Sentry的安装部分,我这里采用的额时Docker容器部署,关于Docker的安装可以看我的另一篇文章
这里具体介绍怎么部署容器版Sentry。部署步骤
- docker拉取redis postsql 和sentry
docker pull redis
docker pull postgres
docker pull sentry
- 启动redis和sentry
docker run -d --name sentry-redis redis
docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry postgres
- 启动Sentry相关
docker run --rm sentry config generate-secret-key # 得到secret-key,然后把key复制到下面四行的单引号中
#下面这步会提示输入邮箱和密码
docker run -it --rm -e SENTRY_SECRET_KEY='' --link sentry-postgres:postgres --link sentry-redis:redis sentry upgrade
docker run -d -p 9000:9000 --name my-sentry -e SENTRY_SECRET_KEY='' --link sentry-redis:redis --link sentry-postgres:postgres sentry
docker run -d --name sentry-cron -e SENTRY_SECRET_KEY='' --link sentry-postgres:postgres --link sentry-redis:redis sentry run cron
docker run -d --name sentry-worker-1 -e SENTRY_SECRET_KEY='' --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker
访问测试
经过上面的步骤,Sentry已经算是部署完毕了,然后打开浏览器,对应的ip地址加9000端口即可访问。打开显示如下图:
登录之前设置好的邮箱和密码即可登入系统。
新建项目以及基本设置
- 修改系统语言
在左侧的user_setting里面可以修改语言为中文简体
- 新建项目
在首页点击项目,会出现很多项目模板,选择Django即可
Django接入Sentry
Django接入Sentry相对来说比较简单,我们这里采用安装Sentry客户端的方式接入。
# 首先安装raven
pip install raven
然后在settings文件中的INSTALLED_APPS里注册Sentry模型
INSTALLED_APPS = [
...
# Sentry错误日志监控系统
'raven.contrib.django.raven_compat',
]
随后我们返回Sentry网页,点击创建的项目,然后点击齿轮设置图标,点击“客户端密钥(DSN)”,复制该项目的DSN
然后再将复制的Sentry DSN粘贴在Settings配置文件中
# Sentry错误日志监控系统
RAVEN_CONFIG = {
'dsn': 'http://1283djasssdv2312d12bi21dib1341@192.168.1.124:9000/2',
}
就这样Django便接入了Sentry,我们在项目里新建一个test_sentry.py文件测试下错误是否能被捕获,内容如下:
dsn = "http://1283djasssdv2312d12bi21dib1341@192.168.1.124:9000/2"
from raven import Client
Client = Client(dsn)
try:
1 / 0
except ZeroDivisionError:
Client.captureException()
执行后去Sentry网页查看,如果出现下图,就说明Sentry起作用了!(因为我已经跑了一段时间了,所以页面有很多别的错误,请忽略~~~)
我们点击这条记录进去,一起看看Sentry有多强大方便,访问信息、错误栈全都一览无余!太方便了!
在接下来,我们来接入飞书进行实时告警
接入飞书告警
Sentry有一点好处就是内置了webhook方法,只要将外部申请好的webhook链接填入Sentry对应的设置,便可以实现错误日志实时告警!
飞书捷径机器人设置告警捷径
飞书时字节跳动旗下的办公协同软件,面世以来饱受赞誉,功能非常强大,公司里也在用,办公协同很牛,yyds~,推荐。
我们要用到的时飞书的“飞书捷径”机器人,具体操作可以看官方文档,相信绝对比我讲的清楚,点击如何在飞书捷径中使用 Sentry
配置Sentry webhook
首先我们要设置一下Sentry的报警规则,也就是定义项目错误在什么情况下触发报警,以及报警方式,。点击项目的设置栏,点击“警报”,进入规则标签页,点击新建规则:
我们需要定义的点有3个:
- “An event is seen” 条件,任何选项
- 报警措施,Send a notification via webhook
- Perform these actions at most once every 5分钟 for an issue (修改报警间隔)
这里新建的时Sentry报警的规则,然后点击保存即可,返回即可看到我们刚才新建的规则
然后我们获取一下上面设置的飞书捷径的webhook,就在下图示例位置:
最后,我们只需要将飞书捷径的webhook链接填入到Sentry网页设置中,具体位置在项目的设置选项最底部,点击webhook:
填入链接后,点击save Changes
测试告警
我们现在来测试一下告警是否成功,点击上图的webhook设置页面,右上角有一个“Test Plugin”,Sentry就会往飞书捷径机器人发送一条告警,如下图所示:
后记
到这一步,整个配置就完成了,其实Sentry能做的还有很多,感兴趣的话,你可以自己深入了解。
版权属于:Jolly
本文链接:https://totoro.site/index.php/archives/126/
关于转载:原创文章,禁止转载