1. 程式人生 > >ELK(ElasticSearch, Logstash, Kibana)搭建實時日誌分析平臺

ELK(ElasticSearch, Logstash, Kibana)搭建實時日誌分析平臺

摘要: ELK平臺介紹 在搜尋ELK資料的時候,發現這篇文章比較好,於是摘抄一小段: 以下內容來自:http://baidu.blog.51cto.com/71938/1676798 日誌主要包括系統日誌、應用程式日誌和安全日誌。

ELK平臺介紹

在搜尋ELK資料的時候,發現這篇文章比較好,於是摘抄一小段:

日誌主要包括系統日誌、應用程式日誌和安全日誌。系統運維和開發人員可以通過日誌瞭解伺服器軟硬體資訊、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日誌可以瞭解伺服器的負荷,效能安全性,從而及時採取措施糾正錯誤。

通常,日誌被分散的儲存不同的裝置上。如果你管理數十上百臺伺服器,你還在使用依次登入每臺機器的傳統方法查閱日誌。這樣是不是感覺很繁瑣和效率低下。當務之急我們使用集中化的日誌管理,例如:開源的syslog,將所有伺服器上的日誌收集彙總。

集中化管理日誌後,日誌的統計和檢索又成為一件比較麻煩的事情,一般我們使用grep、awk和wc等Linux命令能實現檢索和統計,但是對於要求更高的查詢、排序和統計等要求和龐大的機器數量依然使用這樣的方法難免有點力不從心。

開源實時日誌分析ELK平臺能夠完美的解決我們上述的問題,ELK由ElasticSearch、Logstash和Kiabana三個開源工具組成。官方網站:https://www.elastic.co/products

  • Elasticsearch是個開源分散式搜尋引擎,它的特點有:分散式,零配置,自動發現,索引自動分片,索引副本機制,restful風格介面,多資料來源,自動搜尋負載等。

  • Logstash是一個完全開源的工具,他可以對你的日誌進行收集、過濾,並將其儲存供以後使用(如,搜尋)。

  • Kibana 也是一個開源和免費的工具,它Kibana可以為 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 介面,可以幫助您彙總、分析和搜尋重要資料日誌。

----------------------------摘抄內容結束-------------------------------

畫了一個ELK工作的原理圖:

123049_meyt_1434710.png

如圖:Logstash收集AppServer產生的Log,並存放到ElasticSearch叢集中,而Kibana則從ES叢集中查詢資料生成圖表,再返回給Browser。

ELK平臺搭建

系統環境

System: Centos release 6.7 (Final)

ElasticSearch: 2.1.0

Logstash: 2.1.1

Kibana: 4.3.0

Java: openjdk version  "1.8.0_65"

注:由於Logstash的執行依賴於Java環境, 而Logstash 1.5以上版本不低於java 1.7,因此推薦使用最新版本的Java。因為我們只需要Java的執行環境,所以可以只安裝JRE,不過這裡我依然使用JDK,請自行搜尋安裝。

123318_IHwC_1434710.png

ElasticSearch

配置ElasticSearch:

?

1

2

tar -zxvf elasticsearch-2.1.0.tar.gz

cd elasticsearch-2.1.0

安裝Head外掛(Optional):

?

1

./bin/plugin install mobz/elasticsearch-head

123433_8VxM_1434710.png

然後編輯ES的配置檔案:

?

1

vi config/elasticsearch.yml

修改以下配置項:

?

1

2

3

4

5

6

7

cluster.name=es_cluster

node.name=node0

path.data=/tmp/elasticsearch/data

path.logs=/tmp/elasticsearch/logs

#當前hostname或IP,我這裡是centos2

network.host=centos2

network.port=9200

其他的選項保持預設,然後啟動ES:

?

1

./bin/elasticsearch

123556_6dOb_1434710.png

可以看到,它跟其他的節點的傳輸埠為9300,接受HTTP請求的埠為9200。

使用ctrl+C停止。當然,也可以使用後臺程序的方式啟動ES:

?

1

./bin/elasticsearch &

然後可以開啟頁面localhost:9200,將會看到以下內容:

123709_mUHy_1434710.png

返回展示了配置的cluster_name和name,以及安裝的ES的版本等資訊。

剛剛安裝的head外掛,它是一個用瀏覽器跟ES叢集互動的外掛,可以檢視叢集狀態、叢集的doc內容、執行搜尋和普通的Rest請求等。現在也可以使用它開啟localhost:9200/_plugin/head頁面來檢視ES叢集狀態:

