Logstash如何连接开启了SSL的Elasticsearch集群?

本文介绍了如何在Elasticsearch8.4.3启用SSL后,配置Logstash8.4.3连接到Elasticsearch集群。首先展示了Logstash的基本部署,然后详细说明了修改logstash.conf以启用SSL连接,包括设置证书验证、信任存储和密码。最后,验证了数据成功存储到Elasticsearch并通过Kibana查询到结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们知道Elasticsearch从7开始开放了大量X-Pack的基础安全功能,默认情况下启动的时候就会配置开启安全功能,启用SSL,连接Elasticsearch需要采用HTTPS。

这种情况下Logstash应该如何连接上Elasticsearch呢?本文从头开始演示从logstash搭建到配置连接Elasticsearch,配置SSL。Elasticsearch和Logstash均以8.4.3版本为例,假设以成功搭建了一个Elasticsearch集群,HTTPS访问url为:https://192.168.56.11:9200

一、Logstash部署

下载logstash-8.4.3-linux-x86_64.tar.gz,解压缩logstash-8.4.3.tar.gz,所有涉及配置的文件都在config目录,执行脚本在bin目录,进入logstash主目录,执行以下命令启动Logstash:

./bin/logstash -e 'input { stdin { } } output { stdout {} }'

这是一个最简单的信息采集,数据来源stdin代表标准输入,stdout代表标准输出。

输入"123456",可以看到在标准输出中输出以下信息:

{
          "host" => {
        "hostname" => "node1"
    },
       "message" => "12123456",
      "@version" => "1",
         "event" => {
        "original" => "12123456"
    },
    "@timestamp" => 2023-02-02T05:09:39.011320047Z
}
二、配置SSL连接Elasticsearch

如果要将信息存储到Elasticsearch,那么需要修改logstash的配置。在config目录下拷贝logstash-sample.conf并修改名字:

[elastic@node1 config]$ cp logstash-sample.conf logstash.conf

将logstash.conf的内容修改为如下所示:

input {
  stdin {}
}

output {
  stdout{
  	codec => rubydebug
  }
  elasticsearch {
    hosts => ["https://192.168.56.11:9200"]
    index => "stdin-%{+YYYY.MM.dd}"
    user => "elastic"
    password => "LYePogNEis=ogbMaUzmJ"
  }
}

指定配置文件重新启动logstash

[elastic@node1 logstash-8.4.3]$ ./bin/logstash -f config/logstash.conf

提示以下错误:

[2023-02-02T14:11:41,073][WARN ][logstash.outputs.elasticsearch][main] Attempted to resurrect connection to dead ES instance, but got an error {:url=>"https://elastic:xxxxxx@192.168.56.11:9200/", :exception=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :message=>"Elasticsearch Unreachable: [https://192.168.56.11:9200/][Manticore::ClientProtocolException] PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target"}

这是因为Elasticsearch配置了SSL,所以需要在logstash中配置访问的证书,将logstash.conf修改如下:

input {
  stdin {}
}

output {
  stdout{
  	codec => rubydebug
  }
  elasticsearch {
    hosts => ["https://192.168.56.11:9200"]
    index => "stdin-%{+YYYY.MM.dd}"
    user => "elastic"
    password => "LYePogNEis=ogbMaUzmJ"
    ssl_certificate_verification => true
    truststore => "/home/elastic/elasticsearch-8.4.3/config/certs/http.p12"
    truststore_password => "EDkicmcvTIaby_aFALRl3w"
  }
}

其中ssl_certificate_verification => true代表启用SSL,truststore配置的elasticsearch首次启动生成的证书,它是一个使用PKCS#12(公钥密码标准#12)加密的数字证书,存放在elasticsearch主目录下的config/certs目录,而truststore_password是truststore的密码,可以采用bin目录下的elasticsearch-keystore工具获取到。

[elastic@node1 elasticsearch-8.4.3]$ ./bin/elasticsearch-keystore list
warning: ignoring JAVA_HOME=/opt/jdk-17.0.5; using bundled JDK
keystore.seed
xpack.security.http.ssl.keystore.secure_password
xpack.security.transport.ssl.keystore.secure_password
xpack.security.transport.ssl.truststore.secure_password
[elastic@node1 elasticsearch-8.4.3]$ ./bin/elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_password
warning: ignoring JAVA_HOME=/opt/jdk-17.0.5; using bundled JDK
EDkicmcvTIaby_aFALRl3w

使用_cat API查看Elasticsearch中的索引,可以看到已经创建出来索引stdin-2023.02.02。

health status index            uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   stdin-2023.02.02 aPtwNfIgRqihTqG8bmDgVg   1   1          1            0      6.1kb          6.1kb

在Kibana中查询,可以看到我们从标准输入中输入的"Hello World!"已经存储到了Elasticsearch中。

