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

我们知道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中。

Elasticsearch 8.5.2 集群搭建通常涉及以下几个步骤: 1. **安装前提**: 确保你的系统满足Elasticsearch的硬件要求,如足够的内存、CPU以及磁盘空间。 2. **下载安装包**: 访问Elasticsearch官方网站下载适用于你的操作系统的版本,例如 `tar.gz` 或者 `deb/rpm` 包。 3. **解压并配置**: 解压缩下载的文件到一个合适的位置,然后编辑 `elasticsearch.yml` 文件,配置基本的集群信息,比如节点名称、网络端口、路径等。 4. **启动单节点**: 使用命令行启动Elasticsearch服务,例如在Linux上运行 `bin/elasticsearch` 或 Windows上 `.\bin\elasticsearch.bat`。 5. **验证集群状态**: 可以通过浏览器访问 http://localhost:9200/ 来检查是否能正常连接到服务器,并确认集群是否初始化成功。 6. **设置集群**: 如果你想创建多节点集群,需要在其他机器上重复上述步骤,并在集群部分指定一个主节点(通常是第一个节点),同时加入其他节点。 7. **安全设置**: 安装X-Pack插件来提供更高级的安全功能,包括SSL/TLS支持,用户认证和权限管理。 8. **监控与管理**: 可以使用Kibana作为Elasticsearch的可视化工具,配合ELK堆栈(Elasticsearch + Logstash + Kibana)进行日志管理和查询分析。 **相关问题--:** 1. 如何在Elasticsearch 8.5.2中添加新节点? 2. 如何配置Elasticsearch 8.5.2的索引和映射? 3. 如何备份和恢复Elasticsearch数据?
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MCNU云原生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值