Sentry需要一个值来安装它的位置:SENTRY_URL_PREFIX
。问题是我想通过两个不同的局域网将错误记录到安装中。
让我们说,运行哨兵的服务器有一个ip 192.168.1.1
和10.0.0.1
,我想记录来自192.168.1.2
和10.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才能看到网络界面并不是什么大不了的事。
答案 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