<think>好的,我现在需要帮助用户解决如何配置Logstash连接Elasticsearch 4.1版本的问题。首先,我应该回顾一下用户提供的引用内容,看看里面是否有相关的配置信息。 用户给出的引用[1]提到Logstash接收Filebeat的数据,并修改Logstash配置文件。里面有一个配置示例,其中output部分指向Elasticsearch的地址和端口,这可能是一个通用的配置方法,但需要确认是否适用于4.1版本。引用[4]详细说明了Elasticsearch插件的配置,包括hosts的设置、索引命名规则以及路由配置。这可能对连接配置有帮助,特别是hosts部分,用户需要指定正确的集群地址。 接下来,我需要考虑Elasticsearch 4.1的兼容性问题。用户提到的引用[2]讨论了Spring Data Elasticsearch与不同版本的兼容性,虽然主要涉及应用层面的整合,但版本兼容性确实重要。LogstashElasticsearch之间的版本匹配也很关键。查阅官方文档,Logstash的版本应该与Elasticsearch的主版本号一致,否则可能出现兼容性问题。例如,Logstash 2.x版本通常对应Elasticsearch 2.x,而Elasticsearch 4.1可能需要Logstash 4.x版本的支持。用户可能需要确认Logstash的版本是否支持Elasticsearch 4.1,如果版本不匹配,可能需要升级或降级Logstash。 然后,配置Logstash的输出部分。根据引用[1]和[4],output段需要指定Elasticsearch的hosts、索引名称以及其他参数。例如,hosts应该是Elasticsearch节点的地址和端口,如http://localhost:9200。索引的命名规则可能根据需求定制,比如按时间分片。引用[4]中的index => "release_upgrade_es_%{+YYYY.MM}"展示了如何按年月分库,用户可能需要类似的配置。 此外,身份验证和SSL/TLS的问题。如果Elasticsearch集群启用了安全功能,Logstash需要配置用户名和密码。这可能涉及到在output中添加user和password参数。同时,如果使用HTTPS,需要设置ssl为true并指定证书路径。不过,Elasticsearch 4.1可能默认不启用安全设置,所以这部分可能需要根据实际情况调整。 重启Logstash服务并验证连接也是关键步骤。用户需要确保配置文件的语法正确,然后启动Logstash并查看日志是否有错误。引用[3]中提到了使用systemctl启动Elasticsearch并检查端口9200是否监听,类似的方法可以用于验证Logstash是否成功连接Elasticsearch。 最后,考虑版本差异带来的问题。如果用户使用的是较新的Logstash版本,可能需要调整插件或配置参数以适应Elasticsearch 4.1。例如,某些参数可能在旧版本中不可用,或者语法有所不同。用户需要参考对应版本的官方文档进行配置调整。 总结起来,步骤大致是:确认版本兼容性,配置output插件中的hosts、索引、认证等,处理可能的SSL设置,测试连接并解决版本差异问题。需要提醒用户注意版本匹配,并提供必要的配置示例和验证方法。</think>### Logstash连接Elasticsearch 4.1的配置方法 #### 1. **版本兼容性验证** - Elasticsearch 4.1建议使用Logstash **2.x至4.x版本**(官方推荐Logstash 2.4.x)[^2]。 - 若使用较新的Logstash版本(如7.x),需调整插件参数或降级至兼容版本。 #### 2. **基础配置模板** 在Logstash配置文件(如`logstash.conf`)的`output`部分添加以下内容: ```ruby output { elasticsearch { hosts => ["http://localhost:9200"] # ES节点地址 index => "自定义索引名-%{+YYYY.MM.dd}" # 按时间分片 document_type => "_doc" # 4.x版本需指定类型 } } ``` #### 3. **关键参数详解** - **`hosts`** 支持多节点集群配置,例如: ```ruby hosts => ["http://node1:9200", "http://node2:9200"] ``` - **`index`** 支持动态变量,如`%{[@metadata][product]}`引用字段[^4]。 - **`routing`** 若需按字段路由分片,添加: ```ruby routing => "%{product_name}" ``` #### 4. **身份验证与SSL** - **基础认证**(若ES启用): ```ruby user => "elastic" password => "密码" ``` - **HTTPS连接**: ```ruby ssl => true cacert => "/path/to/elasticsearch-ca.pem" ``` #### 5. **调试与验证** - 启动Logstash时指定配置文件: ```bash bin/logstash -f logstash.conf ``` - 检查ES索引是否生成: ```bash curl -XGET 'http://localhost:9200/_cat/indices?v' ``` #### 6. **版本差异处理** - **数据类型映射**:4.x版本需显式定义`document_type`。 - **插件兼容性**:若使用`elasticsearch`输出插件,需确保无弃用参数。 --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MCNU云原生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值