1. 程式人生 > >Logstash+Kibana+多ElasticSearch集群部署

Logstash+Kibana+多ElasticSearch集群部署

地址 discovery 統一 table 風格 file ces ner 分布式搜索

ELK原理與介紹

?
ELK是三個開源軟件的縮寫,分別表示:Elasticsearch , Logstash, Kibana , 它們都是開源軟件。新增了一個FileBeat,它是一個輕量級的日誌收集處理工具(Agent),Filebeat占用資源少,適合於在各個服務器上搜集日誌後傳輸給Logstash 。
官方文檔 :https://www.elastic.co/

  • Elasticsearch是個開源分布式搜索引擎,提供搜集、分析、存儲數據三大功能。它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
  • Logstash 主要是用來日誌的搜集、分析、過濾日誌的工具,支持大量的數據獲取方式。一般工作方式為c/s架構,client端安裝在需要收集日誌的主機上,server端負責將收到的各節點日誌進行過濾、修改等操作在一並發往elasticsearch上去。
  • Kibana 也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助匯總、分析和搜索重要數據日誌。

?

主機 IP 主要服務
linux-node1 192.168.200.129 jdk、logstash、elasticsearch、kibana
linux-node2 192.168.200.130 jdk、elasticsearch

?

操作步驟

?

  • 安裝elasticsearch、jdk

    # rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch  //導入密鑰
    # vim /etc/yum.repos.d/elasticsearch.repo       //配置源
    [elasticsearch-2.x]
    name=Elasticsearch repository for 2.x packages
    baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
    gpgcheck=1
    gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
    enable=1
    # yum install elasticsearch -y     //安裝elasticsearch
    # yum install java -y             //安裝java  jdk
    # java -version     //查看java版本
  • 配置elasticsearch

    -------------------linux-node1服務器配置 ------------------------- 
    # vim /etc/elasticsearch/elasticsearch.yml
    cluster.name: abner   //17行 集群名稱
    node.name: linux-node1   //23行 節點名稱
    path.data: /data/es-data   //33行37行 工作目錄
    path.logs: /var/log/elasticsearch/
    bootstrap.memory_lock: true   //43行 防止交換swap分區
    network.host: 0.0.0.0    //54行 監聽網絡
    http.port: 9200   //58行 端口
    discovery.zen.ping.unicast.hosts: ["127.0.0.1", "192.168.200.130"]   
    //68行 單播列表自動發現機制
     -------------------linux-node2服務器配置(其他同上)--------------------- 
    node.name: linux-node2   // 23行 節點名稱
    discovery.zen.ping.unicast.hosts: ["127.0.0.1", "192.168.200.129"]   
    //68行 單播列表自動發現機制
    
    # mkdir -p /data/es-data
    # chown -R elasticsearch:elasticsearch /data/es-data/
    # systemctl start elasticsearch.service
    # netstat -ntap | grep 9200

    技術分享圖片
    ?

  • 測試

    http://192.168.175.132:9200

?
技術分享圖片

?
?

  • RESTful API (通過json格式交互)

    # curl -i -XGET ‘http://192.168.200.129:9200/_count?pretty‘ -d ‘{"query": { "match_all": {} }}‘

    技術分享圖片

?
?

  • 內存解鎖和文件限制

    生產環境中必須要修改(註意)

    # vim /etc/security/limits.conf
    //末尾插入
    elasticsearch soft memlock unlimited
    elasticsearch hard memlock unlimited
    * soft nofile 65535        
    * hard nofile 65535
    
    # systemctl stop elasticsearch.service
    # systemctl start elasticsearch.service

?
?

  • 安裝elasticsearch-head插件

  • 安裝完成後打開瀏覽器輸入:
  • http://192.168.200.129:9200/_plugin/head/

    # /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head

技術分享圖片技術分享圖片技術分享圖片技術分享圖片技術分享圖片

?
?

  • 安裝elasticsearch-kopf插件

  • 安裝完成後打開瀏覽器輸入:
  • http://192.168.200.129:9200/_plugin/kopf/#!/cluster

    # /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf

    技術分享圖片
    技術分享圖片

?
?

