ELK6.1搭建--安裝和配置
ELK簡介
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確認是否安裝成功。
[[email protected]]# 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
設定核心引數
/etc/sysctl.conf
#增加以下引數
vm.max_map_count=655360
執行以下命令,確保生效配置生效:
sysctl–p
設定資源引數
/etc/security/limits.conf
#修改
* soft nofile 65536
* hard nofile 131072
* soft nproc 65536
*hard nproc 131072
vi/etc/security/limits.d/20-nproc.conf
#設定elk使用者引數
elk soft nproc 65536
解壓到/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
#預設的埠號
http.port:9200
進入elasticsearch的bin目錄,使用./elasticsearch -d命令啟動elasticsearch。
使用
ps-ef|grep elasticsearch
檢視程序
使用
檢視資訊
瀏覽器訪問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"
}
客戶端網頁訪問可能需要關掉防火牆:
Systemctlstop firewalld.service
首先將logstash解壓到/home/logstash中
建立配置檔案
建立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"
}
}
##################################################################
進入logstash的bin目錄,使用
bin/logstash -f config/XXXXXX.conf
命令讀取配置資訊並啟動logstash。
安裝kibana:
解壓kibana原始碼包到/home/kibana
配置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”
執行cd /home/parallels/Desktop/kibana/bin執行./kibana
通過kibana視窗觀察你的結果:
http://localhost:5601
一開始是在setting頁面,要你指定訪問的index,這裡就用預設的logstash-*就行了。