ELK Stack

簡介

??ELK stack 是以Elasticsearch旁壮、Logstash潘拨、Kibana三個開源軟件為主的數(shù)據(jù)處理工具鏈蒋畜,在于實時數(shù)據(jù)檢索和分析場合卒暂,三個通常是配合使用啄栓,而且又先后歸于Elastic.co公司名下,故有此簡稱介却。在5.0版本之后又加入Elastic公司的Beats工具谴供,改名叫Elastic Stack。

ELK Stack有如下幾個優(yōu)點:

  • 處理方式靈活齿坷。Elasticsearch 是實時全文索引桂肌,不需要像 storm 那樣預(yù)先編程才能使用;
  • 配置簡易上手永淌。Elasticsearch 全部采用 JSON 接口崎场,Logstash 是 Ruby DSL 設(shè)計,都是目前業(yè)界最通用的配置語法設(shè)計遂蛀;
  • 檢索性能高效谭跨。雖然每次查詢都是實時計算,但是優(yōu)秀的設(shè)計和實現(xiàn)基本可以達到全天數(shù)據(jù)查詢的秒級響應(yīng)李滴;
  • 集群線性擴展螃宙。不管是 Elasticsearch 集群還是 Logstash 集群都是可以線性擴展的;
  • 前端操作炫麗所坯。Kibana 界面上谆扎,只需要點擊鼠標(biāo),就可以完成搜索芹助、聚合功能堂湖,生成炫麗的儀表板。
  • 而ELK Stack加入Beats中的filebeat之后更加優(yōu)秀状土,filebeat是一個輕量級的日志收集處理工具无蜂,F(xiàn)ilebeat占用資源少,適合于在各個服務(wù)器上搜集日志后傳輸給Logstash蒙谓,官方也推薦此工具斥季。
ELK Stack組成

通常情況下的ELK是由Elasticsearch、Logstash和Kibana組成累驮。

ELK之間的合作機制:

  • L(logstash)作為作為信息收集者泻肯,主要是用來對日志的搜集渊迁、分析、過濾灶挟,支持大量的數(shù)據(jù)獲取方式琉朽,一般工作方式為c/s架構(gòu)区赵,client端安裝在需要收集日志的主機上峭梳,server端負(fù)責(zé)將收到的各節(jié)點日志進行過濾、修改等操作在一并發(fā)往elasticsearch上去积蔚。
  • E(Elasticsearch)作為數(shù)據(jù)的保存者惕医,保存來自L(Logstash)收集的系統(tǒng)日志數(shù)據(jù)耕漱,并建立索引,以及提供之后對數(shù)據(jù)的檢索抬伺。
  • K(Kibana)作為展示者螟够,主要是將ES上的數(shù)據(jù)通過頁面可視化的形式展現(xiàn)出來。包括可以通過語句查詢峡钓、安裝插件對指標(biāo)進行可視化等妓笙。

一、Logstash

??Logstash 項目誕生于 2009 年 8 月 2 日能岩。其作者是世界著名的運維工程師喬丹西塞(JordanSissel)
??2013 年寞宫,Logstash 被 Elasticsearch 公司收購,ELK Stack 正式成為官方用語(隨著 beats 的加入改名為 Elastic Stack)拉鹃。Elasticsearch 本身 也是近兩年最受關(guān)注的大數(shù)據(jù)項目之一辈赋,三次融資已經(jīng)超過一億美元。在 Elasticsearch 開發(fā)人員的共同努力下膏燕,Logstash 的發(fā)布機制钥屈,插件架構(gòu)也愈發(fā)科學(xué)和合理。
??Logstash 是一個具有實時渠道能力的數(shù)據(jù)收集引擎坝辫。使用 JRuby 語言編寫篷就。logstash就像是一根具備實時數(shù)據(jù)傳輸能力的管道,負(fù)責(zé)將數(shù)據(jù)信息從管道的輸入端傳輸?shù)焦艿赖妮敵龆朔埽慌c此同時這根管道還可以讓根據(jù)需求在中間加上濾網(wǎng),Logstash提供里很多功能強大的濾網(wǎng)以滿足各種應(yīng)用場景鸦泳。

image.png
Logstash 安裝

