【ELK搭建日記一】安裝和配置

前言

近來比較閑,加之boss指派任務(wù)要研究日志收集系統(tǒng),所以選擇了ELK整套工具進(jìn)行研究。

數(shù)據(jù)庫日志收集這塊,本人屬于小白,一點都不懂,大多是查閱網(wǎng)上各大大神的文章和官網(wǎng)的教程一步一步摸索搭建起來,從環(huán)境搭建到集群配置,再到動態(tài)獲取數(shù)據(jù)庫日志,一路跌跌撞撞實屬不易,因此打算把踩過的坑記錄下來,給所有想了解或者接觸ELK的小白做參考。

本文參考了大量的教程,會在文章底部標(biāo)明出處。


ELK簡介

Elasticsearch

Elasticsearch是一個實時的分布式搜索分析引擎, 它能讓你以一個之前從未有過的速度和規(guī)模,去探索你的數(shù)據(jù)。它被用作全文檢索、結(jié)構(gòu)化搜索、分析以及這三個功能的組合:

* Wikipedia使用Elasticsearch提供帶有高亮片段的全文搜索,還有search-as-you-type和did-you-mean的建議。

*衛(wèi)報 使用Elasticsearch將網(wǎng)絡(luò)社交數(shù)據(jù)結(jié)合到訪客日志中,實時的給它的編輯們提供公眾對于新文章的反饋。

* Stack Overflow將地理位置查詢?nèi)谌肴臋z索中去,并且使用more-like-this接口去查找相關(guān)的問題與答案。

* GitHub使用Elasticsearch對1300億行代碼進(jìn)行查詢。

然而Elasticsearch不僅僅為巨頭公司服務(wù)。它也幫助了很多初創(chuàng)公司,像Datadog和Klout, 幫助他們將想法用原型實現(xiàn),并轉(zhuǎn)化為可擴(kuò)展的解決方案。Elasticsearch能運(yùn)行在你的筆記本電腦上,或者擴(kuò)展到上百臺服務(wù)器上去處理PB級數(shù)據(jù)。

Elasticsearch中沒有一個單獨的組件是全新的或者是革命性的。全文搜索很久之前就已經(jīng)可以做到了, 就像早就出現(xiàn)了的分析系統(tǒng)和分布式數(shù)據(jù)庫。革命性的成果在于將這些單獨的,有用的組件融合到一個單一的、一致的、實時的應(yīng)用中。它對于初學(xué)者而言有一個較低的門檻, 而當(dāng)你的技能提升或需求增加時,它也始終能滿足你的需求。

Logstash

Logstash是一款強(qiáng)大的數(shù)據(jù)處理工具,它可以實現(xiàn)數(shù)據(jù)傳輸,格式處理,格式化輸出,還有強(qiáng)大的插件功能,常用于日志處理。


工作流程

Logstash工作的三個階段:


input數(shù)據(jù)輸入端,可以接收來自任何地方的源數(shù)據(jù)。

* file:從文件中讀取

* syslog:監(jiān)聽在514端口的系統(tǒng)日志信息,并解析成RFC3164格式。

* redis:從redis-server list中獲取

* beat:接收來自Filebeat的事件

Filter數(shù)據(jù)中轉(zhuǎn)層,主要進(jìn)行格式處理,數(shù)據(jù)類型轉(zhuǎn)換、數(shù)據(jù)過濾、字段添加,修改等,常用的過濾器如下。

* grok:通過正則解析和結(jié)構(gòu)化任何文本。Grok目前是logstash最好的方式對非結(jié)構(gòu)化日志數(shù)據(jù)解析成結(jié)構(gòu)化和可查詢化。logstash內(nèi)置了120個匹配模式,滿足大部分需求。

* mutate:在事件字段執(zhí)行一般的轉(zhuǎn)換??梢灾孛h除、替換和修改事件字段。

* drop:完全丟棄事件,如debug事件。

* clone:復(fù)制事件,可能添加或者刪除字段。

* geoip:添加有關(guān)IP地址地理位置信息。

output是logstash工作的最后一個階段,負(fù)責(zé)將數(shù)據(jù)輸出到指定位置,兼容大多數(shù)應(yīng)用,常用的有:

* elasticsearch:發(fā)送事件數(shù)據(jù)到Elasticsearch,便于查詢,分析,繪圖。

* file:將事件數(shù)據(jù)寫入到磁盤文件上。

* mongodb:將事件數(shù)據(jù)發(fā)送至高性能NoSQL mongodb,便于永久存儲,查詢,分析,大數(shù)據(jù)分片。

* redis:將數(shù)據(jù)發(fā)送至redis-server,常用于中間層暫時緩存。

* graphite:發(fā)送事件數(shù)據(jù)到graphite。http://graphite.wikidot.com/

* statsd:發(fā)送事件數(shù)據(jù)到statsd。

kibana

kibana是一個開源和免費的工具,它可以為Logstash和ElasticSearch提供的日志分析友好的Web界面,可以幫助您匯總、分析和搜索重要數(shù)據(jù)日志。


ELK安裝

MacOS安裝ELK5.x以上版本(初略介紹)

安裝前需準(zhǔn)備:

brew

brew又叫Homebrew,是Mac OSX上的軟件包管理工具,能在Mac中方便的安裝軟件或者卸載軟件,只需要一個命令, 非常方便。

Java

elasticsearch需要1.7以上版本,所以還需要安裝Java 1.7,用簡單的brew又不行,還需要先安裝cask。

brewinstall brew-cask

brewupdate

brewcask install caskroom/versions/java7

查看Java版本

java–version

安裝Elasticsearch:

brew install elasticsearch //安裝Elasticsearch

elasticsearch – version //查看Elasticsearch版本信息

通過

brewservices start elasticsearch

brewservices stop elasticsearch

啟停elasticsearch服務(wù)

瀏覽器訪問http://localhost:9200可以看到Elasticsearch的信息

{

name:"bWXgrRX",

cluster_name:"elasticsearch_ywheel",

cluster_uuid:"m99a1gFWQzKECuwnBfnTug",

version:{

number:"5.2.2",

build_hash:"f9d9b74",

build_date:"2017-02-24T17:26:45.835Z",

build_snapshot:false,

lucene_version:"6.4.1"

},

tagline:"You Know, for Search"

}

安裝logstash:

brew install logstash

安裝好后查看版本:

logstash – version

安裝Kibana:

Kibana不需要通過brew安裝,直接下載壓縮包后,解壓后執(zhí)行./kibana即可。

Kibana安裝完成后,需要在config/kibana.yml文件中,確認(rèn)elasticsearch.url:http://localhost:9200

配置logstash

使用logstash能夠很方便的寫入elasticsearch。 首先得生成一個logstash的conf文件,必須要在用戶目錄下創(chuàng)建一個*.conf文件

conf:

