我們知道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目錄,執(zhí)行腳本在bin目錄,進入logstash主目錄,執(zhí)行以下命令啟動Logstash:
./bin/logstash -e 'input { stdin { } } output { stdout {} }'
這是一個最簡單的信息采集,數(shù)據(jù)來源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)加密的數(shù)字證書,存放在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中的索引,可以看到已經(jīng)創(chuàng)建出來索引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!"已經(jīng)存儲到了Elasticsearch中。文章來源:http://www.zghlxwxcb.cn/news/detail-421787.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-421787.html
到了這里,關于Logstash如何連接開啟了SSL的Elasticsearch集群?的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!