官方下載地址:https://www.elastic.co/downloads/logstash

1银锻、安裝JDK

[root@linux ~]# tar -xf jdk-8u211-linux-x64.tar.gz
[root@linux ~]# mv jdk-8u211 /usr/local/java
[root@linux ~]# vim /etc/profile.d/jdk.sh
JAVA_HOME=/usr/local/java
PATH=$PATH:JAVA_HOME/bin
export JAVA_HOME PATH
[root@linux ~]# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

2、安裝Logstash

[root@linux ~]# tar -xf logstash-6.5.4.tar.gz
[root@linux ~]# mv logstash-6.5.4 /usr/local/logstash

① Logstash的stdin標(biāo)準(zhǔn)輸入

標(biāo)準(zhǔn)輸入(屏幕輸入)
標(biāo)準(zhǔn)輸出(輸出屏幕)

[root@linux ~]# cd /usr/local/logstash/
[root@linux logstash]# mkdir -p etc/conf.d
[root@linux logstash]# vim etc/conf.d/stdin.conf
input {
    stdin {}
}
output {
    stdout {
        codec => rubydebug
    }
}
[root@linux logstash]# bin/logstash -f etc/conf.d/stdin.conf

image.png

image.png

② Logstash的file輸入文件

logstash只有第一次讀取文件的時候會讀取整個文件的內(nèi)容做鹰,而后只會讀取更新的記錄

vim etc/conf.d/file.conf
input {
    file {
        path => "var/log/message"
        start_position => beginning
    }
}
output {
    stdout {
        codec => rubydebug
    }
}

參數(shù)
? discover_interval
logstash每隔多久去檢查一次被監(jiān)聽的目錄下是否有新文件击纬,默認(rèn)是15秒
? exclude
可以排除不想監(jiān)聽的文件
? sincedb_write_interval
logstash 每隔多久寫一次 sincedb 文件,默認(rèn)是 15 秒钾麸。
? stat_interval
logstash 每隔多久檢查一次被監(jiān)聽文件狀態(tài)(是否有更新)更振,默認(rèn)是 1 秒炕桨。
? start_position
logstash 從什么位置開始讀取文件數(shù)據(jù),默認(rèn)是結(jié)束位置肯腕,也就是說 logstash 進程會以類似 tail -F 的形式運行献宫。如果你是要導(dǎo)入原有數(shù)據(jù),把這個設(shè)定改成 "beginning"实撒,logstash 進程就從頭開始讀取姊途,有點類似 cat,但是讀到最后一行不會終止知态,而是繼續(xù)變成 tail -F捷兰。

start_position 僅在該文件從未被監(jiān)聽過的時候起作用。如果 sincedb 文件中已經(jīng)有這個文件的 inode 記錄了负敏,那么 logstash 依然會從記錄過的 pos 開始讀取數(shù)據(jù)贡茅。所以重復(fù)測試的時候每回需要刪除 sincedb 文件

③ Logstash的tcp讀取網(wǎng)絡(luò)數(shù)據(jù)

[root@linux logstash]vim etc/conf.d/tcp.conf
input {
    tcp {
        port => 666
    }
}
output {
    stdout {
        codec => rubydebug
    }
}
[root@linux ~]# nc 127.0.0.1 666 < a.txt
image.png

根據(jù)logstash這個特性,可以通過配置接受filebeat傳的數(shù)據(jù)

④ Logstash過濾器之grok正則匹配

Grok是logstash最重要的插件

grok模式的語法如下:
%{SYNTAX:SEMANTIC}
SYNTAX: 代表匹配值的類型其做,例如3.44可以用NUMBER類型所匹配顶考,127.0.0.1可以 使用IP類型匹配
SEMANTIC:代表存儲該值的一個變量名稱,例如 3.44 可能是一個事件的持續(xù)時間,127.0.0.1可能是請求的client地址。所以這兩個值可以用 %{NUMBER:duration} %{IP:client} 來匹配庶柿。

begin 123.456 end

%{WORD} %{NUMBER:request_time:float} %{WORD}

logstach 預(yù)定義字段

filter {
    grok {
        match => {"message" => "%{COMBINEDAPACHELOG} %{QS:x_forwarded_for}"}
    }
}

