實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

實踐出真知——部署ELK日誌分析系統(提供包)

前言

​ 前一篇文章介紹了有關ELK日誌分析系統的理論原理,本文將結合原理經過案例環境部署及配置ELK日誌分析系統。java

環境規劃

使用集羣方式,2個Elasticsearch節點,其中一臺安裝Kibana便可,另外安裝Apache服務做爲被監控的服務器,安裝Logstash。node

相關規劃以下表所示:linux

主機 操做系統 主機名 IP地址 主要安裝軟件
服務器 Centos7.4 node1 20.0.0.140 Elasticsearch Kibana
服務器 Centos7.4 node2 20.0.0.139 Elasticsearch
服務器 Centos7.4 Apache 20.0.0.141 Logstash Apache

部署流程綜述

一、檢查服務器環境(推薦先進行時間同步),找到所需軟件包
二、在兩個elasticsearch節點上部署elasticsearch環境、elasticsearch軟件、
三、檢查服務是否開啓並在瀏覽器中驗證、檢查健康狀態與查看狀態信息
四、在兩個elasticsearch節點上安裝elasticsearch-head插件(方便查看集羣信息)
五、經過瀏覽器驗證、檢查健康狀態,模擬建立索引來驗證信息
六、安裝Apache服務在20.0.0.141服務器上,而且安裝Logstash軟件
七、在Apache服務器上進行對接測試(使用Logstash將信息寫入elasticsearch中)而且進行驗證
八、測試無誤後進行對接配置(20.0.0.141上)、在瀏覽器上驗證
九、回到node1服務器上安裝可視化軟件Kibana,啓動服務並進行驗證
十、進行對Apache主機的日誌文件的對接(access_log以及error_log)配置與驗證

軟件包資源連接:https://pan.baidu.com/s/1NXl3l-fs15tLZcweHwHTCA
提取碼:hmw7 web

部署過程演示

一、【配置elasticsearch環境】

###登陸20.0.0.140  更改主機名 配置域名解析 查看Java環境 ###

[root@node1 ~]# hostnamectl set-hostname node1
[root@node1 ~]# su
[root@node1 ~]# vi /etc/hosts
20.0.0.140   node1
20.0.0.139   node2

