如何验证 Logstash 输出到安全的 Elasticsearch URL(版本 5.6.5)
How to authenticate Logstash output to a secure Elasticsearch URL (version 5.6.5)
我使用的是 Logstash 和 Elasticsearch 版本 5.6.5。到目前为止,使用带有 HTTP 协议且没有身份验证的 elasticsearch 输出。现在 Elasticsearch 正在使用基本身份验证 (user/password) 和 CA 认证的 HTTPS URL 进行保护。我对 elasticsearch 服务器没有任何控制权。我只是用它从 Logstash 输出。
现在,当我尝试使用基本身份验证配置 elasticsearch 的 HTTPS URL 时,它无法创建管道。
输出配置
output {
elasticsearch {
hosts => ["https://myeslasticsearch.server.io"]
user => "esusername"
password => "espassword"
ssl => true
}
}
错误
1. Error registering plugin {:plugin=>"#<LogStash::OutputDelegator:0x50aa9200
2. Pipeline aborted due to error {:exception=>#<URI::InvalidComponentError: bad component(expected user component):
如何解决这个问题?
我注意到有一个名为 cacert
的字段需要一些 PEM 文件。但我不确定该放什么,因为 Elasticsearch 服务器使用的是 CA 认证的 SSL 而不是自签名的。
附加问题:我没有安装任何 xpack。从 Logstash 到 Elasticsearch 的 HTTPS 输出是否需要购买 'xpack'?
我找到了问题的根本原因。需要修复三件事:
我测试的logstash版本错了5.5.0。我下载了与 Elasticsearch 版本 5.6.5 匹配的正确版本。
我使用的主机是 运行 在 443 端口上。当我没有像下面那样指定端口时,logstash 附加了 9200,因此连接失败。
hosts => ['https://my.es.server.com']
以下配置更正了 logstash 使用的端口。
hosts => ['https://my.es.server.com:443']
我缺少代理连接设置。
proxy => 'http://my.proxy.com:80'
总体设置有效。
output {
elasticsearch {
hosts => ['https://my.es.server.com:443']
user => 'esusername'
password => 'espassword'
proxy => 'http://my.proxy:80'
index => "my-index-%{+YYYY.MM.dd}"
}
}
不需要 'ssl' 字段。
此外 不需要 'xpack' 安装 满足此要求。
我使用的是 Logstash 和 Elasticsearch 版本 5.6.5。到目前为止,使用带有 HTTP 协议且没有身份验证的 elasticsearch 输出。现在 Elasticsearch 正在使用基本身份验证 (user/password) 和 CA 认证的 HTTPS URL 进行保护。我对 elasticsearch 服务器没有任何控制权。我只是用它从 Logstash 输出。
现在,当我尝试使用基本身份验证配置 elasticsearch 的 HTTPS URL 时,它无法创建管道。
输出配置
output {
elasticsearch {
hosts => ["https://myeslasticsearch.server.io"]
user => "esusername"
password => "espassword"
ssl => true
}
}
错误
1. Error registering plugin {:plugin=>"#<LogStash::OutputDelegator:0x50aa9200
2. Pipeline aborted due to error {:exception=>#<URI::InvalidComponentError: bad component(expected user component):
如何解决这个问题?
我注意到有一个名为 cacert
的字段需要一些 PEM 文件。但我不确定该放什么,因为 Elasticsearch 服务器使用的是 CA 认证的 SSL 而不是自签名的。
附加问题:我没有安装任何 xpack。从 Logstash 到 Elasticsearch 的 HTTPS 输出是否需要购买 'xpack'?
我找到了问题的根本原因。需要修复三件事:
我测试的logstash版本错了5.5.0。我下载了与 Elasticsearch 版本 5.6.5 匹配的正确版本。
我使用的主机是 运行 在 443 端口上。当我没有像下面那样指定端口时,logstash 附加了 9200,因此连接失败。
hosts => ['https://my.es.server.com']
以下配置更正了 logstash 使用的端口。
hosts => ['https://my.es.server.com:443']
我缺少代理连接设置。
proxy => 'http://my.proxy.com:80'
总体设置有效。
output {
elasticsearch {
hosts => ['https://my.es.server.com:443']
user => 'esusername'
password => 'espassword'
proxy => 'http://my.proxy:80'
index => "my-index-%{+YYYY.MM.dd}"
}
}
不需要 'ssl' 字段。
此外 不需要 'xpack' 安装 满足此要求。