⑤ Logstash過濾器之mutate數(shù)據(jù)修改

filters/mutate 插件是 Logstash 另一個重要插件村怪。它提供了豐富的基礎(chǔ)類型數(shù)據(jù)處理能力。包括類型轉(zhuǎn)換浮庐,字符串處理和字段處理等甚负。

類型轉(zhuǎn)換
可以設(shè)置的轉(zhuǎn)換類型包括:"integer","float" 和 "string"审残。示例如下:

filter {
    mutate {
        convert => ["request_time", "float"]
    }
}

⑥ Logstash過濾器之mutate數(shù)據(jù)處理

字符串處理
split

filter {
   mutate {
       split => ["message", "|"]
   }
}

隨意輸入一串以|分割的字符梭域,比如 "123|321|adfd|dfjld*=123"

image.png

join
僅對數(shù)組類型字段有效

filter {
    mutate {
        split => ["message", "|"]
    }
    mutate {
        join => ["message", ","]
    }
}

filter 區(qū)段之內(nèi),是順序執(zhí)行的搅轿。所以最后看到的輸出結(jié)果是:

image.png

字段處理
rename

重命名某個字段病涨,如果目的字段已經(jīng)存在,會被覆蓋掉:

filter {
    mutate {
        rename => ["host", "host_name"]
    }
}
image.png

update
更新某個字段的內(nèi)容璧坟。如果字段不存在既穆,不會新建。
replace
作用和 update 類似雀鹃,但是當(dāng)字段不存在的時候幻工,它會起到 add_field 參數(shù)一樣的效果,自動添加新的字段黎茎。

⑦ Logstash過濾器之GeoIP地址查詢

GeoIP 是最常見的免費 IP 地址歸類查詢庫囊颅,同時也有收費版可以采購。GeoIP 庫可以根據(jù) IP 地址提供對應(yīng)的地域信息,包括國別踢代,省市盲憎,經(jīng)緯度等,對于可視化地圖和區(qū)域統(tǒng)計非常有用胳挎。

配置示例

filter {
    geoip {
        source => “message”    
    }
}

GeoIP 庫數(shù)據(jù)較多饼疙,如果不需要這么多內(nèi)容,可以通過 fields 選項指定自己所需要的串远。下例為全部可選內(nèi)容:

filter {
    geoip {
        fields => ["city_name", "continent_code", "country_code2", "country_code3", "country_name", "dma_code", "ip", "latitude", "longitude", "postal_code", "region_name", "timezone"]
    }
}

⑧ Logstash過濾器之useragent匹配歸類

可以獲取瀏覽器版本宏多、型號以及系統(tǒng)版本

配置示例

filter {
    useragent {
        target => "ua"
        source => "useragent"
    }
}

⑨ Logstash過濾器之split拆分事件

split 拆分事件
可以把一行數(shù)據(jù),拆分成多個事件
配置示例

filter {
    split {
        field => "message"
        terminator => "#" 
    }
}

在 intputs/stdin 的終端中輸入一行數(shù)據(jù):"test1#test2",輸出結(jié)果如下


image.png

⑩ Logstash的output配置

標(biāo)準(zhǔn)輸出(stdout)
配置示例

output {
    stdout {
        codec => rubydebug
    }
}

保存成文件(file)
配置示例

output {
    file {
        path => "/path/to/%{+yyyy/MM/dd/HH}/%{host}.log.gz"
        message_format => "%{message}"
        gzip => true    
    }
}

output/file 插件首先需要注意的就是message_format參數(shù)澡罚。插件默認(rèn)是輸出整個event的json形式數(shù)據(jù)伸但。所以需要定義為%{message},前提是在之前的filter插件中留搔,沒有使用remove_field或者update等參數(shù)刪除或修改%{message}字段的內(nèi)容

保存進elasticsearch

配置示例

output {
    elasticsearch {
        host => “IP”
        index => “l(fā)ogstash-%{type}-%{+YYYY.MM.dd}” 
        index_type => “%{type}”
    }
}

index => "索引名” 寫入的elasticsearch索引的名稱更胖,可以使用變量。還提供了%{+YYYY.MM.dd}這種寫法隔显。此外却妨,索引名中不能有大寫字母。