[root@node1 ~]# java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
#關閉防火牆和核心防禦
[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# setenforce 0
###登陸20.0.0.139  更改主機名 配置域名解析 查看Java環境 ###

[root@node2 ~]# hostnamectl set-hostname node2
[root@node2 ~]# su
[root@node2 ~]# vi /etc/hosts
20.0.0.140   node1
20.0.0.139   node2

[root@node2 ~]# java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
#關閉防火牆和核心防禦
[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# setenforce 0

二、【部署elasticsearch軟件】

(注意:該流程在node上也須要配置,不一樣點在於配置文件中的node1須要改成node2 )

####登陸20.0.0.140####
#一、安裝elasticsearch—rpm包
上傳elasticsearch-5.5.0.rpm到/opt目錄下
[root@node1 ~]# cd /opt
[root@node1 opt]# rpm -ivh elasticsearch-5.5.0.rpm 

#二、加載系統服務
[root@node1 opt]# systemctl daemon-reload    
[root@node1 opt]# systemctl enable elasticsearch.service

#三、更改elasticsearch主配置文件
[root@node1 opt]# cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak  #儘可能備份,以避免誤改不可挽回
[root@node1 opt]#  vi /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster                   ####集羣名字
node.name: node1                                  ####節點名字
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"]           ####集羣發現經過單播實現

#使用grep命令過濾文件,方便查看配置對比有沒有錯誤
[root@node1 opt]#  grep -v "^#" /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster
node.name: node1
path.data: /data/elk_data
path.logs: /var/log/elasticsearch/
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["node1", "node2"]

#四、建立數據存放路徑並受權
[root@node1 opt]# mkdir -p /data/elk_data
[root@node1 opt]# chown elasticsearch:elasticsearch /data/elk_data/

#五、啓動elasticsearch是否成功開啓
[root@node1 elasticsearch]# systemctl start elasticsearch.service
[root@node1 elasticsearch]# netstat -antp |grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      64463/java

三、【驗證】

瀏覽器打開 http://20.0.0.140:9200http://20.0.0.139:9200 shell

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

四、【集羣檢查健康和狀態】

一、打開 http://20.0.0.140:9200/_cluster/health?pretty 檢查羣集健康狀況(注意URL的下劃線哈!)apache

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

二、打開 http://20.0.0.140:9200/_cluster/state?pretty ###檢查羣集健康狀況npm

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

五、【安裝elasticsearch-head插件】(兩個node上相同配置)

####登陸20.0.0.140  node1主機####
#上傳node-v8.2.1.tar.gz到/opt
###編譯安裝node組件依賴包##耗時比較長
[root@localhost opt]# cd /opt
[root@node1 opt]# tar xzvf node-v8.2.1.tar.gz
[root@node1 opt]# cd node-v8.2.1/
[root@node1 node-v8.2.1]# ./configure 
[root@node1 node-v8.2.1]# make
[root@node1 node-v8.2.1]# make install

####安裝phantomjs####
#上傳軟件包到/usr/local/src/
[root@localhost node-v8.2.1]# cd /usr/local/src/
[root@localhost src]# tar xjvf phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@localhost src]# cd phantomjs-2.1.1-linux-x86_64/bin
[root@localhost bin]# cp phantomjs /usr/local/bin

###安裝elasticsearch-head###
[root@localhost bin]# cd /usr/local/src/
[root@localhost src]# tar xzvf elasticsearch-head.tar.gz
[root@localhost src]# cd elasticsearch-head/
[root@localhost elasticsearch-head]# npm install

#####修改主配置文件###
[root@localhost ~]# cd ~
[root@localhost ~]# vi /etc/elasticsearch/elasticsearch.yml   ####下面配置文件,插到末尾##
http.cors.enabled: true
http.cors.allow-origin: "*"
[root@localhost ~]# systemctl restart elasticsearch

####啓動elasticsearch-head  啓動服務器####
[root@localhost ~]# cd /usr/local/src/elasticsearch-head/
[root@localhost elasticsearch-head]# npm run start &      ####切換到後臺運行
[1] 114729
[root@localhost elasticsearch-head]# 
> elasticsearch-head@0.0.0 start /usr/local/src/elasticsearch-head
> grunt server

Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100

此時另外開啓一個terminal,查看端口狀態json

[root@localhost elasticsearch-head]# netstat -lnupt |grep 9100
tcp        0      0 0.0.0.0:9100            0.0.0.0:*               LISTEN      114739/grunt        
[root@localhost elasticsearch-head]# netstat -lnupt |grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      114626/java

六、【驗證】

打開瀏覽器輸入http://20.0.0.140:9100/ 能夠看見羣集很健康是綠色bootstrap

在Elasticsearch 後面的欄目中輸入http://20.0.0.140:9200 瀏覽器

而後點鏈接 會發現:集羣健康值: green (0 of 0)
●node1信息動做
★node2信息動做

以下圖:

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

node2也是如此,以下圖所示:

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

此時,登陸20.0.0.140 node1主機 建立索引爲index-demo,類型爲test

[root@node1 ~]# curl -XPUT 'localhost:9200/index-demo/test/1?pretty&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
}

隨之打開瀏覽器輸入http://20.0.0.140:9100/ 查看索引信息

node1信息動做 01234
node2信息動做 01234

●上面圖能夠看見索引默認被分片5個,而且有一個副本

點擊數據瀏覽--會發如今node1上建立的索引爲index-demo,類型爲test, 相關的信息,以下圖:

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

七、【安裝logstash並作一些日誌蒐集輸出到elasticsearch中】

#一、更改主機名關閉防火牆和核心防禦
hostnamectl set-hostname apache
systemctl stop firewalld
setenforce 0
#二、安裝Apahce服務(httpd)
[root@apache ~]# yum -y install httpd
[root@apache ~]# systemctl start httpd
#三、安裝Java環境
[root@apache ~]# java -version        ###若是沒有裝 安裝yum -y install java
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

#四、安裝logstash
上傳logstash-5.5.1.rpm到/opt目錄下
[root@apache ~]# cd /opt
[root@apache opt]# rpm -ivh logstash-5.5.1.rpm      ##安裝logstash                         
[root@apache opt]# systemctl start logstash.service         ##啓動logstash
[root@apache opt]# systemctl enable logstash.service         ##設置爲開機自啓
[root@apache opt]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/          ##創建logstash軟鏈接

八、【對接測試與驗證】

####使用logstash將信息寫入elasticsearch中#### 輸入 輸出 對接
[root@apache opt]# logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["20.0.0.140:9200"] } }'
。。。。。。。。省略。。。。。。。
The stdin plugin is now waiting for input:
10:40:06.558 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9600}##如下是須要輸入的內容
www.baidu.com                    ###輸入內容
www.sina.com.cn                   ###輸入內容
www.google.com.cn                ###輸入內容

