我最近配置了一个独立的环境来托管我的弹性堆栈,如下所述
概观
设置如下
NGinx(:80)<Kibana(:5601)<Elastic Search(:9200)<Log Stash
因此,为了访问我的日志,我只需在浏览器中访问<machine-ip>:80
并使用我在指南中设置的kibana凭据登录。
我的日志服务器设置正确,使用文件节拍将系统日志发送到log-stash等 - 我不确定在远程机器上复制此行为的正确方法
题
我现在想从另一台机器上将日志发布到我的日志服务器上,但我不确定最好的方法来解决这个问题 - 这是我的理解。
1)在我要发送日志的计算机上安装log-stash + filebeat
2)使用logbeash中的filebeat + format从docker container / s中读取STDOUT
3)将日志存储输出发送到我的日志服务器
现在最后一点是我不确定的部分(或者也许其他部分也不是最好的方法!)
我的问题是
Q1)我应该在哪里发布我的日志 - 我应该打我的<machine-ip>:80
并直接通过kibana说话,还是应该打开端口9200来直接与弹性搜索交谈(如果是这样的话,我应该如何通过凭证来验证这种通信,如Kibana )
Q2)从docker容器登录的最佳实践是什么(在我的例子中是nodeJS)。我应该设置像点1 + 2那样我在那台机器上运行logstash / file-beat还是有更好的方法
任何帮助深表感谢!
对于未来的任何人来说,我已经为Q1提出了解决方案
1)在弹性堆栈日志记录服务器上设置侦听端口8080的NGINX代理 - 只允许来自我的应用程序服务器的流量与此通信
2)将流量转发到在端口9200上运行的elasticsearch实例
nginx
配置看起来像这样
server {
listen 8080;
allow xxx.xxx.xxx.xx;
deny all;
location / {
proxy_pass http://localhost:9200;
}
}
https://www.npmjs.com/package/winston-transport-udp-logstash如果你想尝试我创建这个npm包来发送数据到ups logstash端点