輸出到redis

配置示例

input { stdin {} }
output {
    redis {
        data_type => “channel” 
        key => “l(fā)ogstash-chan-%{+yyyy.MM.dd}”   
    }
}

Logstash的配置文件

image.png

二括眠、Elasticsearch

Elasticsearch 來源于作者 Shay Banon 的第一個開源項目 Compass 庫彪标,而這個 Java 庫最初的目的只是為了給 Shay 當(dāng)時正在學(xué)廚師的妻子做一個菜譜的搜索引擎。2010 年掷豺,Elasticsearch 正式發(fā)布捞烟。至今已經(jīng)成為 GitHub 上最流行的 Java 項目,不過 Shay 承諾給妻子的菜譜搜索依然沒有面世……
2015 年初当船,Elasticsearch 公司召開了第一次全球用戶大會 Elastic{ON}15题画。諸多 IT 巨頭紛紛贊助,參會德频,演講苍息。會后,Elasticsearch 公司宣布改名 Elastic壹置,公司官網(wǎng)也變成 http://elastic.co/竞思。這意味著 Elasticsearch 的發(fā)展方向,不再限于搜索業(yè)務(wù)钞护,也就是說盖喷,Elastic Stack 等機器數(shù)據(jù)和 IT 服務(wù)領(lǐng)域成為官方更加注意的方向。隨后幾個月患亿,專注監(jiān)控報警的 Watcher 發(fā)布 beta 版传蹈,社區(qū)有名的網(wǎng)絡(luò)抓包工具 Packetbeat、多年專注于基于機器學(xué)習(xí)的異常探測 Prelert 等 ITOA 周邊產(chǎn)品紛紛被 Elastic 公司收購步藕。

Elasticsearch核心概念

cluster

代表一個集群惦界,集群中有多個節(jié)點,其中有一個為主節(jié)點咙冗,這個主節(jié)點是可以通過選舉產(chǎn)生的沾歪,主從節(jié)點是對于集群內(nèi)部來說的。es的一個概念就是去中心化雾消,字面上理解就是無中心節(jié)點灾搏,這是對于集群外部來說的,因為從外部來看es集群立润,在邏輯上是個整體狂窑,你與任何一個節(jié)點的通信和與整個es集群通信是等價的。

node

代表集群中的一個節(jié)點桑腮,節(jié)點也有一個名稱(默認(rèn)是隨機分配的)泉哈,默認(rèn)節(jié)點會去加入一個名稱為“elasticsearch”的集群,如果直接啟動一堆節(jié)點破讨,那么它們會自動組成一個elasticsearch集群丛晦,當(dāng)然一個節(jié)點也可以組成一個elasticsearch集群,集群中一個節(jié)點會被選舉為主節(jié)點(master),它將臨時管理集群級別的一些變更提陶,例如新建或刪除索引烫沙、增加或移除節(jié)點等。主節(jié)點不參與文檔級別的變更或搜索隙笆,這意味著在流量增長的時候锌蓄,該主節(jié)點不會成為集群的瓶頸。

document&field

一個文檔是一個可被索引的基礎(chǔ)信息單元仲器,比如:一個document可以是一條客戶數(shù)據(jù)煤率,一條商品分類數(shù)據(jù),一條訂單數(shù)據(jù)等乏冀。通常用JSON數(shù)據(jù)結(jié)構(gòu)表示蝶糯,每個index下的type中,都可以去存儲多個document辆沦。一個document里面有多個field昼捍,每個field就是一個數(shù)據(jù)字段。

index

一個索引就是一個擁有幾分相似特征的文檔的集合肢扯。比如可以有一個客戶索引妒茬,商品分類索引,訂單索引等蔚晨。一個index包含很多document乍钻,一個index就代表了一類類似的或者相同的document肛循。

type

每個索引里都可以有一個或多個type,type是index中的一個邏輯數(shù)據(jù)分類银择,一個type下的document多糠,都有相同的field

shards

代表索引分片,es可以把一個完整的索引分成多個分片浩考,這樣的好處是可以把一個大的索引拆分成多個夹孔,分布到不同的節(jié)點上。構(gòu)成分布式搜索析孽。分片的數(shù)量只能在索引創(chuàng)建前指定搭伤,并且索引創(chuàng)建后不能更改。

