如何将来自 2 个不同 Lans 的错误记录到一个哨兵服务器

How to log errors from 2 different Lans to one sentry server

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

比方说,运行ning sentry 的服务器有一个 ip 192.168.1.110.0.0.1,我想记录来自 192.168.1.2 和 [=14] 的错误=].

哨兵服务器(机器)和需要进行日志记录的机器之间的连接很好,但我需要 'switch' 在哨兵中设置 url-prefix 才能工作与一个或另一个:如果我将 SENTRY_URL_PREFIX 设置为 http://10.0.0.1 它可以工作并且能够从该 lan 接收日志,但是来自另一个 lan 的所有请求都会出错(前端的直接 http 请求得到例如一个 http 400 结果),当然反过来也是如此。

详情: 我是 运行8.1.2 在 docker (https://hub.docker.com/_/sentry/)

的哨兵

有趣的是,我在 changelog

中读到了这篇文章

SENTRY_URL_PREFIX has been deprecated, and moved to system.url-prefix inside of config.yml or it can be configured at runtime.

第一次启动哨兵其实好像还是要问前缀;更改前缀似乎对连接有效,所以对我来说这就是罪魁祸首。这可能是在幕后传达给上面提到的system.url-prefix,所以这个设置是问题所在,但我不确定。

有谁知道如何 运行 一个服务器在两个地址上? 主要问题当然是发送错误,让 web 界面只能从一个 ip 可见并不是什么大问题。

虽然我不太确定它应该如何工作,但我无法将任何日志发送到具有不同 system.url-prefix 然后我在调用中使用的服务器。

我从 Twitter 和哨兵组收集到它确实需要正确的接口主机,否则它不应该真正破坏东西。不过不确定如何破解它。

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

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;
       }
    }
}

端口对两个 nic 都公开,因此它会监听我们要使用的两个地址,并很好地代理它并易于哨兵。

免责声明:界面上提到 SENTRY_URL_PREFIX 但它已被弃用,所以我使用 system.url-prefix,但在我的回答中,出于所有实际目的,它们是可以互换的。对于那些确实知道什么确切去向的人来说,这可能会造成混淆:)

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