无法访问Sentry日志服务器:EOF发生违反协议

时间:2014-05-22 08:55:14

标签: nginx https sentry raven

我在HTTPS模式下设置Sentry服务器时遇到问题。偶尔经常看似随机,这个错误消息由Raven(Sentry客户端)写入日志文件中:

Unable to reach Sentry log server: <urlopen error [Errno 8] _ssl.c:504: EOF occurred in violation of protocol> (url: https://$(valid_server)/)

Web UI工作正常。来自Raven的大部分消息都被很好地接收,Sentry将它们处理成可用的输出。但是,由于这些错误,某些东西会不时丢失。

我试图想出这个,但死胡同似乎跟着另一个。基本上它看起来很像这样:

Python Requests requests.exceptions.SSLError: [Errno 8] _ssl.c:504: EOF occurred in violation of protocol

但是当使用TLS 1.2测试具有类似s_client查询的Sentry服务器时,它会导致一个有效的会话,与那里的示例不同。

由于没有使用SNI,所以也不是这样:

python-requests 2.0.0 - [Errno 8] _ssl.c:504: EOF occurred in violation of protocol

我无法连贯地重现错误。 Raven的测试通过,没有任何严重错误,直到日志中弹出错误。

我的设置是:Python 2.7.5中的Raven 4.2.1,处理HTTPS的反向代理Nginx 1.6.0,以及默认的Gunicorn 0.17.4的Sentry 6.4.4。 Nginx配置非常类似于官方文档(http://sentry.readthedocs.org/en/latest/quickstart/nginx.html),由于HTTPS而进行了一些更改。

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,并通过安装以下依赖项来修复它:

在Ubuntu上:

sudo aptitude install libffi-dev

然后通过pip:

pip install pyopenssl ndg-httpsclient pyasn1

问题似乎是Python 2.X不支持开箱即用的SNI(TLS需要),如here所述。