replicas

代表索引副本袜瞬,es可以設(shè)置多個索引的副本怜俐,副本的作用一是提高系統(tǒng)的容錯性,當(dāng)某個節(jié)點某個分片損壞或丟失時可以從副本中恢復(fù)邓尤。二是提高es的查詢效率佑菩,es會自動對搜索請求進行負(fù)載均衡。

recovery

代表數(shù)據(jù)恢復(fù)或叫數(shù)據(jù)重新分布裁赠,es在有節(jié)點加入或退出時會根據(jù)機器的負(fù)載對索引分片進行重新分配殿漠,掛掉的節(jié)點重新啟動時也會進行數(shù)據(jù)恢復(fù)。

discovery.zen

代表es的自動發(fā)現(xiàn)節(jié)點機制佩捞,es是一個基于p2p的系統(tǒng)绞幌,它先通過廣播尋找存在的節(jié)點,再通過多播協(xié)議來進行節(jié)點之間的通信一忱,同時也支持點對點的交互莲蜘。

Transport

代表es內(nèi)部節(jié)點或集群與客戶端的交互方式,默認(rèn)內(nèi)部是使用tcp協(xié)議進行交互帘营,同時它支持http協(xié)議(json格式)票渠、thrift、servlet芬迄、memcached问顷、zeroMQ等的傳輸協(xié)(通過插件方式集成)。

ES數(shù)據(jù)架構(gòu)(與關(guān)系型數(shù)據(jù)庫mysql對比)
image.png

(1)關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)庫(DataBase)禀梳,等價于ES中的索引(Index)
(2)一個數(shù)據(jù)庫下面有N張表(Table)杜窄,等價于1個索引Index下面有N多類型(Type),
(3)一個數(shù)據(jù)庫表(Table)下的數(shù)據(jù)由多行(ROW)多列(column算途,屬性)組成塞耕,等價于1個Type由多個文檔(Document)和多Field組成。
(4)在一個關(guān)系型數(shù)據(jù)庫里面嘴瓤,schema定義了表扫外、每個表的字段莉钙,還有表和字段之間的關(guān)系。 與之對應(yīng)的筛谚,在ES中:Mapping定義索引下的Type的字段處理規(guī)則胆胰,即索引如何建立、索引類型刻获、是否保存原始索引JSON文檔、是否壓縮原始JSON文檔瞎嬉、是否需要分詞處理蝎毡、如何進行分詞處理等。
(5)在數(shù)據(jù)庫中的增insert氧枣、刪delete沐兵、改update、查search操作等價于ES中的增PUT/POST便监、刪Delete扎谎、改_update、查GET.

Elasticsearch的配置
#設(shè)置集群名字
 cluster.name: cswuyg_qa_pair_test
#設(shè)置node名字
 node.name: xxx-node
# 允許一個節(jié)點是否可以成為一個master節(jié)點,es是默認(rèn)集群中的第一臺機器為master,如果這臺機器停止就會重新選舉master. 
node.master: true 
# 允許該節(jié)點存儲數(shù)據(jù)(默認(rèn)開啟) 
node.data: true 
# 數(shù)據(jù)存儲位置
path.data: /data1/es-data/
#設(shè)置節(jié)點域名
 network.host: x.x.x.x
#設(shè)置內(nèi)部傳輸端口和外部HTTP訪問端口
 transport.tcp.port: 9300
 http.port: 9200
#設(shè)置集群其它節(jié)點地址
 discovery.zen.ping.unicast.hosts: ["xxxhost:yyyport"]

三烧董、Kibana

簡介:

Logstash 早期曾經(jīng)自帶了一個特別簡單的 logstash-web 用來查看 ES 中的數(shù)據(jù)毁靶。其功能太過簡單,于是 Rashid Khan 用 PHP 寫了一個更好用的 web逊移,取名叫 Kibana预吆。這個 PHP 版本的 Kibana 發(fā)布時間是 2011 年 12 月 11 日。

Kibana 迅速流行起來胳泉,不久的 2012 年 8 月 19 日拐叉,Rashid Khan 用 Ruby 重寫了 Kibana,也被叫做 Kibana2扇商。因為 Logstash 也是用 Ruby 寫的凤瘦,這樣 Kibana 就可以替代原先那個簡陋的 logstash-web 頁面了。

