docker - Docker 中的 ELK 和不同网络中机器中的 Beats
问题描述
我试图在我的专用网络中的 docker 容器中配置 ELK,并在另一个专用网络中配置带有节拍的 Linux 盒子。我试图为 Filebeat 生成 SSL 证书以验证 ELK 服务器的身份。我尝试通过转发容器端口来使用容器主机的公网 IP,但没有成功。任何人都可以帮助我验证文件节拍节点中的 ELK 服务器身份。
我做了什么?
在网络 A 上: 1) 使用 sebp/elk 映像启动 ELK 容器 2) 对端口 5601、9200、5044 进行端口转发 3) 验证 kibana 是否在 web 中加载并且成功 4) 在 ELK 容器中生成 SSL 证书使用安装 docker 的主机的公共 IP。5) 将此 SSL 证书复制到 beats 主机 /etc/pki/tls/certs/
在网络 B 上: 1)在机器中安装了 beats(不是容器)2)用 Docker 主机的公共 IP 配置了 filebeat.yml 和端口(比如 xxxx:8001)并添加了 ssl 证书路径 3)在网络中重新启动了 logstash A 和网络 B 中的 filebeat 并收到以下错误 错误: .514762 transport.go:125:ERR SSL 客户端无法连接:x509:无法验证证书,因为它不包含任何 IP SAN。
非常感谢提前
解决方案
您可以检查和验证以下几点 -
- 将容器的 elasticsearch、logstash 和 kibana 端口暴露给主机,如果使用默认端口,请使用以下命令检查 -
docker port elk_stack 5044/tcp -> 0.0.0.0:5044 5601/tcp -> 0.0.0.0:5601 9200/tcp -> 0.0.0.0:9200
检查 filebeat 日志是否显示连接请求以更正 elasticsearch/kibana 主机,在上述情况下,这将是您的主机 IP 和公开的容器端口。
检查是否可以从运行 filebeat 的远程主机使用 curl 命令访问 elasticsearch 和 kibana -
curl ${elasticsearch_host}:9200 curl ${kibana_host}:5601
推荐阅读
- ios - Swift - 导入后的图像质量损失
- python - 为什么替换不适用于此子字符串?
- c - 注入后没有从 DllMain 调用 MessageBox
- android - 设置播放器后,Android ExoPlayer 控件不起作用
- arrays - 有没有办法阻止人们在在线表格中输入另一种语言?
- python - 带有错误信息的 Euler 项目问题
- python - 在 Python 中调用函数时如何插入换行符
- wix - WIX 单包安装程序 - 每台机器快捷方式
- hadoop - 具有 HA 的现有名称服务的 Cloudera Nameservice 代理设置
- ansible - 连接字符串以在 jinja2 中创建变量