sentry是什么?
sentry是一个用来收集项目报错信息的系统, 支持多种编程语言, 包括web项目或者脚本项目.
搭建要求
服务器要求配置很高, 最好是4核8G内存
如何搭建
- 安装docker
sudo apt-get update $ sudo apt-get install wget wget -qO- https://get.docker.com/ | sh curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://4031ebb7.m.daocloud.io sudo service docker restart
- 安装docker-compose
sudo pip install -U docker-compose
- 搭建sentry
git clone https://github.com/getsentry/onpremise.git cd onpremise mkdir -p data/{sentry,postgres} cp -n .env.example .env
- 退出终端 再进去 否则会报错DOCKER_HOST有问题
5.
docker-compose build docker-compose run --rm web config generate-secret-key # 如果执行报错, 根据报错信息执行 docker volume create --name=sentry-postgres docker volume create --name=sentry-data
- 将最后一步生成的secret-key放到vim docker-compose.yml. 注意缩进 同时配置通知电子邮件的发件人
environment: SENTRY_SECRET_KEY: otw&skv58ov570sd3z5vke*kn#m4r-aqgaue*903q&r1m4unbt SENTRY_MEMCACHED_HOST: memcached SENTRY_REDIS_HOST: redis SENTRY_POSTGRES_HOST: postgres SENTRY_EMAIL_HOST: smtp SENTRY_SERVER_EMAIL: ' your username' SENTRY_EMAIL_HOST: 'smtp.partner.outlook.cn' # 发件的smtp地址 SENTRY_EMAIL_PORT: 25 SENTRY_EMAIL_USER: 'your username' SENTRY_EMAIL_PASSWORD: 'your password' SENTRY_EMAIL_USE_TLS: 'true'
- 配置url-prefix地址, 防止后面DSN为空. vim config.yml. 添加地址
system.url-prefix: http://10.10.41.106:9000
- 启动
docker-compose run --rm web upgrade docker-compose up -d
其他QA
Q: 现在每个报错和error级别的日志都会被sentry捕获, 如果想忽略某个logger怎么办?
A: 想忽略的文件可以用
import logging
logger = logging.getLogger("app.xxx")
通过sentry_sdk可以设置忽略什么样的logger
from sentry_sdk.integrations.logging import ignore_logger
ignore_logger("app.xxx")
Q: 如果项目触发某个异常, 想忽略某个特定的异常怎么办? 或者想忽略本地开发环境触发的异常?
A: 可以设置一个自定义函数来解决.
import sentry_sdk
def is_debuging():
return len(sys.argv) == 1 and sys.argv[0].startswith('/Users/chenzhang/PycharmProjects')
def before_send(event, hint):
if 'exc_info' in hint:
exc_type, exc_value, tb = hint['exc_info']
# 设置忽略自定义异常
if isinstance(exc_value, Response502Exception):
return None
# 设置忽略本地开发环境
if is_debuging():
return None
return event
sentry_sdk.init("http://35ba31f3dfde490d8c896ad688217cb9@10.10.41.106:9000/11",before_send=before_send)