作者:Chancel, 更新:2019 Jan 10, 字数:4801, 已阅:831
Sentry官方文档已经很详尽了,没想到还是踩了一些坑,事实证明还是要认真看官网文档(奈何英文渣)就可以避免很多问题,吃一蛰长一智,少看三方文档多翻官方文档总是对的
Sentry 是一款基于 Django实现的错误日志收集和聚合的开源平台,它是 Python 实现的,但是其日志监控功能却不局限于python,对诸如 Node.js, php,ruby, C#,java 等语言的项目都可以做到无缝集成,甚至可以用来对iOS, Android 移动客户端以及 Web前端异常进行跟踪。
官方部署文档,建议英文好的同学直接参考官方文档,如果遇到问题可以参考下我的踩坑过程
官方部署文档
安装方式
我采用的是基于Python2.7 - 直接部署
基本环境
我的环境
安装Redis
yum -y install redis
systemctl start redis.service
systemctl enable redis.service
安装Python虚拟环境Virtualenv
pip install -U virtualenv
virtualenv /home/chancel/sentry/
cd /home/chancel/sentry/
source /home/chancel/sentry/
安装sentry的依赖项
// 安装相关依赖,根据安装报错信息逐步排查(直接google一般都可以获得相关依赖包,装上即可,下面列出基本会用到的)
yum install python-devel libffi-devel openssl-devel gcc-c++ libxslt-devel libxml2-devel mysql-python
安装sentry之前更改pip源(如pip速度无问题则可跳过此步),否则安装速度过慢,在用户目录下新建.pip目录并建立pip.conf文件填入相关源信息
vim ~/.pip/pip.conf
[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
开始安装sentry
// 直接安装sentry
pip install -U sentry
初始化sentry
sentry init /etc/sentry
更改配置信息
修改/etc/sentry/sentry.conf.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'sentry',
'USER': 'root',
'PASSWORD': 'yourpasswd',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
修改/etc/config.yml信息
redis.clusters:
default: hosts: 0: host: 127.0.0.1 port: 6379 # password: "my-secret-password" ```
创建Sentry数据库
尝试运行sentry
// 运行web界面(会让你创建管理员用户)
sentry --config=/etc/sentry run web
// 运行背景线程(需要切换成普通用户运行)
sentry --config=/etc/sentry run worker
// 运行队列线程
sentry --config=/etc/sentry run cron
部署完成,以下是注意事项
根据自己的具体文件夹路径更改相关配置,主要是日志跟sentry的路径
[program:sentry-web]
directory=/usr/bin/
environment=SENTRY_CONF="/etc/sentry"
command=/usr/bin/sentry run web
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/supervisord/sentry-web.output.log
stderr_logfile=/var/log/supervisord/sentry-web.error.log
[program:sentry-worker]
user=chancel
directory=/usr/bin/
environment=SENTRY_CONF="/etc/sentry"
command=/usr/bin/sentry run worker
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/supervisord/sentry-worker.output.log
stderr_logfile=/var/log/supervisord/sentry-worker.error.log
[program:sentry-cron]
directory=/usr/bin/
environment=SENTRY_CONF="/etc/sentry"
command=/usr/bin/sentry run cron
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/supervisord/sentry-cron.output.log
stdout_logfile=/var/log/supervisord/sentry-cron.output.log
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;
}
新建一个测试项目,提示如下
var ravenClient = new RavenClient("http://76e85db534174984bfb995a97061d892@xxx.chancel.cn//4");
try
{
int i2 = 0;
int i = 10 / i2;
}
catch (Exception exception)
{
ravenClient.Capture(new SentryEvent(exception));
}
运行c#程序,并运行以上代码,发现无法提交,仔细查看日志,CSRF错误,cookie/token错误,后来发现这个例子不对,更改第一句代码
var ravenClient = new RavenClient("http://76e85db534174984bfb995a97061d892@xxx.chancel.cn/4");
所以,前面的步骤我花了大概半个小时的时间,后面这个愣是折腾了两个小时都没发现官方的例子居然是有问题的! 查遍google跟官网相关文档都没查找到相关信息,最后重新按照官网文档步骤走一遍,再把最后的双斜杠改为单斜杠就可以了