打開瀏覽器 輸入http://20.0.0.140:9100/ 查看索引信息###
多出 logstash-2020.03.25

點擊數瀏覽查看響應的內容,以下圖

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

九、【登陸20.0.0.141 Apache主機 作對接配置】

Logstash配置文件主要由三部分組成:input、output、filter(根據須要配置)

[root@apache opt]# chmod o+r /var/log/messages
[root@apache opt]# ll /var/log/messages
-rw----r--. 1 root root 572555 4月  16 23:50 /var/log/messages

[root@apache opt]# vi /etc/logstash/conf.d/system.conf 
input {
       file{
        path => "/var/log/messages"
        type => "system"
        start_position => "beginning"
        }
      }
output {
        elasticsearch {
          hosts => ["20.0.0.140:9200"]
          index => "system-%{+YYYY.MM.dd}"
          }
        }

[root@apache opt]# systemctl restart logstash.service ##必定要重啓服務哈!!!!

打開瀏覽器 輸入http://20.0.0.140:9100/ 查看索引信息###

多出 system-2020.03.25

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

十、【回到node1服務器上安裝可視化軟件Kibana,啓動服務並進行驗證】

[root@node1 ~]# cd /usr/local/src/
[root@node1 src]# rpm -ivh kibana-5.5.1-x86_64.rpm
[root@node1 src]# cd /etc/kibana/
[root@node1 kibana]# cp kibana.yml kibana.yml.bak
[root@node1 kibana]# vi kibana.yml
server.port: 5601                #### kibana打開的端口
server.host: "0.0.0.0"           ####kibana偵聽的地址
elasticsearch.url: "http://20.0.0.140:9200"             ###和elasticsearch創建聯繫
kibana.index: ".kibana"              ####在elasticsearch中添加.kibana索引
[root@node1 kibana]# systemctl start kibana.service    ###啓動kibana服務
[root@node1 kibana]# systemctl enable kibana.service   ###開機啓動kibana服務

使用瀏覽器輸入20.0.0.140:5601,首次登陸建立一個索引 名字:system- ##這是對接系統日誌文件
一、Index name or pattern ###下面輸入system-
,而後點最下面的出面的create 按鈕建立

二、最左上角的Discover按鈕 會發現system-*信息

三、點下面的host旁邊的add 會發現右面的圖只有 Time 和host 選項了 這個比較友好

以下圖所示:

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

十一、【進行對Apache主機的日誌文件的對接(access_log以及error_log)配置與驗證】

[root@apache opt]# cd /etc/logstash/conf.d/
[root@apache conf.d]# touch apache_log.conf
[root@apache conf.d]# vi 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 => ["20.0.0.140:9200"]
          index => "apache_access-%{+YYYY.MM.dd}"
          }
        }
        if [type] == "error" {
        elasticsearch {
          hosts => ["20.0.0.140:9200"]
          index => "apache_error-%{+YYYY.MM.dd}"
          }
        }
        }

[root@apache conf.d]# /usr/share/logstash/bin/logstash -f apache_log.conf
....省略內容

打開瀏覽器訪問http://20.0.0.141
打開瀏覽器 輸入http://20.0.0.140:9100/ 查看索引信息###
能發現apache_error-2020.03.25 apache_access-2020.03.25

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

接下來:打開瀏覽器 輸入http://20.0.0.140:5601
點擊左下角有個management選項---index patterns---create index pattern
----分別建立apache_error- 和 apache_access- 的索引

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

十二、【存在的問題】

沒有作時間同步,也多是其餘問題,出如今Discover中查看Apache日誌時沒有可視化數據

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

1三、【時間同步後從新操做並訪問Apache網頁】

刪除原有的index,從新執行/usr/share/logstash/bin/logstash -f apache_log.conf命令

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

實踐出真知——部署ELK日誌分析系統(提供包,超詳細,可跟作!)

總結

以上就是部署的詳細流程了,主要是安裝部署對應的軟件,配置其主要文件,開啓相關服務後進行驗證測試!

相關文章
相關標籤/搜索