目前看到的 angularjs 版本 kibana 其實原名叫 elasticsearch-dashboard案铺,但跟 Kibana2 作者是同一個人蔬芥,換句話說,kibana 比 logstash 還早就進了 elasticsearch 名下控汉。這個項目改名 Kibana 是在 2014 年 2 月坝茎,也被叫做 Kibana3。全新的設(shè)計一下子風(fēng)靡 DevOps 界暇番。隨后其他社區(qū)紛紛借鑒嗤放,Graphite 目前最流行的 Grafana 界面就是由此而來,至今代碼中還留存有十余處 kbn 字樣壁酬。

2014 年 4 月次酌,Kibana3 停止開發(fā)恨课,ES 公司集中人力開始 Kibana4 的重構(gòu),在 2015 年初發(fā)布了使用 JRuby 做后端的 beta 版后岳服,于 3 月正式推出使用 node.js 做后端的正式版剂公。

Kibana是一個為Elasticsearch平臺分析和可視化的開源平臺,使用Kibana能夠搜索吊宋、展示存儲在Elasticsearch中的索引數(shù)據(jù)纲辽。使用它可以很方便用圖表、表格璃搜、地圖展示和分析數(shù)據(jù)拖吼。
Kibana能夠輕松處理大量數(shù)據(jù),通過瀏覽器接口能夠輕松的創(chuàng)建和分享儀表盤这吻,通過改變Elasticsearch查詢時間吊档,可以完成動態(tài)儀表盤。

Kibana模塊功能

discover

Discover標(biāo)簽頁用于交互式探索數(shù)據(jù)唾糯,可以訪問到匹配得上的索引模式的每個索引的每條記錄
設(shè)置時間過濾器
時間過濾器限制搜索結(jié)果在一個特定的時間周期內(nèi)怠硼。
搜索數(shù)據(jù)
在discover頁提交一個搜索,可以搜索匹配當(dāng)前索引模式的索引數(shù)據(jù)
保存搜索
可以在discover頁保存已加載的搜索移怯,也可以用作可視化的基礎(chǔ)
自動刷新頁面
可以配置一個刷新間隔自動刷新頁面的最新索引數(shù)據(jù)
按字段過濾
可以過濾搜索結(jié)果香璃,只顯示在某字段中包含了特定值的文檔,可以創(chuàng)建過濾器舟误。

Visualize

visualize用來設(shè)計可視化增显,保存的可視化可以添加合并到dashboard里。

visualize類型

Area chart (面積圖) 使用面積圖來可視化各種不同類型的總作用
Data table (數(shù)據(jù)表) 使用數(shù)據(jù)表來展示組合聚集的原始數(shù)據(jù)脐帝。
Line chart (線圖) 用來比較不同的類型
Markdown widget 用 Markdown 顯示自定義格式的信息或和儀表盤有關(guān)的用法說明
Metric (計數(shù)) 統(tǒng)計數(shù)目
Pie (餅圖) 用餅圖顯示每個數(shù)據(jù)源的總體占比
Tile map (地圖) 用地圖將聚合結(jié)果和經(jīng)緯度結(jié)合
Vertical bar chart (垂直條狀圖) 用垂直條形圖作為計數(shù)圖形

Dashboard

一個 Kibana dashboard 能自由排列一組已保存的可視化同云。然后可以保存這個儀表板,用來分享或者重載堵腹。

Timelion

Timelion是一個時間序列數(shù)據(jù)的可視化炸站,可以結(jié)合在一個單一的可視化完全獨立的數(shù)據(jù)源。它是由一個簡單的表達式語言驅(qū)動的疚顷,可以用來檢索時間序列數(shù)據(jù)旱易,進行計算,找出復(fù)雜的問題的答案腿堤,并可視化的結(jié)果阀坏。

APM

彈性應(yīng)用程序性能監(jiān)視(APM)自動從應(yīng)用程序內(nèi)部收集深入的性能指標(biāo)和錯誤。
Kibana中的APM頁面隨X-Pack基本許可證一起提供笆檀。它使開發(fā)人員能夠深入了解其應(yīng)用程序的性能數(shù)據(jù)忌堂,并快速找到性能瓶頸。

