渡人自渡 发表于 2018-8-9 09:18:45

Python 实时日志平台 Sentry

  简介
  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/systemctlstartpostgresql.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 = 9000SENTRY_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 = 25SERVER_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
  浏览器访问:http://IP:9000

  http://IP:9000/admin/

  复制API key链接

  配置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

  展示


页: [1]
查看完整版本: Python 实时日志平台 Sentry