ELK+Beats日志分析系統部署


 

 

一、            名詞介紹:

E:ElasticSearch 搜索,簡稱es

L:Logstash 管理日志和事件的工具

K:Kibana 功能強大的數據顯示客戶端

Beats 輕量級數據傳輸組件,這里我們主要使用FileBeat

二、            應用包准備:

elasticsearch-6.1.2.tar.gz

logstash-6.1.2.tar.gz

kibana-6.1.2-linux-x86_64.tar.gz

filebeat-6.1.2-linux-x86_64.tar.gz

jdk-7 以上

 

三、            部署安裝:

1.集群部署

 

 

 

如果logstash 壓力很大,那么可以考慮filebeat logstash 之間引入rediskafka作為緩沖。

以后可以使用集群部署,目前先采用如下部署方式:

elasticsearch+ logstash+ kibana 於同一台機器,假設ip為:192.168.1.228

filebeat 和應用服務器或其他需要做日志處理的服務器一起部署

2. 安裝JDK 1.7

省略安裝步驟,推薦1.7+版本以上

java –version

設置java的環境變量,比如

vim ~/.bashrc

 

>> 

export JAVA_HOME= /home/xiel/Java/jdk1.7.0_45

export JRE_HOME=${JAVA_HOME}/jre 

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 

export PATH=${JAVA_HOME}/bin:$PATH 

>> 

 

source ~/.bashrc

3. 搭建ElasticSearch

安裝

解壓elasticsearch  tar.gz 即可

配置

進入 安裝目錄,修改conf/ elasticsearch.yml :

修改network.host 為本機ip,如:

network.host: 192.168.1.228

其他:

cluster.name: hyxt_logs_es (集群名稱)

node.name: "node1"(集群結點名稱)

node.master: true(是否可被選為主結點,默認true)

node.data: true(結點是否存儲數據,默認true)

index.number_of_shards: 5(索引分片數)

index.number_of_replicas: 1(索引副本數)

transport.tcp.port: 9300(數據傳輸IP)

http.port: 9200(對外訪問監聽IP)

啟動

./ bin/elasticsearch -d (-d:后台啟動)

測試驗證

執行 curl -X GET http://192.168.1.228:9200