input {

file {

path=>"/Users/haigui/Desktop/LogInfo/*.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 => "/Users/haigui/Desktop/LogInfo/*.log"為日志路徑

使用

logstash-f ~/Desktop/*.conf

來讀取logstash配置文件

通過kibana窗口觀察你的結(jié)果:

http://localhost:5601

一開始是在setting頁面,要你指定訪問的index,這里就用缺省的logstash-*就行了。


CentOS7.0安裝ELK

用CentOS7.0是公司要求,其他系統(tǒng)都是可以參考的,在配置過程中會涉及系統(tǒng)參數(shù)修改,權(quán)限修改就不在文中說明了

安裝前需準(zhǔn)備:

為了安裝時不出錯,建議選擇這兩者選擇一樣的版本,全部選擇5.3版本。

System:Centos release 7.3

Java:Oracle-jdk version "1.8.0_131"

ElasticSearch:5.3.1

Elasticsearch官方建議使用Oracle的JDK8,在安裝之前首先要確定下機(jī)器有沒有安裝JDK.

rpm-qa | grep java

如果有,有可能是系統(tǒng)自帶的openjdk,而非oracle的jdk。可以使用

rpm–e --nodeps java-1.8.0-openjdk-headless-1.8.0.101-3.b13.el7_2.x86_64

卸載所有帶有Java的文件,然后進(jìn)行重新安裝。

檢查是否刪除

java–version

將jdk-8u131-linux-x64.tar放入/usr/local目錄下并解壓縮

將以下內(nèi)容添加至/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}

保存后運(yùn)行source /etc/profile使環(huán)境變量生效

輸入java -version確認(rèn)是否安裝成功。

[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)

安裝elasticsearch

elasticsearch安裝地址

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.1.tar.gz

將elasticsearch-5.3.1.tar解壓到/home/parallels/Desktop/elasticsearch中,修改elasticsearch-5.3.1/config/elasticsearch.yml中:

#這里指定的是集群名稱,需要修改為對應(yīng)的,開啟了自發(fā)現(xiàn)功能后,ES會按照此集群名稱進(jìn)行集群發(fā)現(xiàn)

cluster.name:thh_dev1

#數(shù)據(jù)目錄

path.data:/home/parallels/Desktop/data/elk/data

# log目錄

path.logs:/home/parallels/Desktop/data/elk/logs

#修改一下ES的監(jiān)聽地址,這樣別的機(jī)器也可以訪問

network.host:0.0.0.0

#默認(rèn)的端口號

http.port:9200

修改系統(tǒng)參數(shù),確保系統(tǒng)有足夠資源啟動ES

設(shè)置內(nèi)核參數(shù)

/etc/sysctl.conf

#增加以下參數(shù)

vm.max_map_count=655360

執(zhí)行以下命令,確保生效配置生效:

sysctl–p

設(shè)置資源參數(shù)

/etc/security/limits.conf

#修改

*soft nofile 65536

*hard nofile 131072

*soft nproc 65536

*hard nproc 131072

vi/etc/security/limits.d/20-nproc.conf

#設(shè)置elk用戶參數(shù)

elksoftnproc65536

啟動ElasticSearch5版本要非root用戶,使用一個普通用戶來啟動ElasticSearch

進(jìn)入elasticsearch的bin目錄,使用./elasticsearch -d命令啟動elasticsearch。

使用

ps-ef|grep elasticsearch

查看進(jìn)程

使用

curl-X GEThttp://localhost:9200

查看信息

{

"name" : "FIinCQT",

"cluster_name" :"thh_dev1",

"cluster_uuid" :"Xm1PGPNuT6e5gBv3aF9aew",

"version" : {

"number" : "5.3.1",

"build_hash" :"5f9cf58",

"build_date" :"2017-04-17T15:52:53.846Z",

"build_snapshot" : false,

"lucene_version" :"6.4.2"

},

"tagline" : "You Know, forSearch"

}

客戶端網(wǎng)頁訪問可能需要關(guān)掉防火墻:

systemctlstop firewalld.service

安裝logstash:

下載logstash

https://artifacts.elastic.co/downloads/logstash/logstash-5.3.1.tar.gz

首先將logstash-5.3.1.tar.gz解壓到/home/parallels/Desktop/logstash中

創(chuàng)建配置文件

創(chuàng)建logstash-simple.conf文件并且保存到

/home/parallels/Desktop/logstash/config

文件內(nèi)容為

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后面是正則表達(dá)式,篩選logstash要讀取的關(guān)鍵信息。

進(jìn)入logstash的bin目錄,使用./logstash -f ../config/logstash-simple.conf命令讀取配置信息并啟動logstash。

安裝kibana:

下載kibana

https://artifacts.elastic.co/downloads/kibana/kibana-5.3.1-linux-x86_64.tar.gz

解壓kibana-5.3.1-linux-x86_64源碼包到/home/parallels/Desktop/kibana

配置kibana

編輯kibana.yml配置文件

/home/parallels/Desktop/kibana/config/kibana.yml

修改以下參數(shù):

#開啟默認(rèn)端口5601如果5601被占用可用5602或其他

server.port:5601

server.host:“l(fā)ocalhost”#站點地址

elasticsearch.url:http://localhost:9200#指向elasticsearch服務(wù)的ip地址

kibana.index:“.kibana”

運(yùn)行cd /home/parallels/Desktop/kibana/bin運(yùn)行./kibana

通過kibana窗口觀察你的結(jié)果:

http://localhost:5601

一開始是在setting頁面,要你指定訪問的index,這里就用缺省的logstash-*就行了。

這樣ELK搭建就完成了

參考文獻(xiàn)

Logstash 講解與實戰(zhàn)應(yīng)用

CentOs 7.3下ELK日志分析系統(tǒng)搭建

es基礎(chǔ)入門

Mac上搭建ELK

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容