Sentry的安装搭建与使用
业务监控工具 Sentry 的搭建与使用
官方网址
Django Sentry 官网链接
Sentry 简介
Sentry 是一个开源的实时错误报告工具,支持 web 前后端、移动应用以及游戏,支持 Python、OC、Java、Go、Node、Django、RoR 等主流编程语言和框架 ,还提供了 GitHub、Slack、Trello 等常见开发工具的集成。
Sentry 服务支持多用户、多团队、多应用管理,每个应用都对应一个 PROJECT_ID,以及用于身份认证的 PUBLIC_KEY 和 SECRET_KEY。由此组成一个这样的 DSN:
{PROTOCOL}://{PUBLIC_KEY}:{SECRET_KEY}@{HOST}/{PATH}{PROJECT_ID}
PROTOCOL 通常会是 http 或者 https,HOST 为 Sentry 服务的主机名和端口,PATH 通常为空。
环境依赖
- Redis 搭建 / RabbitMQ 的搭建
- MySQL / PostgreSQL
- Python 虚拟环境
安装教程
Redis 的安装
参考文档:
https://linux.cn/article-6719-1.html
http://www.jianshu.com/p/aec247ffbe51- MySQL 的安装
- 略
Python 虚拟环境的安装
因为 Sentry 依赖的 Python 库比较多,为了避免对系统环境的污染,与现有的Python有冲突,建议还是将 Sentry 安装在虚拟环境中。
A. Python 库文件: python-setuptools, python-dev, build-essential, python-pipB. 安装虚拟环境: pip install virtualenv安装完成后,可以直接 virtualenv xxx 即可在当前目录下生成一个虚拟环境xxx目录,进入到目录中,source bin/activate 即可激活当前虚拟环境。C. 选择安装 virtualenvwrapper: pip install virtualenvwrapper安装完成后,建立个虚拟环境安装存储的目录,建议是 $HOME/.virtualenv 目录,配置下 .bashrc 文件,文件末尾添加:export WORKON_HOME=$HOME/.virtualenvssource /usr/local/bin/virtualenvwrapper.shsource .bashrc后,运行 mkvirtualenv xxx 即可建立虚拟环境。退出运行 deactivate。这样,就不需要再进入到虚拟环境目录运行 source xxx/activate,直接在终端输入 workon xxx 即可。
- Sentry
在虚拟环境下,直接运行pip install sentry
即可。
这样,安装基本上就结束了。接下来需要配置下 sentry。
配置 Sentry
运行 sentry init
, 会在 $HOME 下生成 .sentry
目录。进入 .sentry 后,需要修改数据库配置(当然,你也可以不改,直接使用 PostgreSQL):
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', # 这里换成了 MySQL,默认是 pq'NAME': 'xxx','USER': 'xxx','PASSWORD': 'xxx','HOST': 'xxx','PORT': 'xxx',}
}
端口和队列等可以自行指定。这里,我指定的是15000。下面是一个配置参考:
# This file is just Python, with a touch of Django which means
# you can inherit and tweak settings to your hearts content.
from sentry.conf.server import *import os.pathCONF_ROOT = os.path.dirname(__file__)DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'django_sentry','USER': 'root','PASSWORD': 'password','HOST': 'localhost','PORT': '3306','AUTOCOMMIT': True,'ATOMIC_REQUESTS': False,}
}# You should not change this setting after your database has been created
# unless you have altered all schemas first
SENTRY_USE_BIG_INTS = True# If you're expecting any kind of real traffic on Sentry, we highly recommend
# configuring the CACHES and Redis settings###########
# General #
############ Instruct Sentry that this install intends to be run by a single organization
# and thus various UI optimizations should be enabled.
SENTRY_SINGLE_ORGANIZATION = True
DEBUG = False#########
# Cache #
########## Sentry currently utilizes two separate mechanisms. While CACHES is not a
# requirement, it will optimize several high throughput patterns.# If you wish to use memcached, install the dependencies and adjust the config
# as shown:
#
# pip install python-memcached
#
# CACHES = {# 'default': {# 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
# 'LOCATION': ['127.0.0.1:11211'],
# }
# }# A primary cache is required for things such as processing events
SENTRY_CACHE = 'sentry.cache.redis.RedisCache'#########
# Queue #
########## See https://docs.sentry.io/on-premise/server/queue/ for more
# information on configuring your queue broker and workers. Sentry relies
# on a Python framework called Celery to manage queues.
CELERY_ALWAYS_EAGER = False
BROKER_URL = 'redis://127.0.0.1:6379'###############
# Rate Limits #
################ Rate limits apply to notification handlers and are enforced per-project
# automatically.SENTRY_RATELIMITER = 'sentry.ratelimits.redis.RedisRateLimiter'##################
# Update Buffers #
################### Buffers (combined with queueing) act as an intermediate layer between the
# database and the storage API. They will greatly improve efficiency on large
# numbers of the same events being sent to the API in a short amount of time.
# (read: if you send any kind of real data to Sentry, you should enable buffers)SENTRY_BUFFER = 'sentry.buffer.redis.RedisBuffer'##########
# Quotas #
########### Quotas allow you to rate limit individual projects or the Sentry install as
# a whole.SENTRY_QUOTAS = 'sentry.quotas.redis.RedisQuota'########
# TSDB #
######### The TSDB is used for building charts as well as making things like per-rate
# alerts possible.SENTRY_TSDB = 'sentry.tsdb.redis.RedisTSDB'###########
# Digests #
############ The digest backend powers notification summaries.SENTRY_DIGESTS = 'sentry.digests.backends.redis.RedisBackend'################
# File storage #
################# Any Django storage backend is compatible with Sentry. For more solutions see
# the django-storages package: https://django-storages.readthedocs.org/en/latest/SENTRY_FILESTORE = 'django.core.files.storage.FileSystemStorage'
SENTRY_FILESTORE_OPTIONS = {'location': '/tmp/sentry-files',
}##############
# Web Server #
############### If you're using a reverse SSL proxy, you should enable the X-Forwarded-Proto
# header and uncomment the following settings
# SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
# SESSION_COOKIE_SECURE = True
# CSRF_COOKIE_SECURE = True# If you're not hosting at the root of your web server,
# you need to uncomment and set it to the path where Sentry is hosted.
# FORCE_SCRIPT_NAME = '/sentry'SENTRY_WEB_HOST = '0.0.0.0'
SENTRY_WEB_PORT = 5000
SENTRY_WEB_OPTIONS = {# 'workers': 3, # the number of web workers# 'protocol': 'uwsgi', # Enable uwsgi protocol instead of http
}LANGUAGES = (('en', gettext_noop('English')),('zh-cn', gettext_noop('Simplified Chinese')),# ('zh-cn', gettext_noop('Traditional Chinese')),
)
运行 Sentry
- 初始化:
sentry upgrade
注意,这里可能会出现错误,可以参考下面遇到的坑。初始化的时候,需要设置一个 superuser 角色,直接按提示操作即可。
- 启动 web 进程:
sentry run web
- 启动 worker 进程:
sentry run worker
- 这时候,通过 IP:PORT 的形式访问下,填写刚才填写的用户名和密码即可登录。登录后,我们创建一个 project。我这里设置的是 Odeon_Dev,接下来选择项目,我选择的是 Django。这个时候,会弹出一个在项目中配置的教程。我们按照提示操作即可。
测试环境的地址:
http://localhost:5000/sentry/odeon_dev/
项目中配置 Sentry
按照上面的操作,Sentry 服务就可以 run 起来了。接下来需要在 Odeon 的项目中配置下 Sentry 环境即可。这里,我们需要引入一个新包: raven。我安装的 是 raven 6.1.0
安装:A. 可以直接下载 raven 包,将其导入到环境中;B. 直接指令安装: build/env/bin/pip install raven==6.1.0项目配置:直接将 sentry 创建 project 时返回的信息放入 settings 文件中即可import osimport ravenRAVEN_CONFIG = {'dsn': 'http://fxxx:xxx@localhost:xxx/2','release': raven.fetch_git_sha(os.path.dirname(os.pardir)),}
至此,整个 Sentry 的搭建和项目中需要的配置就完全 OK 了。
当然,也可以更完善一下,比如:
- 利用 Nginx 反向代理使用域名访问服务;
- 利用 supervisor 来起 Sentry 服务等。
接下来,就是按需使用了。
遇到的坑
sentry默认使用 PostgreSQL。我用的是 mysql。运行 sentry upgrade 的时候,发现运行到 db migration 的时候抛了异常,查阅发现是 db engine 使用的是MyISAM,不支持 transaction 导致的。这里需要注意下,我将 engine 指定为 InnoDB后,执行 migration 的时候错误消失。
页面打开后,提示 worker 没有正常运行。发现没有启动 worker。我们手动启动下 worker,启动时,需要在系统中将 C_FORCE_ROOT 设置为 true。详细点击: 参考链接
参考链接:
- https://yunsonbai.top/2016/05/30/django-sentry/
- https://tech.liuchao.me/2015/06/monitor-service-error-logs-by-using-sentry/
转载于:https://www.cnblogs.com/caodneg7/p/10454823.html
Sentry的安装搭建与使用相关推荐
- Sentry监控系统搭建流程及钉钉告警配置
Sentry监控系统搭建流程 1.安装Sentry (1)更新docker版本 注意:最新21版本docker要求在19.3.05版本及以上,如果版本过低,需要更新(更新前要先卸载旧版本) 列出所有包 ...
- centos php 局域网访问,CentOS8安装搭建php环境
CentOS8安装搭建php环境 1.简介 PHP是最常用的服务器端编程语言之一. 许多流行的CMS和框架(例如WordPress,Magento和Laravel)都是用PHP构建的. CentOS ...
- Mongodb安装搭建Replica Set+Sharding集群
2019独角兽企业重金招聘Python工程师标准>>> Mongodb安装搭建Replica Set+Sharding集群 一.简介 Replica Set:复制在为数据提供了冗余同 ...
- Apache Sentry手动安装、使用手册
Sentry手动安装.使用手册 1 Sentry简介 Apache Sentry 是Cloudera公司发布的一个Hadoop开源组件,截止目前还是Apache的孵化项目,它提供了细粒度级.基于角色的 ...
- ActiveMQ的安装搭建
1.下载ActiveMQ 链接: https://pan.baidu.com/s/1kV5mDyZ 密码: b4mf ActiveMQ采用java开发,所以要先安装java运行环境; 2.解压Acti ...
- 分别安装搭建lamp服务环境
一. 分别安装搭建lamp服务环境 准备工作: 1.配置防火墙,开启80端口.3306端口 vi /etc/sysconfig/iptables -A INPUT -m state –state NE ...
- centos安装php服务器,在CentOS上安装搭建PHP+Apache+Mysql的服务器环境方法
以下安装过程是基于centos下,使用yum安装搭建PHP+Apache+Mysql的服务器环境 一:安装MySQL 1.安装yum install mysql mysql-server mysql- ...
- 今晚直播丨手把手安装搭建GoldenDB
手把手安装搭建GoldenDB-03.09 作为成熟稳定商用领先的金融级分布式数据库,中兴通讯GoldenDB分布式数据库具备强一致.高性能.高可靠.易扩展及智能运维等核心能力. 本次课程以Golde ...
- 两场直播丨 手把手安装搭建GoldenDB、基于IB网络的Oracle Extend RAC最佳实践
1. 手把手安装搭建GoldenDB-03.09 作为成熟稳定商用领先的金融级分布式数据库,中兴通讯GoldenDB分布式数据库具备强一致.高性能.高可靠.易扩展及智能运维等核心能力. 本次课程以Go ...
- Windows平台上安装搭建iPhone/iPad的开发环境
很多朋友希望在体验或学习iphone开发,但是iphone开发环境一般需要 安装在mac计算机下mac os中. 这给许多朋友带来了额外成本投入. 网上已经有各种破解方法,在非苹果电脑上安装iphon ...
最新文章
- PCL两种方式的点云读写
- pandas(七) -- 数据分组
- layui移动端适配_移动端适配方案
- Linux 内核宏 time_after解析
- 开发经验分享_01_遇到问题三步走(思路+实战)
- shortcut switch in terminal start pos end pos
- java打卡-day3 变量和数据类型
- Java画韦恩图_R绘制韦恩图 | Venn图
- JavaScript标识符与关键字和保留字
- MapReduce实现二阶矩阵相乘
- python股票买卖问题_714. 买卖股票的最佳时机含手续费(Python)
- 为什么全网通手机联通显示无服务器,手机卡无服务怎么回事
- WPF XAML 格式化工具(XAML Styler)使用说明
- Jetpack Compose - CircularProgressIndicator、LinearProgressIndicator
- java对图片进行压缩处理
- Trance音乐风格的分类
- Codis学习笔记--Java连接codis
- vscode 通过pem文件远程连接云服务器 20220120
- 关于谷歌浏览崩溃 打不开设置界面
- var、let与const的区别