Dev Tools

原先的交互式控制臺Sense酗洒,使用戶方便的通過瀏覽器直接與Elasticsearch進行交互士修。從Kibana 5開始改名并直接內(nèi)建在Kibana枷遂,就是Dev Tools選項。

Monitoring

kibana中的X-Pack監(jiān)控棋嘲,可以實時查看Elasticsearch酒唉,Logstash和Beats的運行狀況和性能數(shù)據(jù)。

Management

管理應(yīng)用程序是執(zhí)行Kibana的運行時配置的地方沸移,包括索引模式的初始設(shè)置和持續(xù)配置痪伦,調(diào)整Kibana本身行為的高級設(shè)置,以及可以在整個Kibana中保存的各種“對象”雹锣,例如搜索网沾,可視化和儀表板。

四笆制、Beats

image.png

Filebeat是基于原先 logstash-forwarder 的源碼改造出來的。換句話說:filebeat 就是新版的 logstash-forwarder涣达,也會是 Elastic Stack 在 shipper 端的第一選擇在辆。
Metricbeat是一個輕量級的采集器,不但可以監(jiān)控服務(wù)器的性能指標(biāo)度苔,還可以監(jiān)控運行在服務(wù)區(qū)之上的應(yīng)用信息(eg.Apache匆篓、MongoDB、MySQL寇窑、Ngnix鸦概、PostgreSQL、Redis甩骏、Zookeeper窗市、System)。
Packetbeat 是一個實時網(wǎng)絡(luò)數(shù)據(jù)包分析工具饮笛,與elasticsearch一體來提供應(yīng)用程序的監(jiān)控和分析系統(tǒng)咨察。
winlogbeat 通過標(biāo)準(zhǔn)的 windows API 獲取 windows 系統(tǒng)日志,常見的有 application福青,hardware摄狱,security 和 system 四類。
Auditbeat是一個輕量級的傳輸器无午,以審核系統(tǒng)上用戶和進程的活動媒役。例如檢測關(guān)鍵文件(如二進制文件和配置文件)的更改,并識別潛在的安全策略違規(guī)宪迟。
Heartbeat是一個輕量級守護程序酣衷,可以安裝在遠程服務(wù)器上,定期檢查服務(wù)狀態(tài)并確定它們是否可用次泽。

image.png

filebeat的收集日志配置鸥诽,可以收集多個日志文件商玫,配置多個type模塊,enabled的值默認(rèn)設(shè)置是false,需要改成true牡借,paths指定日志文件的絕對路徑拳昌,tags是為了后續(xù)logstash對其進行篩選。
filebeat的輸出配置钠龙,因為這里輸出到logstash了炬藤,需要把elasticsearch的配置注釋,在logstash的模塊添加logstash的IP以及端口

Elastic Stack的架構(gòu)

image.png

數(shù)據(jù)收集的工作由filebeat完成碴里,因為它是個輕量級的logstash沈矿,安裝簡單,占用資源少咬腋,不會占用jvm內(nèi)存羹膳;數(shù)據(jù)的處理交由logstash;數(shù)據(jù)的存儲和數(shù)據(jù)的檢索是由elasticsearch完成的根竿,最后數(shù)據(jù)的各種聚合和可視化的工作是kibana的陵像。

理想的Elastic Stack架構(gòu)
image.png

這里多了個kafka消息隊列,kafka作為消息隊列解耦了處理過程寇壳,同時提高了可擴展性醒颖。具有峰值處理能力,使用消息隊列能夠使關(guān)鍵組件頂住突發(fā)的訪問壓力壳炎,而不會因為突發(fā)的超負(fù)荷的請求而完全崩潰泞歉。

