如何解决Logstash无法连接Elasticsearch(8.8.1版本)的问题
问题解决步骤
1. 修正Logstash配置中的SQL语法错误
你的JDBC输入里的SQL语句存在语法错误:SELECT id, name, createdTime at FROM user limit 500中的createdTime at是无效写法,需修正为正确的字段名,示例:
SELECT id, name, createdTime FROM user limit 500
(如果需要给createdTime设置别名,可写成createdTime AS create_time)
2. 配置Logstash连接Elasticsearch的SSL参数
Elasticsearch 8.x默认强制开启HTTPS和身份验证,你的Logstash输出配置未适配SSL规则,导致连接失败。需修改elasticsearch输出段的配置:
output { elasticsearch { hosts => ["https://localhost:9200"] # 改为HTTPS协议地址 index => "music_user" document_id => "%{id}" cacert => "/Users/kun/Downloads/ElasticSearch/elasticsearch-8.8.1/config/http_ca.crt" # 替换为你的ES安装目录下http_ca.crt的实际路径 user => "elastic" # ES默认超级用户 password => "你的elastic用户密码" # 安装ES时生成的初始密码 } stdout { codec => rubydebug } }
参数说明:
hosts:必须使用https://开头,对应ES的HTTPS默认端口9200cacert:指定ES生成的CA证书路径,用于验证ES的SSL证书合法性user和password:ES的身份验证凭据,使用安装时生成的elastic用户密码即可
3. 启动Logstash验证
执行以下命令启动Logstash(替换为你的配置文件实际路径):
bin/logstash -f /path/to/your/config.conf
启动后查看日志,若不再出现PipelineAction::Create<main>失败的错误,且能正常将数据输出到Elasticsearch和控制台,则配置生效。
关键说明
本地环境无需公网HTTPS地址,Elasticsearch使用的是自签名SSL证书,只要Logstash通过指定cacert信任该证书,就能正常建立HTTPS连接,同时Kibana也能继续使用SSL连接Elasticsearch,无需关闭ES的SSL功能。
内容的提问来源于stack exchange,提问作者Mamochi
相关产品推荐
相关产品推荐

