【发布时间】:2019-07-27 07:55:07
【问题描述】:
我最近配置了一个独立环境来托管我的弹性堆栈,如此处所述
概述
设置如下
NGinx (:80)
因此,为了访问我的日志,我只需在浏览器中转到 <machine-ip>:80 并使用我在指南中设置的 kibana 凭据登录。
我的日志服务器设置正确,可以使用 file-beat 将系统日志发送到 log-stash 等 - 我不确定在远程机器上复制此行为的正确方法
问题
我现在想从另一台机器将日志发布到我的日志服务器,但我有点不确定解决这个问题的最佳方法 - 这是我的理解。
1) 在我要发送日志的机器上安装 log-stash + filebeat
2) 在日志存储中使用 filebeat + 格式从 docker 容器中读取 STDOUT
3) 将日志存储输出发送到我的日志服务器
现在最后一点是我不确定的部分(或者其他部分也不是最好的方法!)
我的问题是
Q1) 我也应该在哪里发布我的日志 - 我应该点击我的<machine-ip>:80 并直接通过 kibana 交谈,还是应该打开端口 9200 直接与弹性搜索交谈(如果是这样的话我应该如何像 Kibana 一样通过凭据来验证这种通信)
Q2) 从 docker 容器(在我的例子中是 nodeJS)进行日志记录的最佳实践是什么。我应该像上面提到的第 1 + 2 点那样设置我在那台机器上运行 logstash / file-beat 还是有更好的方法
非常感谢任何帮助!
e/ Q1 解决方案
我已经为未来的任何人提出了 Q1 的解决方案
1) 在弹性堆栈日志服务器上设置一个 NGINX 代理侦听端口 8080 - 只允许来自我的应用服务器的流量与此通信
2) 将流量转发到运行在端口 9200 上的 elasticsearch 实例
nginx 配置如下所示
server {
listen 8080;
allow xxx.xxx.xxx.xx;
deny all;
location / {
proxy_pass http://localhost:9200;
}
}
【问题讨论】:
-
filebeat 将日志转发到logstash;您过滤数据并转换为 json 格式并发送到弹性搜索;弹性搜索公开了kibana收听的地址;在kibana中配置弹性搜索索引和地址。查看文档elastic.co/guide/index.html,本指南也很好logz.io/learn/complete-guide-elk-stack/#elasticsearch
-
@Krishna 感谢您的回复。我了解它是如何工作的,因为我已经通过 file-beat + log stash 收集系统日志,然后发送到我的日志服务器上的弹性搜索等 - 我不确定将这些从另一台服务器发送到这台服务器的安全方式。我已经稍微编辑了这个问题以添加这部分“我的日志服务器已正确设置为使用文件节拍将系统日志发送到日志存储等 - 我不确定在 a 上复制此行为的正确方法远程机器”
-
您可以配置 kibnaconfig.yml 文件以启用凭据/ssl 证书验证以进行弹性搜索。 elastic.co/guide/en/kibana/6.3/using-kibana-with-security.html
-
感谢您的链接 - 不过,这对我来说还是有点不清楚。您提供的链接讨论了 x-pack 的设置,这是一项付费功能 elastic.co/guide/en/elasticsearch/reference/6.3/…。我做了更多的研究,正在考虑将我的应用程序服务器 IP 添加到
/elasticsearch.yml的network.host部分并在日志服务器上打开端口 9200 以便它可以通信 - 对此有何想法? -
是的,可以。尽管由于您的堆栈没有付费,但您可能有另一种方式来考虑保护 elasticsearch 端点。对于初学者,您可以将默认端口更改为其他端口。我发现这篇关于保护集群的文章dzone.com/articles/securing-your-elasticsearch-cluster-properly
标签: node.js elasticsearch kibana filebeat winston