Logstash: 啟動監控及集中管理


在本篇文章里,我將詳細介紹如果啟動Logstash的監控及集中管理。

前提條件

安裝好Logstash,設置Elasticsearch及Kibana的安全密碼。

如何監控Logstash?

我們安裝如下的步驟來實現監控Logstash的目的:

Step 1: 在Kibana中啟動監控:

然后,我們可以看到如下的畫面:

Step 2:配置Logstash

如果我們在沒有配置Logstash的情況下直接運行Logstash,我們會發現如下的錯誤:

liuxg-2:logstash-7.5.0 liuxg$ ./bin/logstash
Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.headius.backport9.modules.Modules (file:/Users/liuxg/elastic5/logstash-7.5.0/logstash-core/lib/jars/jruby-complete-9.2.8.0.jar) to field java.io.FileDescriptor.fd
WARNING: Please consider reporting this to the maintainers of com.headius.backport9.modules.Modules
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Thread.exclusive is deprecated, use Thread::Mutex
Sending Logstash logs to /Users/liuxg/elastic5/logstash-7.5.0/logs which is now configured via log4j2.properties
ERROR: Pipelines YAML file is empty. Location: /Users/liuxg/elastic5/logstash-7.5.0/config/pipelines.yml
usage:
  bin/logstash -f CONFIG_PATH [-t] [-r] [] [-w COUNT] [-l LOG]
  bin/logstash --modules MODULE_NAME [-M "MODULE_NAME.var.PLUGIN_TYPE.PLUGIN_NAME.VARIABLE_NAME=VALUE"] [-t] [-w COUNT] [-l LOG]
  bin/logstash -e CONFIG_STR [-t] [--log.level fatal|error|warn|info|debug|trace] [-w COUNT] [-l LOG]
  bin/logstash -i SHELL [--log.level fatal|error|warn|info|debug|trace]
  bin/logstash -V [--log.level fatal|error|warn|info|debug|trace]
  bin/logstash --help
[2019-12-30T15:32:49,899][ERROR][org.logstash.Logstash    ] java.lang.IllegalStateException: Logstash stopped processing because of an error: (SystemExit) exit

首先在Logstash的安裝目錄中找到logstash的配置文件logstash.yml:

我們可以在Logstash的根目錄下運行一下的命令:

./bin/logstash-keystore create

上面的命令將創建一個Created Logstash keystore:

我們可以利用如下的命令來創建一些key: ES_HOST及ES_PWD。

./bin/logstash-keystore add ES_HOST

當我們運行時,可以把我們的Elasticsearch的host地址粘貼過來:

比如針對我們的情況,我們粘貼的地址是http://localhost:9200/。按照同樣的方法,我們可以創建另外一個ES_PWD key:

./bin/logstash-keystore add ES_PWD


這些key可以在logstash的配置文件中所使用。這樣我們可以不暴露我們的密碼給別人看到。

我們打開logstash.yml文件,並同時使用如下的配置:

xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.username: logstash_system
xpack.monitoring.elasticsearch.password: "${ES_PWD}"
xpack.monitoring.elasticsearch.hosts: ["${ES_HOST}"]

這里,我們打開monitoring的開關,並同時使用我們在創建安全賬戶已經創建好的用戶名logstash_system:

現在我們下載一個我之前做個的一個練習:

git clone https://github.com/liu-xiao-guo/logstash_multi-pipeline

我們可以下載到我們指定的目錄里。但是記得修改在apache.conf中的path路徑,否則我們會錯的。

apache.conf

input {
  file {
    path => "/Users/liuxg/data/multi-pipeline/apache.log"
  	start_position => "beginning"
    sincedb_path => "/dev/null"
    # ignore_older => 100000
    type => "apache"
  }
}

filter {
  	grok {
    	match => {
      		"message" => '%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{DATA:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response:int} (?:-|%{NUMBER:bytes:int}) %{QS:referrer} %{QS:agent}'
    	}
  	}
}


output {
	stdout {
		codec => rubydebug
	}

  	elasticsearch {
        hosts => ["${ES_HOST}"]
        user => "elastic"
        password => "${ES_PWD}"
    	index => "apache_log"
    	template => "/Users/liuxg/data/multi-pipeline/apache_template.json"
    	template_name => "apache_elastic_example"
    	template_overwrite => true
  }	
}

同時,我們需要添加hosts, user及password的定義。這是因為我們現在我們是需要有用戶名及密碼才可以連接到Elasticsearch。這個和之前的練習是不一樣的。同時我們可以創建自己的用戶名及密碼。我們可以參考“Elasticsearch:用戶安全設置”來創建自己喜歡的賬號。在這里,為了方便,我們使用elastic賬號。在這里,我們是用${ES_HOST}${ES_PWD}來代表我們的Elasticsearch地址及密碼。這樣的好處是我們不暴露我們的密碼在配置文件中。

一旦上面的配置已經做好了,我們可以使用如下的命令來把我們的apache log文件上傳到Elasticsearch之中:

sudo ./bin/logstash -f ~/data/multi-pipeline/apache.conf

Step3:打開Stack Monitoring UI

我們安裝如下的步驟來查看Logstash的monitoring:

我們會發現在Logstash運行的情況下,有一個Logstash的類別出現了。這在之前是沒有的。我們點擊Nodes 1:

我們看到一個Logstash的運行實例。它顯示了目前CPU的使用情況和Load Average及JVM head的使用情況。點擊上面的超鏈接:

我們可以看到更加詳細的使用情況。我們也可以查看pipeline的狀況:

Logstash集中管理

首先我們來創建一個叫做logstash_writer的role:

點擊“Create role”來創建我們的role。

首先讓我們來創建一個具有logstash_user的用戶賬號:

點擊上面的“Create user”按鈕來創建一個用戶:


點擊“Create user”來創建一個叫做logstash_user的賬號。它具有logstash_admin及logstash_system的權限。

為了啟動集中管理,我們必須在logstash.yml文件里做相應的配置:

xpack.management.enabled: true
xpack.management.pipeline.id: ["main", "apache_logs", "my_apache_logs"]
xpack.management.elasticsearch.username: "logstash_user"
xpack.management.elasticsearch.password: "123456"
xpack.management.elasticsearch.hosts: ["${ES_HOST}"]

我們可以在鏈接https://www.elastic.co/guide/en/logstash/current/logstash-centralized-pipeline-management.html
找到更多的描述。在這里,我們啟動logstash的管理,同時也把我們剛才創建的logstash_user的賬號填入進來,並同時取了一個叫做my_apache_logs的pipeline id。

一旦啟動了logstash的集中管理,我們就可以直接啟動logstash,而不用跟任何的參數:

sudo ./bin/logstash

這樣我們的logstash已經被成功運行起來了。我們接下來可以在Kibana中創建自己的pipeline。

點擊上面的“Create pipeline”按鈕,我們可以看到如下的畫面:

接下來我們點擊“Create and Deploy”按鈕:

這樣我們的my_apache_logs就被創建好了,而且已經被成功執行了。我們可以在Kibana中創建一個叫apache_log的index pattern,然后打開Discover,你可以看到剛剛被Logstash導入的數據:

好了到此,我們關於如何啟動Logstash的監控及集中管理講完了。

示例文件下載地址:https://files.cnblogs.com/files/sanduzxcvbnm/logstash_multi-pipeline-master.zip
————————————————
版權聲明:本文為CSDN博主「Elastic 中國社區官方博客」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/UbuntuTouch/article/details/103767088


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM