1. 程式人生 > >ELK搭建實時日誌分析平臺

ELK搭建實時日誌分析平臺

ELK

一、介紹

  1. Elasticsearch是個開源分散式搜尋引擎,它的特點有:分散式,零配置,自動發現,索引自動分片,索引副本機制,restful風格介面,多資料來源,自動搜尋負載等。
  2. Logstash是一個完全開源的工具,他可以對你的日誌進行收集、過濾,並將其儲存供以後使用(如,搜尋)。
  3. Kibana 也是一個開源和免費的工具,它Kibana可以為 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 介面,可以幫助您彙總、分析和搜尋重要資料日誌。

注:編者使用的elk版本是elasticsearch-2.4.4 logstash-2.4.1 kibana-4.6.4

二、ElasticSearch

1.先配置es(叢集)

tar –zxvf elasticsearch-2.4.4.tar.gz
cd elasticsearch-2.4.4

2.安裝head外掛(可選項,方便檢視es)

./bin/plugin install mobz/elasticsearch-head  

3.編輯es配置檔案

vi elasticsearch.yml

#修改部分
cluster.name: elk_es_cluster
node.name: elk_node1 # 其他機器修改這個配置
node.master: true   # 是否是master節點
path.data: /usr/local/test/elk/data
path.logs: /usr/local/test/elk/logs
network.host: 0.0.0.0
http.port: 9300 (預設值)
discovery.zen.minimum_master_nodes: 1 # master節點數
discovery.zen.ping.timeout: 3s    # 節點間自動發現的響應時間
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]  # 其他機器填master所在IP

4.後臺啟動es

./bin/elasticsearch –d

三、Logstash

1.安裝logstash

tar -zxvf logstash-2.4.1.tar.gz
cd logstash-2.4.1

2.編輯logstash配置檔案(核心

mkdir conf
vi conf/log4j_elk.conf
# 簡易模板
input {
  stdin {}  #可以從標準輸入讀資料
}
output {
  stdout { codec => rubydebug }  # 直接在控制檯看日誌
}

3.後臺啟動

nohup ./bin/logstash agent –f conf/log4j_elk.conf & 

外掛介紹

  • input
    input {
    log4j { # 對應log4j.properties 配置SocketAppender
    mode => “server”
    host => “192.168.1.131”
    port => 13131
    }
    # 也可以配置從檔案(可使用萬用字元進行匹配)讀取
    file {
    path => “/data/web/logstash/logFile//
    start_position => “beginning” #從檔案開始處讀寫
    }
    }

  • output
    output {
    elasticsearch {
    action => “index” #The operation on ES
    hosts => “127.0.0.1:9344” #ElasticSearch host, can be array.
    index => “applog” #The index to write data to.
    }
    }

  • filter
    配置種類有點多,留在下篇文章進行較詳細的講解

四、Kibana

1.安裝kibana

tar -zxvf kibana-4.6.4-linux-x86_64.tar.gz
cd kibana-4.6.4-linux-x86_64

2.配置kibana配置檔案

vi config/kibana.yml

server.port: 5601
server.host: "192.168.1.131"
elasticsearch.url: http://127.0.0.1:9344   #上面elasterSearch選的master 
kibana.index: ".kibana" 

3.後臺啟動

nohup ./bin/kibana &

4.查詢語法

如method:get*

 priority:ERROR AND method:get* (中間可以使用大寫的AND、OR等)

至此,簡單的elk搭建完成,未配置logstash的filter,但其會自動將log4j的日誌分解成類似priority、thread、method、host(注:host的值來源於/etc/hosts)等欄位,然後可以在kibana進行相關的日誌查詢了