logstash部署

  • Logstash 主要是用來日誌的搜集、分析、過濾日誌的工具,支持大量的數據獲取方式。一般工作方式為c/s架構,client端安裝在需要收集日誌的主機上,server端負責將收到的各節點日誌進行過濾、修改等操作在一並發往elasticsearch上去。
  • 安裝logstash

    # rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
    # vim /etc/yum.repos.d/logstash.repo
    [logstash-2.1]
    name=Logstash repository for 2.1.x packages
    baseurl=http://packages.elastic.co/logstash/2.1/centos
    gpgcheck=1
    gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
    enable=1
    # yum install logstash -y
  • 定義輸入和輸出流,類似管道

    # /opt/logstash/bin/logstash -e ‘input { stdin{} } output { stdout{} }‘
  • 詳細格式顯示

    # /opt/logstash/bin/logstash -e ‘input { stdin{} } output { stdout{ codec => rubydebug } }‘

    技術分享圖片

?

  • 寫入到elasticsearch中

    # /opt/logstash/bin/logstash -e ‘input { stdin{} } output { elasticsearch { hosts => ["192.168.200.129:9200"] } }‘

技術分享圖片技術分享圖片

?

  • 寫入ES和同時詳細格式顯示

    # /opt/logstash/bin/logstash -e ‘input { stdin{} } output { elasticsearch { hosts => ["192.168.200.129:9200"] } stdout { codec => rubydebug } }‘

技術分享圖片

?

  • 創建 logstash配置文件寫入

    # vim /etc/logstash/conf.d/01-logstash.conf
    input { stdin { } }
    output {
        elasticsearch { hosts => ["192.168.200.129:9200"] }
        stdout { codec => rubydebug }
    }
    # /opt/logstash/bin/logstash -f /etc/logstash/conf.d/01-logstash.conf

?

  • 使用logstash配置文件:
  • 收集系統日誌
  • 收集java異常日誌
  • 事件優化處理

    # vim /root/file.conf
    input {
                file {
                        path => "/var/log/messages"
                        type => "system"
                        start_position => "beginning"
                }     
                file {
                        path => "/var/log/elasticsearch/abner.log"
                        type => "es-error"
                        start_position => "beginning"   
                        codec => multiline {
                        pattern => "^\["
                        negate => true
                        what => "previous"
                    }
                }
    }
    
    output {
    
             if [type] == "system" {
                     elasticsearch {
                             hosts => ["192.168.200.129:9200"]
                             index => "system-%{+YYYY.MM.dd}"
                     }
             } 
    
             if [type] == "es-error" {
                     elasticsearch {
                             hosts => ["192.168.200.129:9200"]
                             index => "es-error-%{+YYYY.MM.dd}"
                     }
             } 
    }
    
    # logstash -f /root/file.conf

技術分享圖片技術分享圖片技術分享圖片

?
?

kibana部署

  • Kibana 也是一個開源和免費的工具,Kibana可以為 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助匯總、分析和搜索重要數據日誌。

    # wget https://download.elastic.co/kibana/kibana/kibana-4.3.1-linux-x64.tar.gz  
    # tar zxvf kibana-4.3.1-linux-x64.tar.gz -C /opt/
    # mv /opt/kibana-4.3.1-linux-x64/ /usr/local/kibana
    # vim /usr/local/kibana/config/kibana.yml
    server.port: 5601           //2行 
    server.host: "0.0.0.0"   //5行
    elasticsearch.url: "http://192.168.200.129:9200"    //12行 ES地址
    kibana.index: ".kibana"    //20行
  • Screen是一款由GNU計劃開發的用於命令行終端切換的自由軟件。用戶可以通過該軟件同時連接多個本地或遠程的命令行會話,並在其間自由切換。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了統一的管理多個會話的界面和相應的功能。

    # yum install screen -y  
    #  screen   //開啟
    # /usr/local/kibana/bin/kibana   //啟動監聽

    按下組合鍵 ctrl+a+d 進行丟入後臺
    打開瀏覽器:http://192.168.200.129:5601/

技術分享圖片
技術分享圖片
技術分享圖片技術分享圖片

Logstash+Kibana+多ElasticSearch集群部署