124024_bnOW_1434710.png

可以看到,現在,ES叢集中沒有index,也沒有type,因此這兩條是空的。

Logstash

Logstash的功能如下:

124206_UKKk_1434710.png

其實它就是一個收集器而已,我們需要為它指定Input和Output(當然Input和Output可以為多個)。由於我們需要把Java程式碼中Log4j的日誌輸出到ElasticSearch中,因此這裡的Input就是Log4j,而Output就是ElasticSearch。

配置Logstash:

?

1

2

tar -zxvf logstash-2.1.1.tar.gz

cd logstash-2.1.1

編寫配置檔案(名字和位置可以隨意,這裡我放在config目錄下,取名為log4j_to_es.conf):

?

1

2

mkdir config

vi config/log4j_to_es.conf

輸入以下內容:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

# For detail structure of this file

# Set: https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html

input {

# For detail config for log4j as input, 

# See: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-log4j.html

log4j {

mode => "server"

host => "centos2"

port => 4567

}

}

filter {

#Only matched data are send to output.

}

output {

# For detail config for elasticsearch as output, 

# See: https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html

elasticsearch {

action => "index"            #The operation on ES

hosts  => "centos2:9200"     #ElasticSearch host, can be array.

index  => "ec"               #The index to write data to, can be any string.

}

}

logstash命令只有2個引數:

124351_c5xc_1434710.png

因此使用agent來啟動它(使用-f指定配置檔案):

?

1

./bin/logstash agent -f config/log4j_to_es.conf

124427_bwLM_1434710.png

到這裡,我們已經可以使用Logstash來收集日誌並儲存到ES中了,下面來看看專案程式碼。

Java專案

照例先看專案結構圖:

124604_vZcZ_1434710.png

pom.xml,很簡單,只用到了Log4j庫:

?

1

2

3

4

5

<dependency>

<groupId>log4j</groupId>

<artifactId>log4j</artifactId>

<version>1.2.17</version>

</dependency>

log4j.properties,將Log4j的日誌輸出到SocketAppender,因為官網是這麼說的:

125003_gGXs_1434710.png

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

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。

Application.java,使用Log4j的LOGGER列印日誌即可:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

package com.demo.elk;

import org.apache.log4j.Logger;

public class Application {

private static final Logger LOGGER = Logger.getLogger(Application.class);

public static void main(String[] args) throws Exception {

for (int i = 0; i < 10; i++) {

LOGGER.error("Info log [" + i + "].");

Thread.sleep(500);

}

}

}

用Head外掛檢視ES狀態和內容

執行Application.java,先看看console的輸出(當然,這個輸出只是為了做驗證,不輸出到console也可以的):

125311_sWzx_1434710.png

再來看看ES的head頁面:

125414_3JK6_1434710.png

切換到Browser標籤:

125433_AULZ_1434710.png

單擊某一個文件(doc),則會展示該文件的所有資訊:

125446_mqmh_1434710.png

125504_NcYf_1434710.png

上面使用了ES的Head外掛觀察了ES叢集的狀態和資料,但這只是個簡單的用於跟ES互動的頁面而已,並不能生成報表或者圖表什麼的,接下來使用Kibana來執行搜尋並生成圖表。

Kibana

配置Kibana:

?

1

2

3

tar -zxvf kibana-4.3.0-linux-x86.tar.gz

cd kibana-4.3.0-linux-x86

vi config/kibana.yml

修改以下幾項(由於是單機版的,因此host的值也可以使用localhost來代替,這裡僅僅作為演示):

?

1

2

3

4

server.port: 5601

server.host: “centos2”

elasticsearch.url: http://centos2:9200

kibana.index: “.kibana”

啟動kibana:

?

1

./bin/kibana

125828_PLcj_1434710.png

用瀏覽器開啟該地址:

125853_ABJt_1434710.png

為了後續使用Kibana,需要配置至少一個Index名字或者Pattern,它用於在分析時確定ES中的Index。這裡我輸入之前配置的Index名字applog,Kibana會自動載入該Index下doc的field,並自動選擇合適的field用於圖示中的時間欄位:

125922_L2FT_1434710.png

點選Create後,可以看到左側增加了配置的Index名字:

130003_bcKa_1434710.png

接下來切換到Discover標籤上,注意右上角是查詢的時間範圍,如果沒有查詢到資料,那麼你就可能需要調整這個時間範圍了,這裡我選擇Today:

130040_cA0j_1434710.png

接下來就能看到ES中的資料了:

130130_3reO_1434710.png

執行搜尋看看呢:

130304_xbvj_1434710.png

點選右邊的儲存按鈕,儲存該查詢為search_all_logs。接下來去Visualize頁面,點選新建一個柱狀圖(Vertical Bar Chart),然後選擇剛剛儲存的查詢search_all_logs,之後,Kibana將生成類似於下圖的柱狀圖(只有10條日誌,而且是在同一時間段的,比較醜,但足可以說明問題了:)  ):

130447_es2k_1434710.png

你可以在左邊設定圖形的各項引數,點選Apply Changes按鈕,右邊的圖形將被更新。同理,其他型別的圖形都可以實時更新。

點選右邊的儲存,儲存此圖,命名為search_all_logs_visual。接下來切換到Dashboard頁面:

130543_elQl_1434710.png

單擊新建按鈕,選擇剛剛儲存的search_all_logs_visual圖形,面板上將展示該圖:

130607_vH1C_1434710.png

如果有較多資料,我們可以根據業務需求和關注點在Dashboard頁面新增多個圖表:柱形圖,折線圖,地圖,餅圖等等。當然,我們可以設定更新頻率,讓圖表自動更新:

130638_2jqP_1434710.png

如果設定的時間間隔夠短,就很趨近於實時分析了。

到這裡,ELK平臺部署和基本的測試已完成。

相關推薦

ELK(ElasticSearch, Logstash, Kibana)搭建實時日誌分析平臺筆記

1.ELK注意事項 1.1要求jdk1.8+ 1.2Elsearch不允許使用root啟動 1.3ELK三個包版本要一致 2.ELK下載地址 https://www.elastic.co/cn/downloads elasticsearch-6.1.1.tar.gz

ELK(ElasticSearch, Logstash, Kibana)搭建實時日誌分析平臺

摘要: ELK平臺介紹 在搜尋ELK資料的時候,發現這篇文章比較好,於是摘抄一小段: 以下內容來自:http://baidu.blog.51cto.com/71938/1676798 日誌主要包括系統日誌、應用程式日誌和安全日誌。 ELK平臺介紹 在搜尋ELK資料的時候,

ELK(ElasticSearch, Logstash, Kibana)+ SuperVisor + Springboot + Logback 搭建實時日誌分析平臺

日誌主要包括系統日誌、應用程式日誌和安全日誌。系統運維和開發人員可以通過日誌瞭解伺服器軟硬體資訊、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日誌可以瞭解伺服器的負荷,效能安全性,從而及時採取措施糾正錯誤。 通常,日誌被分散的儲存不同的裝置上。如果你管理數十

ElasticsearchLogstashKibana 搭建統一日誌分析平臺 ( 第一篇 )

ELKstack是Elasticsearch、Logstash、Kibana三個開源軟體的組合。目前都在Elastic.co公司名下。 ELK是一套常用的開源日誌監控和分析系統,包括一個分散式索引與搜尋服務Elasticsearch, 一個管理日誌和事件的工

ELK搭建實時日誌分析平臺(elk+kafka+metricbeat)-搭建說明

elk搭建實時日誌分析平臺數據流向:metricbeat->kafka->logstash->elasticsearch->kibana.應用分布:主機應用備註192.168.30.121java version "1.8.0_144"zookeeper-3.4.10.tar.gzka

ELK搭建實時日誌分析平臺(elk+kafka+metricbeat)-KAFKA搭建

kafka搭建(elk+kafka+metricbeat)一、kafka搭建建立elk目錄:mkdir /usr/loca/elk安裝zookeeper:192.168.30.121:192.168.30.122:192.168.30.123:3. kafka安裝: a. 192.168.30.121

ELK搭建實時日誌分析平臺

ELK 一、介紹 Elasticsearch是個開源分散式搜尋引擎,它的特點有:分散式,零配置,自動發現,索引自動分片,索引副本機制,restful風格介面,多資料來源,自動搜尋負載等。 Logstash是一個完全開源的工具,他可以對你的日誌進行收集、過濾

