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

前言

近來比較閑,加之boss指派任務要研究日志收集系統,所以選擇了ELK整套工具進行研究。

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

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


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界面,可以幫助您匯總、分析和搜索重要數據日志。


ELK安裝

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

安裝前需準備:

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服務

瀏覽器訪問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安裝,直接下載壓縮包后,解壓后執行./kibana即可。

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

配置logstash

使用logstash能夠很方便的寫入elasticsearch。 首先得生成一個logstash的conf文件,必須要在用戶目錄下創建一個*.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窗口觀察你的結果:

http://localhost:5601

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


CentOS7.0安裝ELK

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

安裝前需準備:

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

System:Centos release 7.3

Java:Oracle-jdk version "1.8.0_131"

ElasticSearch:5.3.1

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)

安裝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中:

#這里指定的是集群名稱,需要修改為對應的,開啟了自發現功能后,ES會按照此集群名稱進行集群發現

cluster.name:thh_dev1

#數據目錄

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

# log目錄

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

#修改一下ES的監聽地址,這樣別的機器也可以訪問

network.host:0.0.0.0

#默認的端口號

http.port:9200

修改系統參數,確保系統有足夠資源啟動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用戶參數

elksoftnproc65536

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

進入elasticsearch的bin目錄,使用./elasticsearch -d命令啟動elasticsearch。

使用

ps-ef|grep elasticsearch

查看進程

使用

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"

}

客戶端網頁訪問可能需要關掉防火墻:

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中

創建配置文件

創建logstash-simple.conf文件并且保存到

/home/parallels/Desktop/logstash/config

文件內容為

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要讀取的關鍵信息。

進入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

修改以下參數:

#開啟默認端口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-*就行了。

這樣ELK搭建就完成了

參考文獻

Logstash 講解與實戰應用

CentOs 7.3下ELK日志分析系統搭建

es基礎入門

Mac上搭建ELK

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,702評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,143評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,553評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,620評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,416評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,940評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,024評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,170評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,709評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,597評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,291評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,029評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,407評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,663評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,403評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,746評論 2 370

推薦閱讀更多精彩內容