简介

     Sentry 是一个实时的事件日志和聚合平台,基于 Django 构建,其专注于错误监控以及提取一切事后处理所需信息而不依赖于麻烦的用户反馈。

Sentry 可以帮助你将 Python 程序的所有 exception 自动记录下来,然后在一个好用的 UI 上呈现和搜索。处理 exception 是每个程序的必要部分,所以 Sentry 也几乎可以说是所有项目的必备组件。


      无论测试如何完善的程序,bug总是免不了会存在的,有些bug不是每次都会出现,测试时运行好好的代码可能在某个用户使用时就歇菜了,可是当程序在用户面前崩溃时,你是看不到错误的,当然你会说:”Hey, 我有记日志呢”。 但是说实话,程序每天每时都在产生大量的日志,而且分布在各个服务器上,并且如果你有多个服务在维护的话,日志的数量之多你是看不过来的吧。等到某天某个用户实在受不了了,打电话来咆哮的时候,你再去找日志你又会发现日志其实没什么用:缺少上下文,不知道用户什么操作导致的异常,异常太多(从不看日志的缘故)不知如何下手 等等。


       Sentry就是来帮我们解决这个问题的,它是一款精致的Django应用,目的在于帮助开发人员从散落在多个不同服务器上毫无头绪的日志文件里发掘活跃的异常,继而找到潜在的臭虫。


       Sentry是一个日志平台, 它分为客户端和服务端,客户端(目前客户端有Python, PHP,C#, Ruby等多种语言)就嵌入在你的应用程序中间,程序出现异常就向服务端发送消息,服务端将消息记录到数据库中并提供一个web节目方便查看。Sentry由python编写,源码开放,性能卓越,易于扩展,目前著名的用户有Disqus, Path, mozilla, Pinterest等。

Pip

pip是python的一个很好的包管理软件,类似npm对于nodejs的关系。似乎pip一般不随python自动安装,但是一个叫easy_install的命令一般都是自带的,所以我们可以通过

sudo easy_install pip

来安装,至于为什么不直接用easy_install来安装所有依赖,通俗一点来讲,pip更流行



一、Virtualenv环境

virtualenv就是用来为一个应用创建一套隔离Python运行环境

#pip install virtualenv

 

#virtualenv sentry

New python executable in/opt/sentry/bin/python

Please make sure you remove any previouscustom paths from your /root/.pydistutils.cfg file.

Installing setuptools, pip, wheel...done.

 

#source sentry/bin/activate

就能激活出一个新的环境,在这个新环境下我们在进行后续操作

#deactivate

退出环境

 

二、安装sentry
#pip install sentry==7.4.3

三、错误解决

错误

error: Python.h: No such file or directory

解决

yum install python-devel –y

 

错误

error: libxml/xmlversion.h: No such file ordirectory

error: libxml/xpath.h: No such file ordirectory

解决

yum install libxslt-devel –y

 

错误

error: openssl/opensslv.h: No such file ordirectory

解决

yum install openssl-devel –y

 

错误

Error loading MySQLdb module: No module namedMySQLdb

pip install MySQL-python

 

错误

EnvironmentError: mysql_config not found

yum -y install mysql-devel 

 

错误

error: libpq-fe.h: No such file ordirectory

yum install postgresql-devel -y

 

四、        安装mysql

#service postgresql initdb

#/bin/systemctlstart  postgresql.service

# su – postgres

 

五、        安装redis

yum install redis –y

systemctl start redis.service

 

六、        配置

初始化创建配置文件

# sentry init /sentry/sentry.conf.py

 

vim /sentry/sentry.conf.py

#修改mysql配置

#配置文件中你需要设置几处

#数据库配置,推荐Postgresql,其次是Mysql

#Redis配置

#邮件服务配置

#web服务配置

 
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'sentry',
        #'NAME': os.path.join(CONF_ROOT, 'sentry.db'),
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}
SENTRY_ADMIN_EMAIL = 'yy520it@163.com'
 
SENTRY_REDIS_OPTIONS = {
    'hosts': {
        0: {
            'host': '127.0.0.1',
            'port': 6379,
        }
    }
}
 
BROKER_URL = 'redis://localhost:6379'
SENTRY_URL_PREFIX = 'http://10.1.1.1'
SENTRY_WEB_HOST = '0.0.0.0'
SENTRY_WEB_PORT = 9000
SENTRY_WEB_OPTIONS = {
    # 'workers': 3,  # the number of gunicorn workers
    # 'secure_scheme_headers': {'X-FORWARDED-PROTO': 'https'},
}
 
 
EMAIL_HOST = 'smtp.exmail.qq.com'
EMAIL_HOST_PASSWORD = 'w15034619520'
EMAIL_HOST_USER = 'wangyangyang@rqbao.com'
EMAIL_PORT = 25
SERVER_EMAIL = 'smtp.exmail.qq.com'

 

启动成功!

为sentry项目初始化数据

# sentry --config=/sentry/sentry.conf.py upgrade

创建新用户

# sentry --config=/sentry/sentry.conf.py createuser

然后就可以启动服务了

#sentry--config=/sentry/sentry.conf.py start

另外,还需要启动Worker

# sentry --config=/sentry/sentry.conf.py celery worker -B

 Python 实时日志平台 Sentry_error


 

浏览器访问:http://IP:9000


 Python 实时日志平台 Sentry_python_02


http://IP:9000/admin/

 Python 实时日志平台 Sentry_error_03

 

复制API key链接


 Python 实时日志平台 Sentry_日志_04


配置log4j(我配置的是log4j.properties)

#SentryAppender

log4j.rootLogger=WARN, Console, RollingFile,SentryAppender

log4j.appender.SentryAppender=net.kencochrane.raven.log4j.SentryAppender

log4j.appender.SentryAppender.dsn=http://9189bf0a8b064d6680eecec9f41538c0:634e759226b84ae5b745d5d9fefe55c9@10.1.0.1:9000/3

 

 

 

测试:

/root/sentry/bin/raven --help

Python 实时日志平台 Sentry_error_05

 

展示

Python 实时日志平台 Sentry_error_06

Python 实时日志平台 Sentry_error_07



Python 实时日志平台 Sentry_error_08