我正在使用Logstash和Elasticsearch版本5.6.5。到目前为止,使用了带有HTTP协议的elasticsearch输出,没有认证。现在,Elasticsearch使用基本身份验证(用户/密码)和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而不是自签名的SSL,我不确定该放在那里。
附加问题:我没有安装任何xpack。是否需要从Logstash向Elasticsearch输出HTTPS输出“xpack”?
答案 0 :(得分:2)
我找到了问题的根本原因。有三件事需要解决:
我测试的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”安装。