案例實施
本實驗實現如下功能:java
node1上的配置: [root@localhost ~]# vim /etc/hostname node1 [root@localhost ~]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.8.134 node1 192.168.8.136 node2
node2上的配置: [root@localhost ~]# vim /etc/hostname node2 [root@localhost ~]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.8.134 node1 192.168.8.136 node2
2.部署Elasticsearch軟件。
所需ELK安裝包:連接https://pan.baidu.com/s/17cHU4XY9q1i90Z6ywRDFjg
提取碼:k43i
1)安裝Elasticsearch軟件
Elasticsearch軟件能夠經過RPM安裝,YUM安裝或者源碼包安裝,生產環境中用戶能夠根據實際狀況進行安裝方式的選擇。本人用的是RPM進行安裝。node
[root@node1 media]# rpm -ivh elasticsearch-5.5.0.rpm 警告:elasticsearch-5.5.0.rpm: 頭V4 RSA/SHA512 Signature, 密鑰 ID d88e42b4: NOKEY 準備中... ################################# [100%] Creating elasticsearch group... OK Creating elasticsearch user... OK 正在升級/安裝... elasticsearch-0:5.5.0-1 ################################# [100%] NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd sudo systemctl daemon-reload sudo systemctl enable elasticsearch.service You can start elasticsearch service by executing sudo systemctl start elasticsearch.service
2)加載系統服務linux
[root@node1 ~]# systemctl daemon-reload [root@node1 ~]# systemctl enable elasticsearch.service Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.
3)更改Elasticsearch主配置文件web
[root@node1 ~]# vim /etc/elasticsearch/elasticsearch.yml cluster.name: my-elk-cluster //羣集名字 node.name: node-1 //節點名字 path.data: /data/elk_data //數據存放路徑 path.logs: /var/log/elasticsearch/ //日誌存放路徑 bootstrap.memory_lock: false //在啓動時侯不鎖定內存 network.host: 0.0.0.0 //提供服務綁定的ip地址,0.0.0.0表明全部地址 http.port: 9200 //偵聽端口爲9200 discovery.zen.ping.unicast.hosts: ["node1", "node2"] //羣集發現經過單播實現
4)建立數據存放路徑並受權apache
[root@node1 ~]# vim /etc/elasticsearch/elasticsearch.yml [root@node1 ~]# mkdir -p /data/elk_data [root@node1 ~]# chown elasticsearch:elasticsearch /data/elk_data/
5)啓動elasticsearch並查看是否成功開啓npm
[root@node1 ~]# systemctl start elasticsearch.service [root@node1 ~]# cd /etc/elasticsearch/ [root@node1 elasticsearch]# netstat -anpt | grep 9200 tcp6 0 0 :::9200 :::* LISTEN 4072/java
6)查看節點信息json
7)查看羣集的健康狀況,能夠看見status值爲green(綠色),表示節點健康運行bootstrap
經過以上方式查看羣集的狀態對用戶並不太友好,能夠經過Elasticsearch-head插件,能夠更方便的管理羣集。vim
1.1安裝Elasticsearch-head插件
1)編譯安裝node。編譯安裝node耗時較長,大約40min,根據機器的配置可能略有不一樣,請耐心等待跨域
[root@node1 media]# tar zxvf node-v8.2.1.tar.gz -C /usr/src [root@node1 media]# cd /usr/src/node-v8.2.1/ [root@node1 node-v8.2.1]# ./configure && make && make install
2)安裝phantomjs
[root@node1 node-v8.2.1]# cd /media/ [root@node1 media]# tar xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/src/ [root@node1 media]# cd /usr/src/phantomjs-2.1.1-linux-x86_64/bin [root@node1 bin]# cp phantomjs /usr/local/bin/
3)安裝Elasticsearch-head
[root@node1 media]# tar xvzf elasticsearch-head.tar.gz -C /usr/src/ [root@node1 media]# cd /usr/src/elasticsearch-head/ [root@node1 elasticsearch-head]# npm install //安裝依賴包
4)修改Elasticsearch主配置文件
[root@node1 ~]# vim /etc/elasticsearch/elasticsearch.yml http.cors.enabled: true //開啓跨域訪問支持 http.cors.allow-origin: "*" //跨域訪問容許的域名地址 兩段http.cors都爲添加上去的 [root@node1 ~]# systemctl restart elasticsearch.service //重啓服務
5)啓動服務。必須在解壓後的elasticsarch-head目錄下啓動服務,進程會讀取該目錄下的grunfile.js文件。elasticsearch-head監聽端口是9100,經過該端口是否監聽來判斷服務是否正常開啓。
[root@node1 elasticsearch-head]# npm run start & [1] 50445 [root@node1 elasticsearch-head]# > elasticsearch-head@0.0.0 start /usr/src/elasticsearch-head > grunt server Running "connect:server" (connect) task Waiting forever... Started connect web server on http://localhost:9100 [root@node1 elasticsearch-head]# netstat -anpt | grep 9100 tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 50458/grunt [root@node1 elasticsearch-head]# netstat -anpt | grep 9200 tcp6 0 0 :::9200 :::* LISTEN 50290/java
6)經過Elaticsearch-head查看Elaticsearch信息。經過訪問瀏覽器http://192.168.8.134:9100/並鏈接羣集,如圖所示。
7)插入索引。經過命令插入一個測試索引,經過輸出信息能夠看見索引爲index-demo,類型爲test。
[root@node1 ~]# curl -XPUT 'localhost:9200/index-demo/test/1?pretty' -H 'Content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}' { "_index" : "index-demo", "_type" : "test", "_id" : "1", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "created" : true }
刷新瀏覽器,能夠看到建立成功的索引,如圖所示。
選擇「概覽」選項卡,還能夠看見索引默認被分片成5個,且存在一個副本,如圖所示。
1.2Logstash安裝及使用方法
logstash通常部署在須要監控其日誌的服務器中,在本案例中,logstash部署在Apache服務器上,用於收集Apache服務器的日誌信息併發送到Elaticsearch中。在正式部署以前,先在node1上部署Logstash,以熟悉logstash 的使用方法。logstash也須要java環境,因此在安裝以前也須要檢查當前機器的java環境是否存在。
1)在node1上安裝logstash
[root@node1 media]# rpm -ivh logstash-5.5.1.rpm 警告:logstash-5.5.1.rpm: 頭V4 RSA/SHA512 Signature, 密鑰 ID d88e42b4: NOKEY 準備中... ################################# [100%] 正在升級/安裝... 1:logstash-1:5.5.1-1 ################################# [100%] Using provided startup.options file: /etc/logstash/startup.options Successfully created system startup script for Logstash [root@node1 ~]# systemctl start logstash.service [root@node1 ~]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
2)測試logstash。logstash命令行中經常使用的命令選項以下
[root@node1 ~]# logstash -e 'input { stdin{}} output { stdout{} }' www.baidu.com //鍵入內容 2019-10-10T05:00:36.651Z node1 www.baidu.com //輸出結果
[root@node1 ~]# logstash -e 'input { stdin{}} output { stdout{ codec=>rubydebug } }' www.aa.com //鍵入內容 { "@timestamp" => 2019-10-10T05:10:09.330Z, //輸出後的結果 "@version" => "1", "host" => "node1", "message" => "www.aa.com" }
[root@node1 ~]# logstash -e 'input { stdin{}} output { elasticsearch { hosts=>["192.168.8.134:9200"]} }' www.baidu.com //鍵入內容 www.aa.com //鍵入內容
在Elasticsearch中查看Logstash新增的索引,如圖所示
3)logstash配置文件
logstash配置文件基本由三個部分組成,input,output,filter。
下面經過修改logstash配置文件,讓其收集系統日誌/var/log/messages,並將其輸出到elaticsearch中。
[root@node1 ~]# chmod o+r /var/log/messages [root@node1 ~]# ll /var/log/messages -rw----r-- 1 root root 320286 10月 10 13:23 /var/log/messages [root@node1 ~]# touch /etc/log login.defs logrotate.conf logrotate.d/ logstash/ [root@node1 ~]# touch /etc/log login.defs logrotate.conf logrotate.d/ logstash/ [root@node1 ~]# touch /etc/logstash/conf.d/system.conf [root@node1 ~]# vim /etc/logstash/conf.d/system.conf input { file { path => "/var/log/messages" type => "system" start_position => "beginning" } } output { elasticsearch { hosts => ["192.168.8.134:9200"] index => "system-%{+YYYY.MM.dd}" } } [root@node1 ~]# systemctl restart logstash.service //重啓logstash服務
完成後,經過瀏覽器查看Elasticsearch的信息,如圖所示
1.3安裝Kibana
1)在node1服務器上安裝Kibana,並設置開機啓動
[root@node1 ~]# cd /media/ [root@node1 media]# rpm -ivh kibana-5.5.1-x86_64.rpm 警告:kibana-5.5.1-x86_64.rpm: 頭V4 RSA/SHA512 Signature, 密鑰 ID d88e42b4: NOKEY 準備中... ################################# [100%] 正在升級/安裝... 1:kibana-5.5.1-1 ################################# [100%] [root@node1 media]# systemctl enable kibana.service Created symlink from /etc/systemd/system/multi-user.target.wants/kibana.service to /etc/systemd/system/kibana.service.
2)設置kibana的主配置文件/etc/kibana/kibana.yml
[root@node1 ~]# vim /etc/kibana/kibana.yml server.port: 5601 //kibana打開的端口 server.host: "0.0.0.0" //kibana偵聽的地址 elasticsearch.url: "http://192.168.8.134:9200" //和Elaticsearch創建鏈接 kibana.index: ".kibana" //在elasticsearch中添加.kibana索引
3)啓動kibana服務[root@node1 ~]# systemctl start kibana.service
4)驗證kibana。經過瀏覽器訪問http://192.168.8.134:5601,第一次登錄須要添加一個Elasticsearch索引,添加前面建立的索引實。添加前面所建立的索引system。
5)將Apache服務器的日誌添加到Elaticsearch並經過kibana顯示。
[root@localhost ~]# yum -y install httpd [root@localhost ~]# systemctl restart httpd
在Apache服務器上安裝Logstash,以便將收集的日誌發送到Elasticsearch中。
[root@localhost ~]# java -version openjdk version "1.8.0_102" OpenJDK Runtime Environment (build 1.8.0_102-b14) OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode) [root@localhost media]# rpm -ivh logstash-5.5.1.rpm warning: logstash-5.5.1.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY Preparing... ################################# [100%] Updating / installing... 1:logstash-1:5.5.1-1 ################################# [100%] [root@localhost ~]# systemctl daemon-reload [root@localhost ~]# systemctl enable logstash.service Created symlink from /etc/systemd/system/multi-user.target.wants/logstash.service to /etc/systemd/system/logstash.service.
編寫Logstash配置文件apache_log.conf以下。
[root@localhost ~]# cd /etc/logstash/conf.d/ [root@localhost conf.d]# touch apache_log.conf [root@localhost conf.d]# vim apache_log.conf input { file { path => "/etc/httpd/logs/access_log" type => "access" start_position => "beginning" } file { path => "/etc/httpd/logs/error_log" type => "error" start_position => "beginning" } } output { if [type] == "access"{ elasticsearch { hosts => ["192.168.8.134:9200"] index => "apache_access-%{+YYYY.MM.dd}" } } if [type] == "error"{ elasticsearch { hosts => ["192.168.8.134:9200"] index => "apache_error-%{+YYYY.MM.dd}" } } } [root@localhost conf.d]# /usr/share/logstash/bin/logstash -f apache_log.conf
經過訪問瀏覽器訪問http://192.168.8.134:9100查看索引是否建立成功。
登錄kibana,單擊「create lndex Pattern」按鈕添加索引。
在索引名中輸入以前配置的output前綴「apache_access」,單擊「create」按鈕。
用相同的方法添加apache_error-索引。
選擇「discover」選項卡,在中間下拉表中選擇剛添加的apache_access-索引,能夠查看相應的圖表及日誌信息,還能夠根據Fields進行歸類顯示。