简介
Sentry在自动化运维中十分常用。它是一个实时事件日志记录和汇集的平台。它能够对程序运行中产生的错误信息进行抓取。通过email来告知用户。
在网站的运行过程中,可能会有一些程序错误发生。技术人员往往是在用户报告错误后去查阅日志文件,在数以万计的记录中查询具体错误原因既费时又费力,而且无法在错误发生时及时获得错误报告。 Sentry则能将服务器运行过程中的错误在第一时间按要求分类提取并通知运维工程师,大大提高了运维效率。
sentry 架构

mac docker 安装
略
sentry 部署
- docker 启动redis
docker run -d --name sentry-redis redis
# 如已有容器,可直接启动
docker start ...
- docker 启动postgresql
docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry postgres
# 如已有容器,可直接启动
docker start 2aa82db3a78a
- 生成sentry secret key
docker run --rm sentry config generate-secret-key
- 生成数据库表结构
docker run -it --rm -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry upgrade
在执行快结束时,终端会提示你创建管理员的邮箱和密码。按照说明输入即可
- 启动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
- 启动sentry worker 和 cron, 用于接收issues
$ 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
- 登录web网站
地址:
127.0.0.1:9000

-
创建project
首页
选择相应的程序,输入project名字
创建页面1

点击Got it!
然后可以进去监控页面等待issues了

-
获取DSN,客户端捕获错误
project setting 页面

然后建立一个client ,发送错误通知
from raven import Client
cc = Client('http://2f9c9548739049d8bf6666c320eab13c:1d4600e39f754b94997abeec513985f9@127.0.0.1:9000/5')
try:
1 /0
except Exception:
cc.captureException()

补充
- DSN可能为空
需要设置sentry服务的域名
进入sentry shell,方法
# 进sentry sever 服务的docker 命令行页面
docker exec -it my-sentry /bin/bash
# 进入sentry shell
sentry shell
执行
>>> from sentry import options
>>> options.set("system.url-prefix", "http://127.0.0.1:9000")
True
设置完成后重新查看Client Key,复制第二个DSN
-
运行的docker 容器
docker 服务 列表
网友评论