1. 程式人生 > >Centos7.5搭建ELK-6.5.0日誌分析平臺

Centos7.5搭建ELK-6.5.0日誌分析平臺

Centos7.5搭建ELK-6.5.0日誌分析平臺

1. 簡介

工作工程中,不論是開發還是運維,都會遇到各種各樣的日誌,主要包括系統日誌、應用程式日誌和安全日誌,對於開發人員來說,檢視日誌,可以實時檢視程式的執行錯誤,以及效能分析,通常,一個大中型的應用程式會被部署到多臺伺服器,那日誌檔案也會分散到不同的機器上,這樣檢視日誌難道要一臺一臺去檢視?顯然是太麻煩了,開源的日誌分析系統 ELK 完美的解決了這個問題。
ELK 並不是一個獨立的系統,她是由 ElasticSearch、Logstash、Kibana 三個開源的工具組成。

  • ElasticSearch

    ElasticSearch是一個基於Lucene的搜尋伺服器。它提供了一個分散式多使用者能力的全文搜尋引擎,基於RESTful web介面。Elasticsearch是用Java開發的,並作為Apache許可條款下的開放原始碼釋出,是當前流行的企業級搜尋引擎。設計用於雲端計算中,能夠達到實時搜尋,穩定,可靠,快速,安裝使用方便。

  • Logstash

    Logstash 是一個開源的日誌分析、收集工具,並將日誌儲存以供以後使用。

  • Kibana

    Kibana 是一個為 Logstash 和 ElasticSearch 提供的日誌分析的 Web 介面。可使用它對日誌進行高效的搜尋、視覺化、分析等各種操作。

2. 安裝

  1. 下載elk的三個組建,es,logstash,kibana

    https://artifacts.elastic.co/downloads/logstash/logstash-6.5.0.tar.gz
    https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.0.tar.gz
    https://artifacts.elastic.co/downloads/kibana/kibana-6.5.0-linux-x86_64.tar.gz
  2. 設定引數

    • 設定核心引數

      vim /etc/sysctl.conf   # 新增下面一行
      vm.max_map_count = 262144
      systcl -p    ## 載入配置
    • 修改系統最大檔案開啟數

      vim /etc/security/limits.conf   ##新增如下兩行,儲存後重新登陸使用者及生效
      * soft nofile 65536
      * hard nofile 65536
    • 關閉防火牆

      service firewalld stop
  3. 解壓並移動

    ## 新建目錄
    mkdir /usr/local/elk
    ## 解壓
    tar -vxzf elasticsearch-6.5.0.tar.gz
    tar -vxzf kibana-6.5.0-linux-x86_64.tar.gz 
    tar -vxzf logstash-6.5.0.tar.gz 
    ## 移動
    mv elasticsearch-6.5.0 /usr/local/elk/
    mv kibana-6.5.0-linux-x86_64 /usr/local/elk/
    mv logstash-6.5.0 /usr/local/elk/
  4. 安裝elasticsearch資料儲存器,用於資料儲存

    vim /usr/local/elk/elasticsearch-6.5.0/config/elasticsearch.yml
    # ---------------------------------- Cluster -----------------------------------
    cluster.name: ES-cluster    ##設定叢集名稱,叢集內的節點都要設定相同,可自定義
    # ------------------------------------ Node ------------------------------------
    node.name: node-1     ## 節點名稱,自定義,各個節點不可相同
    # ----------------------------------- Paths ------------------------------------
    path.data: /usr/local/elk/elasticsearch-6.5.0/data
    path.logs: /usr/local/elk/elasticsearch-6.5.0/logs
    # ---------------------------------- Network -----------------------------------
    network.host: 192.168.9.90    ## 本機IP
    http.port: 9200    ## 埠,預設9200
    # --------------------------------- Discovery ----------------------------------
    discovery.zen.ping.unicast.hosts: ["192.168.9.89","192.168.9.90"]     ## 此叢集內所有節點的IP地址,這裡沒有使用自動發現,而是指定地址發現,因為規模較小
    discovery.zen.minimum_master_nodes: 1 
  5. 新增使用者,不能使用root使用者啟動

    groupadd -g 1008 elasticsearch
    useradd -g 1008 -u 1008 elasticsearch
    chown -R elasticsearch:elasticsearch /usr/local/elk/elasticsearch-6.5.0/
  6. 啟動elasticsearch

    su elasticsearch
    ./elasticsearch
    ## 驗證是否啟動成功
    ps -ef | grep elasticsearch
  7. 安裝kibana

    vim /usr/local/elk/kibana-6.5.0-linux-x86_64/config/kibana.yml 
    server.port: 5601     ## kibana預設埠
    server.host: "192.168.9.90"    ## 服務的host,直接填本機IP即可。
    elasticsearch.url: "http://192.168.9.89:9200"   ## elasticsearch的連線地址,叢集時,連線其中一臺節點即可。
  8. 啟動kibana

    cd bin
    ./kibana
  9. 安裝logstash

    vim /usr/local/elk/logstash-6.5.0/config/logstash.yml 
    ##修改host為0.0.0.0,這樣別的電腦就可以連線整個logstash,不然只能本機連線。
    http.host: "0.0.0.0"   
  10. 配置logstash配置檔案,儲存在elk/conf/all.conf

    input {                                      ## input為輸入口
            redis {
                    data_type => "list"          ## 佇列輸入,預設輸入型別為list
                    db => 10                     ## 指定redis庫
                    key => "redis-pipeline"      ## redis是key-value式的記憶體資料庫,指定key即是指定佇列的標識key的大概意思
                    host => "192.168.9.79"       ## 下面是連線資訊,如果有密碼則需要新增password這一項
                    port => "6379"                
                    threads => 5                 ## 執行緒數
            }
    }
    
    filter {        ## 過濾器filter
            grok {    ## grok外掛,可以通過正則匹配,將日誌的message進行格式化轉換。
                    match => ["message","%{YEAR:YEAR}-%{MONTHNUM:MONTH}-%{MONTHDAY:DAY} %{HOUR:HOUR}:%{MINUTE:MIN}:%{SECOND:SEC},(?<MSEC>([0-9]*)) %{LOGLEVEL:loglevel} \[(?<Classname>(.*))\] - (?<Content>(.*))"]
            }
    }
    
    output {      ## 輸出elasticsearch
            elasticsearch {
                    hosts => ["192.168.9.89:9200","192.168.9.90:9200"]    ## 輸出的elasticsearch的資料節點IP
                    index => "logstash-test"      ## 索引值
                    #user => "elastic"            ## elasticsearch 的使用者密碼,需要安裝x-pack才會有,這裡先不用
                    #password => "changeme"
            }
    }
  11. 啟動logstash

    cd /usr/local/elk/logstash-6.5.0/bin
    ./logstash -f /usr/local/elk/conf/all.conf

到現在,elk的三個組建就全部啟動了。