1. 程式人生 > >ELK6.1搭建--安裝和配置

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-*就行了。