ELK搭建實時日誌分析平臺
ELK
一、介紹
- Elasticsearch是個開源分散式搜尋引擎,它的特點有:分散式,零配置,自動發現,索引自動分片,索引副本機制,restful風格介面,多資料來源,自動搜尋負載等。
- Logstash是一個完全開源的工具,他可以對你的日誌進行收集、過濾,並將其儲存供以後使用(如,搜尋)。
- 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進行相關的日誌查詢了