Logstash:如何连接到带有 HTTPS 访问的集群

2,370 阅读3分钟

前段时间,有一个开发者在评论区问了一个问题:如何运用 Logstash 采集数据,并写入到带有 HTTPS 的 Elasticsearch 集群中。我们知道,在  Elasticsearch 8.x 的安装中,SSL 的连接是最基本的配置。那么我们如何把采集的数据成功地写到 Elasticsearch 中去呢?在我之前的视频中有分享。在今天的文章中,我将采用另外一种方法来进行演示。

在今天的展示中,我将使用最新的 Elastic Stack 8.4.1 来进行展示。

Logstash:如何连接到带有 HTTPS 访问的集群

如何配置 Metricbeat 及 Logstash 为 Elasticsearch 8.0 收集数据

安装

Elasticsearch 及 Kibana

如果你还没有安装 Elasticsearch 及 Kibana,请参阅如下的文章来安装自己的 Elasticsearch 及 Kibana:

特别需要指出的是:我们需要选择自己的平台,并安装好 Elasticsearch 8.x 及 Kibana 8.x 版本。

Logstash

Logstash 的安装非常简单直接。我们可以参考文章 “如何安装 Elastic 栈中的 Logstash”。我们直接到官方网站下载和 Elasticsearch 一样的版本,并解压到相应的目录中即可。

写入数据到 Elasticsearch 中

在 Logstash 的安装根目录下,我们创建一个如下的配置文件:

logstash.conf

`

1.  input {
2.    generator {
3.      message => "liuxg"
4.      count => 1
5.    }
6.  }

8.  output {
9.  	stdout {
10.  		codec => rubydebug
11.  	}

13.      elasticsearch {
14.      	hosts => ["https://localhost:9200"]
15.      	index => "data-%{+YYYY.MM.dd}"
16.      	user => "elastic"
17.      	password => "ndktp2Xr2h_*Q6EZfq4t"
18.  		ssl_certificate_verification => true
19.  		truststore => "/Users/liuxg/elastic/elasticsearch-8.4.1/config/certs/http.p12"
20.  		truststore_password => "buSYG3l-R0mdN6pggG76VA"
21.    	}
22.  }

`![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)

在上面的第一个部分,我们使用 generator 来生成一个 message。我们在 output 里定义两个输出,一个是 stdout,而另外一个是 elasticsearch output。我们查一下官方文档,并对它做如上的配置。需要指出的是:

  • hosts:这个是 Elasticsearch 集群的终端地址。你需要根据自己的配置进行修改
  • index:这个在 Elasticsearch 中创建的索引的名称
  • user:这个是在 Elasticsearch 中创建的用户。我使用的是超级用户 elastic,尽管这个在生产环境中是不必要的。你可以根据文章 “Elasticsearch:用户安全设置” 来创建具有适当权限的用户
  • password:这个是上面的 user 用户对应的密码
  • ssl_certificate_verification:当为 true 时,启动 SSL 检验
  • truststore:这个是 Elasticsearch 的证书所在的地址
  • truststore_password:这个是 truststore 的密码

我们可以根据如下的方式来得到这个密码:



1.  $ pwd
2.  /Users/liuxg/elastic/elasticsearch-8.4.1
3.  $ ./bin/elasticsearch-keystore list
4.  keystore.seed
5.  xpack.security.http.ssl.keystore.secure_password
6.  xpack.security.transport.ssl.keystore.secure_password
7.  xpack.security.transport.ssl.truststore.secure_password
8.  $ ./bin/elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_password
9.  buSYG3l-R0mdN6pggG76VA


在上面的最后一个命令中它显示了 keystore 的密码。



1.  $ pwd
2.  /Users/liuxg/elastic/elasticsearch-8.4.1
3.  $ ./bin/elasticsearch-keystore list
4.  keystore.seed
5.  xpack.security.http.ssl.keystore.secure_password
6.  xpack.security.transport.ssl.keystore.secure_password
7.  xpack.security.transport.ssl.truststore.secure_password
8.  $ ./bin/elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_password
9.  buSYG3l-R0mdN6pggG76VA
10.  $ ls config/certs/
11.  http.p12      http_ca.crt   transport.p12


我们在 Logstash 的安装目录下使用如下的方式来进行运行:

./bin/logstash -f logstash.conf

我们接下来到 Kibana 中进行查看:

很显然,我们的数据已经写入到 Elasticsearch 中了。