sentry cenots6.5 PostgreSQL
Sentry 是一个实时的事件日志和聚合平台,基于 Django 构建。 Sentry 可以帮助你将 Python 程序的所有 exception 自动记录下来,然后在一个好用的 UI 上呈现和搜索。处理 exception 是每个程序的必要部分,所以 Sentry 也几乎可以说是所有项目的必备组件。
sentry官方提供了一个控制台,也可以自己搭建,参考文档 SENTRY
sentry需要的软件环境有
注意:从sentry8.0开始,就不在支持MySQL数据库了
ps: 本文通过pip安装sentry,如果通过编译安装,还需要Node.js >= 0.12以上的版本
关于系统需要的一些开发者环境就不做赘述,常用的可以通过以下两条命令安装
yum -y install gcc gcc-c++ ncurses-devel perl pcre-devel openssl openssl-devel
yum -y groupinstall "Development Tools"
yum install libxslt-devel #
后期可能会遇到一个安装lxml失败的问题,可以通过解决
因为Centos6.5系统默认的python版本是2.6.6,需要升级下python,同时要不影响yum的使用(yum使用python2.6)
1.下载Python2.7.11安装包
yum -y install gcc gcc-c++ ncurses-devel perl pcre-devel openssl openssl-devel
如果没有wget命令,可以通过yum -y install wget
安装
2.解压并进入python包
tar -zxvf Python-2.7.11.tgz&&cd Python-2.7.11
3.编译
./configure
如果报错,可根据错误提示,看看是不是缺少什么包
4.安装
make&&make install
5.安装完成以后,备份原来的python2.6
mv /usr/bin/python /usr/bin/python2.6.6
6.创建python2.7的链接,
ln -s /usr/local/bin/python2.7 /usr/bin/python
7.配置yum使用python2.6,
sudo vim /usr/bin/yum
把第一行#!/usr/bin/python改为#!/usr/bin/python2.6.6
8.测试在终端中输入python,显示版本2.7.11,同时yum可继续使用
pip是一个比较好用的python包管理器,建议使用
1.下载get-pip.py文件
wget https://bootstrap.pypa.io/get-pip.py
2.安装
pip python get-pip.py
virtualenv是python的一套虚拟环境,为了解决不同python项目,依赖的包会有冲突的情况
1.
pip install -U virtualenv
2.在你需要的位置,新建sentry文件夹,
mkdir /home/sentry
3.创建虚拟环境,
virtualenv /home/sentry
4.激活sentry环境,
source /home/sentry/bin/activate
ps:从该环境退出使用命令deactivate
5.此时,可以在该环境中安装各种需要的python包,需要使用的时候激活该环境就可以
1.从官网下载最新的稳定版本,
wget http://download.redis.io/releases/redis-3.0.7.tar.gz
2.解压并进入文件夹,
tar -zxvf redis-3.0.7.tar.gz&&cd redis-stable
3.安装
make
可能会遇到的一些异常:
1.make[2]: cc: Command not found
异常原因:没有安装gcc
解决方案:yum install gcc-c++
2.zmalloc.h:51:31: error: jemalloc/jemalloc.h: No such file or directory
异常原因:一些编译依赖或原来编译遗留出现的问题
解决方案:make distclean。清理一下,然后再make。
在make成功以后,需要make test。在make test出现异常。
异常一:
couldn't execute "tclsh8.5": no such file or directory
异常原因:没有安装tcl
解决方案:yum install -y tcl。
4.安装成功以后,会有 redis-server,redis-cli 等执行文件
再次说明下,从sentry8.0以后开始 就不支持MySQL了…我被mysql的问题卡了好久,死活删不掉索引,如果喜欢折腾,可以自己查看下源码,看看如何解决。
yum install postgresql-devel
解决,所以我们在这里,先安装好。1.PostgreSQL官网介绍,centos6.5 默认yum安装的postgresql版本是8.4,使用该版本数据库,安装sentry,在创建数据库的时候,一直有一个语言错误,the error was:language “plpgsql” does not exist,查询了很多postgresql地方,原本是可以通过CREATE LANGUAGE plpgsql;解决的,但是还是一直报这个错误,所以我使用了postgresql9.2版本,该问题解决。
2.导入9.2版本的yum包
yum install https://download.postgresql.org/pub/repos/yum/9.2/redhat/rhel-6-x86_64/pgdg-redhat92-9.2-8.noarch.rpm
3.安装postgresql9.2
yum install postgresql92-server postgresql92-contrib
4.初始化数据库
service postgresql-9.2 initdb
5.添加服务
chkconfig postgresql-9.2 on
启动服务
sudo service postgresql-9.2 restart
6.PostgreSQL在创建后,会创建一个postgres的用户,只有该用户可以使用psql
控制台 需要切换到该用户
sudo su postgres
psql
7.创建用户
CREATE USER sentry WITH PASSWORD 'sentry';
8.创建数据库
CREATE DATABASE sentry OWNER sentry;
9.修改下配置文件,在/var/lib/pgsql/9.2/data/下有两个配置文件
postgresql.conf和pg_hba.conf
10.修改pg_hba.conf最下面的host把需要的host的ident参数,改为trust
11.修改postgresql.conf下面的listen_addresses = ‘*’
12.保存重启postgresql
sudo service postgresql-9.2 restart
本文通过pip安装,十分简单 运行命令
pip install -U sentry
即可,该过程时间有点长,可能遇到某些包,下载终端,超时,重复运行该命令即可,遇到某些错误,都是一些包未安装导致的,可根据错误提示,具体查看是缺少什么。
1.安装完成后,初始化sentry环境
sentry init /etc/sentry
,会在该文件下出现sentry的两个配置文件,sentry.conf.py 和 config.yml,在sentry.conf.py 中需要配置 postgresql和redis数据库的链接信息,根据自己情况,配置就可以。在config.yml中配置mail信息
2.因为我们创建了sentry数据库,就不需要执行官网说的createdb -E utf-8 sentry
,我们之间写入数据,执行SENTRY_CONF=/etc/sentry sentry upgrade
,数据写入完成,会自动提示,是否创建用户,按照提示操作即可。
3.此时通过SENTRY_CONF=/etc/sentry sentry run web
启动,访问http://localhost:9000/
就可以看到界面了。
4.sentry需要同时启动worker和cron,是sentry的队列和任务(个人理解),对于这个,我使用supervisor管理,supervisor的安装过程,就不在赘述,下面是supervisor的项目配置
[program:sentry-web]
directory=/www/sentry/
environment=SENTRY_CONF="/etc/sentry"
command=/www/sentry/bin/sentry start
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=syslog
stderr_logfile=syslog
[program:sentry-worker]
directory=/www/sentry/
environment=SENTRY_CONF="/etc/sentry"
command=/www/sentry/bin/sentry celery worker
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=syslog
stderr_logfile=syslog
[program:sentry-cron]
directory=/www/sentry/
environment=SENTRY_CONF="/etc/sentry"
command=/www/sentry/bin/sentry celery beat
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=syslog
stderr_logfile=syslog
ps:路径和日志地址,安装实际情况配置,启动worker依赖一个python消息队列的包,不能以root的权限启动,同时建议 三个的日志,不要写在一个文件里面…
5.使用nginx代理
sentry支持所有版本的nginx,nginx的安装很简单,不在赘述。
修改nginx配置文件添加
location / {
proxy_pass http://localhost:9000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
reload nginx即可。
6.清除旧数据
crontab -e
0 3 * * * sentry cleanup --days=30
备注:更高级的用法和配置还没接触到,只是简单的搭建起来,遇到各种文件,官网的文档才是王道!!!
ValueError: jpeg is required unless explicitly disabled using –disable-jpeg, aborting
经搜索,找到以下方案:
sudo yum install libjpeg-turbo-devel
Package libffi was not found in the pkg-config search path.
sudo yum install libffi-devel
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 4: ordinal not in range
import sys
reload(sys) # Python2.5 初始化后会删除 sys.setdefaultencoding 这个方法,我们需要重新载入
sys.setdefaultencoding('utf-8')
http://blogmao.com/post/sentry
http://stackoverflow.com/questions/22073516/failed-to-install-python-cryptography-package-with-pip-and-setup-py
http://blog.csdn.net/a657941877/article/details/9063883