{
  "name" : "node-1",
  "cluster_name" : "hyxt_logs_es",
  "cluster_uuid" : "l_31dzUURiWnLUAI60Zm8w",
  "version" : {
    "number" : "6.1.2",
    "build_hash" : "5b1fea5",
    "build_date" : "2018-01-10T02:35:59.208Z",
    "build_snapshot" : false,
    "lucene_version" : "7.1.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

表示安裝配置成功。

常用基本命令:

查詢所有數據:curl http://192.168.1.228:9200/_search?pretty

集群健康狀態:curl -XGET http://192.168.1.228:9200/_cluster/health?pretty

刪除所有數據:curl -X DELETE 'http://192.168.1.228:9200/_all'

刪除指定索引:curl -X DELETE 'http://192.168.1.228:9200/索引名稱'

注: 這里最好不要使用localhost,因為我們需要遠程訪問,所以,我們應該直接使用對應服務器的ip地址

elasticsearch 集群部署:

elasticsearch 配置集群很簡單,基本只要簡單修改。我們修改elasticsearch.yml文件:

使得:cluster.name 相同 node.name 唯一ok了!

 

4. 搭建Logstash

安裝

解壓logstash tar.gz

配置

進入安裝目錄,為logstash新建一個配置文件config/hy_logstash.conf:

vi hy_logstash.conf

配置文件內容如下

input {

   beats {

      port => 5044

        # sincedb_path => "/app/logstash-5.1.1/.sincedb"

  }

}

 

filter {

if [type] == "app_test" {

   grok {

     match => { "message" => "((?<logdate>%{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{HOUR}:?%{MINUTE}(?::?%{SECOND})) %{WORD:level} (?<srcCode>\[(?:[a-zA-Z0-9-])+\]\[(?:[a-zA-Z0-9-\.])+:%{NUMBER}\]) - )?(?<srcLog>.+)"  }

    }

    mutate {remove_field => [ "@timestamp", "@version", "message" ]  }

} else if [type] == "mysql_test" {

  grok {

    match => { "message" => "((?<logdate>%{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{HOUR}:?%{MINUTE}(?::?%{SECOND})) %{WORD:level} (?<srcCode>\[(?:[a-zA-Z0-9-])+\]\[(?:[a-zA-Z0-9-\.])+:%{NUMBER}\]) - )?(?<srcLog>.+)" }

   }

   mutate {remove_field => [ "@version", "message" ] }

} else if [type] == "nginx_access_test" {

   grok {

     match => { "message" => "MAINNGINXLOG %{COMBINEDAPACHELOG} %{QS:x_forwarded_for}" }

    # mutate {remove_field => [ "@timestamp", "@version", "message" ]  }

  }

}

date {

    match => ["logdate", "yyyy-MM-dd HH:mm:ss.SSS"]

}

if "_grokparsefailure" in [tags] {

 

} else {

   mutate {remove_field => [ "logdate", "@version", "message" ]  }

 

}

if !([level]) {

 mutate {

    add_field => { "level" => "other" }

  }

}

}

 

output {

    if "_grokparsefailure" in [tags] {

      file { path => "/var/log/logstash/grokparsefailure-%{type}-%{+YYYY.MM.dd}.log" }

    }

    elasticsearch {

        hosts => ["ES_IP:9200"]

        index => "hy_log_%{type}-%{+YYYY.MM.dd}"

        document_type => "%{type}"

        template_overwrite => true

    }

}

配置文件 必須要以”.conf“以尾綴。上面的文件部分配置了 應用日志,mysql日志,nginx訪問日志,nginx錯誤日志

ES_IP 為安裝elasticsearch 服務器的ip

啟動

nohup  ./bin/logstash -f  config/ hy_logstash.conf  &

 

5. 搭建Kibana

安裝

解壓kibana tar.gz

配置

進入安裝目錄,默認配置文件為:config/kibana.yml。可以修改kibana.yml必須要正確配置elasticsearch的地址和索引

主要修改的地方:

server.host: "192.168.1.228"

elasticsearch.url: "http://192.168.1.228:9200"

啟動

nohup ./bin/kibana &。

測試驗證

登錄訪問:http://192.168.1.228:5601(默認端口為5601)

6. 搭建FileBeat

安裝

解壓filebeat tar.gz

配置

進入安裝目錄,默認配置文件為:filebeat.yml

配置如下:

- type: log

filebeat.prospectors:

- type: log # 應用日志

  fields_under_root: true

  fields:

    app_id: el_shop_1

    type: app_test

  paths:

    - /www/tomcat-demo/logs/catalina.out

  multiline: # 多行合並,將\s+at \w開頭的行追加到前一行末尾

     pattern: '^\s+at \w'

     negate: false

     match: after

- type: log # mysql慢查詢日志

  fields_under_root: true

  fields:

    app_id: mysql-slow

    type: beat_test

  paths:

    - /usr/local/filebeat-6.1.2-linux-x86_64/slow.log

  multiline: # 多行合並

     pattern: '^\# User@Host\: '

     negate: true

     match: after

     timeout: 10s

- type: log # nginx訪問日志

  fields_under_root: true

  fields:

    app_id: nginx

    type: nginx_access

  paths:

    - /usr/local/filebeat-6.1.2-linux-x86_64/access.log

  multiline: # 多行合並

     pattern: '^(\d{1,3}){4} \- \- \['

     negate: true

     match: after

     timeout: 10s

- type: log # nginx錯誤日志

  fields_under_root: true

  fields:

    app_id: nginx

    type: nginx_error

  paths:

    - /usr/local/filebeat-6.1.2-linux-x86_64/error.log

  multiline: # 多行合並

     pattern: '^\d{4}/\d{2}/\d{2} '

     negate: true

     match: after

     timeout: 10s

 

output.logstash:

    enabled: true

    hosts: ["192.168.1.228:5044"]

    index: app-%{[type]}

    compression_level: 3

    #loadbalance: true

 

注:

上面的文件部分配置了 應用日志,mysql日志,nginx訪問日志,nginx錯誤日志

默認的index 跟蹤文件是:data/registry

啟動

 nohup ./ filebeat  &

 

7. 搭建X-Pack

安裝Xpach之前必須先安裝好es和kibana

You must install Elasticsearch and Kibana before you install X-Pack. If you plan to use the X-Pack features in Logstash, you must also install Logstash before you install X-Pack

然后分別在es,kibana中安裝xpack插件:

es中安裝xpack插件

進入es安裝目錄,執行:
bin/elasticsearch-plugin install x-pack

安裝過程中,我們需要進行一些配置,默認統統輸入y即可

參考:

https://www.elastic.co/guide/en/elasticsearch/reference/6.2/installing-xpack-es.html

安裝完畢需要重啟es

kibana中安裝xpack插件

進入kibana安裝目錄,執行:
bin/kibana-plugin install x-pack 

參考:

https://www.elastic.co/guide/en/kibana/6.2/installing-xpack-kb.html

安裝完畢需要重啟kibana

logstash中安裝xpack插件(可選)

進入logstash安裝目錄,執行:
bin/logstash-plugin install x-pack 

參考:

https://www.elastic.co/guide/en/logstash/6.2/installing-xpack-log.html

安裝完畢需要重啟logstash

 

 

四、            使用Kibana:

Discover 標簽頁用於交互式探索你的數據

 

 

 

Visualize 標簽頁用來設計可視化。你可以保存可視化,以后再用,或者加載合並到dashboard 里。一個可視化可以基於以下幾種數據源類型

 

 

 

Dashboard 能讓你自由排列一組已保存的可視化。然后你可以保存這個儀表板,用來分享或者重載

 

 

Timelion一個嶄新的 pipeline aggregation 特性

 

 

 

Dev tools 開發工具

 

 

 

監控:

 

 

 

管理:

 


免責聲明!

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



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