如何将错误从2个不同的Lans记录到一个岗哨服务器

时间:2016-03-07 13:18:40

标签: sentry

Sentry需要一个值来安装它的位置:SENTRY_URL_PREFIX。问题是我想通过两个不同的局域网将错误记录到安装中。

让我们说,运行哨兵的服务器有一个ip 192.168.1.110.0.0.1,我想记录来自192.168.1.210.0.0.2的错误。

岗哨服务器(机器)与需要进行记录的机器之间的连接很好,但我需要切换'在哨兵中使用url-prefix设置,以便它可以与其中一个一起工作:如果我将SENTRY_URL_PREFIX设置为http://10.0.0.1它可以工作,并且能够从该局域网接收日志,但是来自另一个的所有请求lan出错了(前端的直接http请求获得了例如http 400的结果)当然还有另一种方式。

详细说明: 我在docker(https://hub.docker.com/_/sentry/

中运行哨兵8.1.2

有趣的是,我在changelog

中读到了这一点
  

不推荐使用SENTRY_URL_PREFIX,并将其移至config.yml内的system.url-prefix,或者可以在运行时进行配置。

第一次启动哨兵实际上似乎仍然要求提供前缀;更改前缀似乎对连接起作用,所以对我来说看起来这就是笨蛋。可能是在幕后将其传达给上面提到的system.url-prefix,因此这个设置是问题,但我不确定。

有谁知道如何在两个地址上运行一台服务器? 主要问题当然是发送错误,只有一个IP才能看到网络界面并不是什么大不了的事。

1 个答案:

答案 0 :(得分:0)

虽然我不确定它应该如何工作,但是我无法将任何日志记录到与我在呼叫中使用的#include<iostream> #include<stdio.h> #include<cstdint> void main() { char g = 'z'; char*p = &g; //THIS ASSUMES 32-bit! Note on 64bit systems a pointer is 64-bit, (you can conclude the result for an 8bit or 16bit addressing model) uint32_t P_value = (uint32_t)p; std::cout << "adress of g is :" << P_value; printf("\naddress of g is: %p", p); } 不同的服务器。

从twitter和哨兵小组我收集说它确实需要正确的主机接口,否则它不应该打破其他东西。不知道如何破坏它。

我的解决方案只是从一个方面解决了哨兵安装。因为我们需要单独的NIC,所以我们通过在设置前使用一个简单的nginx反向代理来实现,并设置主机头。我使用了默认的https://hub.docker.com/_/nginx/图片,这个配置:

system.url-prefix

该端口暴露在两个网络中,因此它会监听我们想要使用的两个地址,并且代理它很好并且很容易哨兵。

免责声明:该界面提及events { worker_connections 1024; ## Default: 1024 } http{ server { listen 80; location / { proxy_pass http://$internalip-sentry-knows; proxy_redirect http://$internalip-sentry-knows $externalip-we-use; proxy_set_header Host $internalip-sentry-knows; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } } ,但已弃用,因此我使用SENTRY_URL_PREFIX,但在我的回答中,出于所有实际目的,它们可以互换。对于知道确切原因的人来说,这可能会引起混淆:)

参考文献:
* twitter conversation with Matt from sentry
* Groups response from David from sentry