參考:http://blog.csdn.net/h952520296/article/details/78873849 (參考)java
官網下載:https://www.elastic.co/cn/downloadsnode
下載好之後linux
上傳到服務器:正則表達式
此處爲虛擬機:配置了4G內存,IP:192.168.179.138redis
這裏爲了測試模擬 log日誌文件,使用了tomcat。 mongodb
注意:本文將 解壓好的文件 複製到 /home/zhanghui 目錄下數據庫
日誌收集方式有多種:這裏主要提到兩種apache
1. 將Log4j的日誌輸出到SocketAppenderbootstrap
log4j.rootLogger=INFO,console
# for package com.demo.elk, log would be sent to socket appender.
log4j.logger.com.demo.elk=DEBUG, socket
# appender socket
log4j.appender.socket=org.apache.log4j.net.SocketAppender
log4j.appender.socket.Port=4567
log4j.appender.socket.RemoteHost=centos2
log4j.appender.socket.layout=org.apache.log4j.PatternLayout
log4j.appender.socket.layout.ConversionPattern=%d [%-5p] [%l] %m%n
log4j.appender.socket.ReconnectionDelay=10000
# appender console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d [%-5p] [%l] %m%n
這裏的端口號須要跟Logstash監聽的端口號一致,這裏是4567。centos
2. 經過配配置 logstash ,指定log文件目錄的方式
input{ file { path => "/home/zhanghui/apache-tomcat-8.5.20/logs/*.log" start_position => beginning ignore_older => 0 sincedb_path =>"/dev/null" } } filter{ } output{ elasticsearch { hosts => ["localhost:9200"] index => "tomcat-log" } stdout {} }
Elasticsearch
Elasticsearch是一個實時的分佈式搜索分析引擎, 它能讓你以一個以前從未有過的速度和規模,去探索你的數據。它被用做全文檢索、結構化搜索、分析以及這三個功能的組合:
* Wikipedia使用Elasticsearch提供帶有高亮片斷的全文搜索,還有search-as-you-type和did-you-mean的建議。
*衛報 使用Elasticsearch將網絡社交數據結合到訪客日誌中,實時的給它的編輯們提供公衆對於新文章的反饋。
* Stack Overflow將地理位置查詢融入全文檢索中去,而且使用more-like-this接口去查找相關的問題與答案。
* GitHub使用Elasticsearch對1300億行代碼進行查詢。
然而Elasticsearch不只僅爲巨頭公司服務。它也幫助了不少初創公司,像Datadog和Klout, 幫助他們將想法用原型實現,並轉化爲可擴展的解決方案。Elasticsearch能運行在你的筆記本電腦上,或者擴展到上百臺服務器上去處理PB級數據。
Elasticsearch中沒有一個單獨的組件是全新的或者是革命性的。全文搜索好久以前就已經能夠作到了, 就像早就出現了的分析系統和分佈式數據庫。革命性的成果在於將這些單獨的,有用的組件融合到一個單一的、一致的、實時的應用中。它對於初學者而言有一個較低的門檻, 而當你的技能提高或需求增長時,它也始終能知足你的需求。
Logstash
Logstash是一款強大的數據處理工具,它能夠實現數據傳輸,格式處理,格式化輸出,還有強大的插件功能,經常使用於日誌處理。
工做流程
Logstash工做的三個階段:
input數據輸入端,能夠接收來自任何地方的源數據。
* file:從文件中讀取
* syslog:監聽在514端口的系統日誌信息,並解析成RFC3164格式。
* redis:從redis-server list中獲取
* beat:接收來自Filebeat的事件
Filter數據中轉層,主要進行格式處理,數據類型轉換、數據過濾、字段添加,修改等,經常使用的過濾器以下。
* grok:經過正則解析和結構化任何文本。Grok目前是logstash最好的方式對非結構化日誌數據解析成結構化和可查詢化。logstash內置了120個匹配模式,知足大部分需求。
* mutate:在事件字段執行通常的轉換。能夠重命名、刪除、替換和修改事件字段。
* drop:徹底丟棄事件,如debug事件。
* clone:複製事件,可能添加或者刪除字段。
* geoip:添加有關IP地址地理位置信息。
output是logstash工做的最後一個階段,負責將數據輸出到指定位置,兼容大多數應用,經常使用的有:
* elasticsearch:發送事件數據到Elasticsearch,便於查詢,分析,繪圖。
* file:將事件數據寫入到磁盤文件上。
* mongodb:將事件數據發送至高性能NoSQL mongodb,便於永久存儲,查詢,分析,大數據分片。
* redis:將數據發送至redis-server,經常使用於中間層暫時緩存。
* graphite:發送事件數據到graphite。http://graphite.wikidot.com/
* statsd:發送事件數據到statsd。
kibana
kibana是一個開源和免費的工具,它能夠爲Logstash和ElasticSearch提供的日誌分析友好的Web界面,能夠幫助您彙總、分析和搜索重要數據日誌。
################################################################################################################################
一.確保安裝了java1.8以上版本 用jdk不用openjdk
Elasticsearch官方建議使用Oracle的JDK8,在安裝以前首先要肯定下機器有沒有安裝JDK.
rpm-qa | grep java
若是有,有多是系統自帶的openjdk,而非oracle的jdk。可使用
rpm–e --nodeps java-1.8.0-openjdk-headless-1.8.0.101-3.b13.el7_2.x86_64
卸載全部帶有Java的文件,而後進行從新安裝。
檢查是否刪除
java–version
將jdk-8u131-linux-x64.tar放入/usr/local目錄下並解壓縮
將如下內容添加至/etc/profile
#set java environment
exportJAVA_HOME=/usr/local/jdk1.8.0_131
exportJRE_HOME=${JAVA_HOME}/jre
exportCLASSPATH=.:${JAVA_HOME}/lib/dt.JAVA_HOME/lib/tools.jar:${JRE_HOME}/lib
exportPATH=${JAVA_HOME}/bin:${PATH}
保存後運行source /etc/profile使環境變量生效
輸入java -version確認是否安裝成功。
[root@localhostlocal]# java -version
javaversion "1.8.0_131"
Java(TM)SE Runtime Environment (build 1.8.0_131-b13)
JavaHotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
二.修改系統參數,確保系統有足夠資源啓動ES(很重要,不然啓動時候會報錯或警告)
2.1設置內核參數
/etc/sysctl.conf
#增長如下參數
vm.max_map_count=655360
執行如下命令,確保生效配置生效:
sysctl–p
2.2設置資源參數
/etc/security/limits.conf
#修改
* soft nofile 65536
* hard nofile 131072
* soft nproc 65536
*hard nproc 131072
注意:如下三行實際操做過程當中並無設置,另外本文中使用的 系統用戶是 zhanghui, 提示es和solr都不建議用root用戶啓動,實際啓動中會提示你
vi /etc/security/limits.d/20-nproc.conf
#設置elk用戶參數
elk soft nproc 65536
三.安裝elasticsearch
3.1 解壓到/home/elasticsearch中,修改elasticsearch/config/elasticsearch.yml中:
#這裏指定的是集羣名稱,須要修改成對應的,開啓了自發現功能後,ES會按照此集羣名稱進行集羣發現
cluster.name:thh_dev1
#數據目錄
path.data:/home/data/elk/data
# log目錄
path.logs:/home/data/elk/logs
# 節點名稱
node.name: node-1
#修改一下ES的監聽地址,這樣別的機器也能夠訪問
network.host:0.0.0.0 注意:此處須要修改或開放,不然在虛擬機的宿主機上沒法經過IP:9200訪問api
#默認的端口號
http.port:9200
3.2 進入elasticsearch的bin目錄,使用./elasticsearch -d命令啓動elasticsearch。
使用
ps-ef|grep elasticsearch
查看進程
使用
curl-X GEThttp://localhost:9200
查看信息
注意:es比較吃內存和硬盤,虛擬機啓動es時 ,宿主機上監控磁盤使用率都是100%的。 另外es啓動會有點慢,耐心等候。
3.3 瀏覽器訪問http://localhost:9200能夠看到Elasticsearch的信息
{
name:"bWXgrRX",
cluster_name:"elasticsearch_ywheel",
cluster_uuid:"m99a1gFWQzKECuwnBfnTug",
version:{
number:"6.1.0",
build_hash:"f9d9b74",
build_date:"2017-02-24T17:26:45.835Z",
build_snapshot:false,
lucene_version:"6.4.1"
},
tagline:"You Know, for Search"
}
3.4 客戶端網頁訪問可能須要關掉防火牆:
Systemctl stop firewalld.service
四.安裝logstash
4.1 首先將logstash解壓到/home/logstash中
4.2 建立配置文件 注意:建議放在 config下,文件名隨意
建立logstash-simple.conf文件而且保存到
/home/logstash/config下
完整路徑應該是 /home/logstash/config/xxxx.conf
注:這裏能夠參考我本文最上面的一個配置,實際中是採用上面的配置,這裏原文說的比較亂。
#########################################################
input{
file {
path => "/home/parallels/Desktop/data/elk/logs/*.log"
start_position => beginning
ignore_older => 0
sincedb_path =>"/dev/null"
}}
filter{
grok {
match => { "message" =>"%{IPORHOST:clientip} - %{USER:auth} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb}%{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\"%{NUMBER:response} (?:%{NUMBER:bytes}|-)"}
}date {
match => [ "timestamp" ,"dd/MMM/YYYY:HH:mm:ss +0800" ]
}
}
output{
elasticsearch {}
stdout {}
}
##############################################################
其中path => "/home/parallels/Desktop/data/elk/logs/*.log"爲日誌路徑
Grok後面是正則表達式,篩選logstash要讀取的關鍵信息。
讀取kafka的消息
################################################################
input {
kafka {
bootstrap_servers => "172.30.3.11:9092"
topics=>["accountrisksvrlog","dealserver_log","estranslog","gatelog","profitsvrlog","sttransserver_log"]
codec => plain
consumer_threads => 4
decorate_events => true
}
}
output {
elasticsearch {
hosts => ["172.30.3.11:9200"]
index => "all-log"
}
}
##################################################################
4.3 進入logstash的bin目錄,使用
bin/logstash -f config/XXXXXX.conf
命令讀取配置信息並啓動logstash。
五.安裝kibana:
5.1 解壓kibana源碼包到/home/kibana
5.2 配置kibana
編輯kibana.yml配置文件
/home/kibana/config/kibana.yml
修改如下參數:
#開啓默認端口5601若是5601被佔用可用5602或其餘
server.port:5601
server.host:「localhost」#站點地址
elasticsearch.url:http://localhost:9200#指向elasticsearch服務的ip地址
kibana.index:「.kibana」
注意:這裏主要把 紅框內的配置放開便可。
5.3 運行cd /home/parallels/Desktop/kibana/bin運行./kibana
忽略警告
經過kibana窗口觀察你的結果:
http://localhost:5601
一開始是在setting頁面,要你指定訪問的index,這裏就用缺省的logstash-*就好了。
注意:因爲我在logstash配置中指定的 index 是 tomcat-log,因此kibana這裏要設置下
默認進來會顯示設置界面的,我這裏已經配好,可是能夠新增其餘的。經過下面這種方式,點擊左側 菜單 management
下一頁會提示是否使用 Time Filter,我這裏不使用。
最後完成,便可。在 左側菜單Discover 中能夠看到配置。
4.4 使用kibana
注意:這裏因爲是使用tomcat作日誌生產者,因此 簡單查詢下 以供參考。 這裏的查詢語法界面提示是使用lucene的語法
默認或選擇 tomcat-log, 點擊查詢,會查出 366個hits。
添加過濾條件:
完美收工! 其實入門安裝很簡單,主要是 將來的微調吧。