ELK實時日誌分析平臺環境部署--完整記錄(ElasticSearch+Logstash+Kibana

在日常運維工作中,對於系統和業務日誌的處理尤為重要。今天,在這裡分享一下自己部署的ELK(+Redis)-開源實時日誌分析平臺的記錄過程(僅依據本人的實際操作為例說明,如有誤述,敬請指出)~================概念介紹================日誌主要包括系統日誌、應用程式日誌和安全日誌。系

搭建ELK(ElasticSearch+Logstash+Kibana)日誌分析系統(十四) logstash grok 正則解析日誌

摘要 這一節補充一下logstash使用grok正則解析日誌 Grok 是 Logstash 最重要的外掛。通過在filter中使用grok,可以把日誌中的關鍵字匹配出來。 grok正則主要有兩部分: 一是grok自帶的grok模式表示式,即是gr

ELK日誌系統:Elasticsearch+Logstash+Kibana搭建教程

htpasswd ins 4.2 httpd 2.3 ted location parser oracle ELK日誌系統:Elasticsearch + Logstash + Kibana 搭建教程 安裝配置JDK環境 JDK安裝(不能安裝JRE) JDK下載地址:htt

docker 部署 ELK (elasticsearch + logstash + kibana) 收集分析 nginx 日誌

git 專案地址 https://github.com/Gekkoou/docker-elk 目錄結構 ├── elasticsearch elasticsearch目錄 │ └── es

ELK(實時日誌分析平臺)搭建必備基礎知識-------logstash

預熱:基礎知識        Logstash 是一個開源的資料收集引擎,它具有備實時資料傳輸能力。它可以統一過濾來自不同源的資料,並按照開發者的制定的規範輸出到目的地。 顧名思義,Logstash 收集資料物件就是日誌檔案。由於日誌檔案來源多(如:系統日

ELK(elasticsearch+logstash+kibana)實現Java分散式系統日誌分析架構

日誌是分析線上問題的重要手段,通常我們會把日誌輸出到控制檯或者本地檔案中,排查問題時通過根據關鍵字搜尋本地日誌,但越來越多的公司,專案開發中採用分散式的架構,日誌會記錄到多個伺服器或者檔案中,分析問題時可能需要檢視多個日誌檔案才能定位問題,如果相關專案不是一個團隊維護

Kibanalogstash快速搭建實時日誌查詢、收集與分析系統

  Logstash是一個完全開源的工具,他可以對你的日誌進行收集、分析,並將其儲存供以後使用(如,搜尋),您可以使用它。說到搜尋,logstash帶有一個web介面,搜尋和展示所有日誌。 kibana 也是一個開源和免費的工具,他可以幫助您彙總、分析和搜尋重要資料日誌並提供友好的web介面。他可以為 L

ELK實時日誌分析平臺(elk+kafka+metricbeat)-logstash(四)

elk-logstash搭建1. 安裝並測試: 2. 添加配置: 3. 啟動檢查:本文出自 “linux” 博客,請務必保留此出處http://1054054.blog.51cto.com/1044054/1968431ELK實時日誌分析平臺(elk+kafka+metricbeat)-logs

利用ELK+Kafka解決方案,搭建企業級實時日誌分析平臺

    ELK是三款軟體的組合。是一整套完整的解決方案。分別是由Logstash(收集+分析)、ElasticSearch(搜尋+儲存)、Kibana(視覺化展示)三款軟體。ELK主要是為了在海量的日誌系統裡面實現分散式日誌資料集中式管理和查詢,便於監控以及排查故障。

ELK(實時日誌分析平臺)搭建必備基礎知識-------filebeat

預熱:基礎知識        Beats是elastic公司的一款輕量級資料採集產品,它包含了幾個子產品: packetbeat(用於監控網路流量)、 filebeat(用於監聽日誌資料,可以替代logstash-input-file)、

ELK實時日誌分析平臺部署搭建詳細實現過程

原文地址:http://www.linuxidc.com/Linux/2016-09/135137.htm 1、ELK平臺介紹 在搜尋ELK資料的時候,發現這篇文章比較好,於是摘抄一小段: 日誌主要包括系統日誌、應用程式日誌和安全日誌。系統運維和開發人員可以通過日

elk實時日誌分析平臺部署搭建詳細實現過程:加上個人實踐意見,及如何避坑

/* * Copyright 2002-2012 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you m

23.ELK實時日誌分析平臺之Beats平臺搭建

在被監控的系統使用Beats平臺,要配合Elasticsearch、Logstash(如果需要的話)、Kibana共同使用。搭建該平臺要求在安裝Beat客戶端的機器上可以訪問到Elasticsearch、Logstash(如果有的話)以及Kibana伺服器。