Redis、Kafka和Rabbitmq的對比

  • Kafka是一種分布式的匿辩,基于發(fā)布/訂閱的消息系統(tǒng)腰耙。它遵從一般的MQ結(jié)構(gòu),producer铲球,broker沟优,consumer,以consumer為中心睬辐,消息的消費信息保存的客戶端consumer上挠阁,consumer根據(jù)消費的點,從broker上批量pull數(shù)據(jù)溯饵;無消息確認(rèn)機制侵俗。Kafka開發(fā)語言為Scala,支持跨平臺丰刊。

  • Kafka的優(yōu)點:
    分布式高可擴展隘谣。Kafka 集群可以透明的擴展,增加新的服務(wù)器進集群;
    高性能寻歧。Kafka 的性能大大超過傳統(tǒng)的ActiveMQ掌栅、RabbitMQ等MQ 實現(xiàn),尤其是Kafka 還支持batch 操作码泛;
    容錯猾封。Kafka每個Partition的數(shù)據(jù)都會復(fù)制到幾臺服務(wù)器上。當(dāng)某個Broker故障失效時噪珊,ZooKeeper服務(wù)將通知生產(chǎn)者和消費者晌缘,生產(chǎn)者和消費者轉(zhuǎn)而使用其它Broker。
    高吞吐量痢站。kafka內(nèi)部采用消息的批量處理磷箕,zero-copy機制,數(shù)據(jù)的存儲和獲取是本地磁盤順序批量操作阵难,具有O(1)的復(fù)雜度岳枷,消息處理的效率很高。
    kafka的設(shè)計初衷是一個日志系統(tǒng)呜叫,其隊列中的數(shù)據(jù)能夠持久化一段時間空繁。因此后來的consumer能夠通過自定義offset來實現(xiàn)獲取之前的消息,而redis就不具備這樣的能力怀偷。

  • RabbitMQ是一個Advanced Message Queuing Protocol(AMQP)的開源實現(xiàn)家厌,由以高性能播玖、可伸縮性出名的Erlang寫成椎工。RabbitMQ的broker由Exchange,Binding,queue組成,其中exchange和binding組成了消息的路由鍵蜀踏;客戶端Producer通過連接channel和server進行通信维蒙,Consumer從queue獲取消息進行消費(長連接,queue有消息會推送到consumer端果覆,consumer循環(huán)從輸入流讀取數(shù)據(jù))颅痊。rabbitMQ以broker為中心;有消息的確認(rèn)機制局待。RabbitMQ Server適用的OS有:Windows斑响、Linux/Unix和Mac OS X。

  • AMQP協(xié)議主要有3個組件:
    交換器(Exchange):它是發(fā)送消息的實體
    隊列(Queue):它是接收消息的實體
    綁定器(Bind):將交換器和隊列連接起來钳榨,并且封裝消息的路由信息
    rabbitMQ在吞吐量方面稍遜于kafka舰罚,他們的出發(fā)點不一樣,rabbitMQ支持對消息的可靠的傳遞薛耻,支持事務(wù)营罢,不支持批量的操作;基于存儲的可靠性的要求存儲可以采用內(nèi)存或者硬盤饼齿。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末饲漾,一起剝皮案震驚了整個濱河市蝙搔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌考传,老刑警劉巖吃型,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異伙菊,居然都是意外死亡败玉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門镜硕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來运翼,“玉大人,你說我怎么就攤上這事兴枯⊙剩” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵财剖,是天一觀的道長悠夯。 經(jīng)常有香客問我,道長躺坟,這世上最難降的妖魔是什么沦补? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮咪橙,結(jié)果婚禮上夕膀,老公的妹妹穿的比我還像新娘。我一直安慰自己美侦,他們只是感情好产舞,可當(dāng)我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著菠剩,像睡著了一般易猫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上具壮,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天准颓,我揣著相機與錄音,去河邊找鬼棺妓。 笑死攘已,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的涧郊。 我是一名探鬼主播贯被,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了彤灶?” 一聲冷哼從身側(cè)響起看幼,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎幌陕,沒想到半個月后诵姜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡搏熄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年棚唆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片心例。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡宵凌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出止后,到底是詐尸還是另有隱情瞎惫,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布译株,位于F島的核電站瓜喇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏歉糜。R本人自食惡果不足惜乘寒,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望匪补。 院中可真熱鬧伞辛,春花似錦、人聲如沸叉袍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喳逛。三九已至,卻和暖如春棵里,著一層夾襖步出監(jiān)牢的瞬間润文,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工殿怜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留典蝌,地道東北人。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓头谜,卻偏偏與公主長得像骏掀,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容