1. 程式人生 > >用ELK打造視覺化集中式日誌

用ELK打造視覺化集中式日誌

Elk是Elastic search, Logstash和Kibana三者的簡稱。

Elastic search顧名思義是致力於搜尋,它是一個彈性搜尋的技術平臺,與其相似的有Solr,二者的對比可參考下面這篇文章:
Elastic search與Solr選型

總結一下就是,如果你不喜歡夜店咖還是喜歡忠實可靠的老婆,那選Elastic search準沒錯,何況他還有那麼一點美。目前運用ES的案例也不少了,比如it屌絲們都愛的Git hub以及我D痛恨的Wiki。

Logstash,也可以顧名思義一下,stash的意思是藏匿處,所以……其實並不完全準確,Logstash是用來做日誌採集,藏匿幾乎就不由他管了,藏匿由誰管呢,聰明的看官肯定能猜到是ES了。但是這也不完全準確,在ELK的運維環境中肯定是ES沒跑了,不過Logstash支援各種輸出源,包括redis,s3,mongodb以及kafka,甚至對於情懷粉(不嘛,人家就喜歡刺刀,不要槍炮,拼刀才爺們)吧,還貼心的支援http的遠端寫檔案方案。總之我們能想到的,作者也想到了,我們沒能想到的,作者也想到了,如果有作者沒能寫到的,那也沒關係,你可以自己寫外掛。什麼?你寫不出來?寫不出來就不要瞎bb,找個現成能用的。相對應的,ES也支援各種輸入源,從基本的stdin到file到redis到……

Kibana,呃,羔羊肉餅。估計作者是個洋鬼子北京情懷蜜吧,程式碼寫多了,看著掉了一地的頭髮,想著要是能吃份東來順的銅鍋涮羊肉多好,然後取了這鬼名字吧。Kibana主要是用於ES分析和查詢。Elk裡本來完全可以不用帶他的,用用ES的head和bigdesk外掛也蠻好,不過Kibana的管理和查詢用起來確實方便很多,人嘛,有槍炮用何必非要用刺刀,默默想到樓主的前東家。

elk
那個奶媽形態的德魯伊就是Logstash,agent只是Logstash承擔的一個角色,與此對應的是indexer。agent會分別將各自獲取的日誌作為輸入輸出到一個訊息代理(例如redis或者kafka),indexer會將訊息代理作為輸入再輸出到ES上,由ES做indexing。其實Logstash在整個過程中只負責輸入輸出,對Logstash而言並沒有agent和index之分。如果日誌量小的話完全不需要設定indexer,直接將ES作為agent的輸出源。

樓主的環境;
10.0.250.90 9200 9300
10.0.250.90 9201 9301
10.0.250.90 9200 9300
第一個埠是對外提供http服務的介面,第二個埠是叢集交換協議的埠。

cd /opt/elasticsearch-2.1.0/config
vim elasticsearch.yml

以10.0.250.90 9200 9300為例。
修改叢集名稱,ES預設通過廣播發現節點,所有在廣播裡宣告為同一個叢集名稱的節點都會被自動加入叢集中。

cluster.name: es

設定節點名稱

node.name
: es-node-2 ```` 此外可以通過node.master設定節點是否可以被推舉為leader以及node.data設定節點是否儲存索引資料。 節點的定製化屬性資訊,我把三個節點設成r1-r3 <div class="se-preview-section-delimiter"></div>

node.rack: r2

資料儲存目錄




<div class="se-preview-section-delimiter"></div>

path.data: /usr/local/data/

日誌目錄,預設生成的日誌檔案是${cluster.name}_xxx,可以通過logging.yml修改




<div class="se-preview-section-delimiter"></div>

path.logs: /var/log/es/

啟動時是否就鎖住記憶體,es是基於java,遵循java的記憶體回收,java記憶體分配一般會設定一個最小值(-Xms)和一個最大值(-Xmx),這樣雖然能在空閒時節約記憶體,但是卻會帶來頻繁的gc。所以es建議在啟動時就鎖定記憶體,並且es建議將主機一半可用記憶體分配給它。




<div class="se-preview-section-delimiter"></div>

bootstrap.mlockall: true

繫結網路地址,預設是127.0.0.1。可以通過transport.tcp.port設定項設定幾圈交換協議的埠。




<div class="se-preview-section-delimiter"></div>

network.host: 10.0.250.91
http.port: 9200

1. 設定初始化時的發現列表,新節點會通過單播的方式發現列表裡的節點。
2. 設定有master資格的節點最小個數,低於這個個數可能會發生腦裂。es建議的個數是所有節點數/2+1。
所謂腦裂是指叢集中有多個active的master節點,這樣就導致多個節點接管叢集服務。舉個例子:
假設A,B,C三個節點都有master資格,A節點為active,其他未standby,但是A節點出了故障,這時B,C就要進行投票選出新的leader,此時的結果就可能會是B和C都互有兩票,量個節點都分別active。
這裡只是描述腦裂成因,和ES的腦裂成因並不完全一樣,ES的投票機制應該是類似於redis先到先得的那種。不過配置上最好遵從es的建議。




<div class="se-preview-section-delimiter"></div>

discovery.zen.ping.unicast.hosts: [“10.0.250.90:9300”, “10.0.250.91:9300”]
discovery.zen.minimum_master_nodes: 2

配置完以後,啟動elastic




<div class="se-preview-section-delimiter"></div>
通過curl命令檢視下節點狀態以及整個叢集的節點狀態。

推薦安裝head外掛,可以檢視叢集狀態




<div class="se-preview-section-delimiter"></div>

bin/plugin install mobz/elasticsearch-head

bigdesk外掛在當前版本上無法使用,因為ES通過Rest介面返回的json資料不標準,jquery會出parse錯誤。

通過瀏覽器訪問http://10.0.250.91:9200/_plugin/head
![節點狀態](https://img-blog.csdn.net/20151226175252443)




<div class="se-preview-section-delimiter"></div>

## Kibana ##
Kibana的安裝也很簡單,下載最新版本並安裝。
我安裝在251主機上。




<div class="se-preview-section-delimiter"></div>

vim config/kibana.yml

設定Kibana埠





<div class="se-preview-section-delimiter"></div>

server.port: 5601


設定提供rest查詢服務的ES節點,設定了後Kibana就會通過這個節點查詢資訊了。




<div class="se-preview-section-delimiter"></div>
設定Kibana自用索引,主要用來儲存Kibana儲存的一些內容,例如查詢資訊,報表等




<div class="se-preview-section-delimiter"></div>

kibana.index: “.eslogs”

啟動Kibana




<div class="se-preview-section-delimiter"></div>

bin/kibana

訪問Kibana,第一次使用時會讓你建logstash的索引規則,預設為logstash-*,*代表日期,每天會生成一個新的索引。




<div class="se-preview-section-delimiter"></div>

## Logstash ##
Logstash的安裝非常簡單,下載最新版本並安裝,我用的是2.1.1.




<div class="se-preview-section-delimiter"></div>

bin/logstash -e ”

-e ''會預設以stdin作為輸入,以stdout作為輸出。
我在控制檯輸入11111,控制檯就輸出了格式化的輸出。




<div class="se-preview-section-delimiter"></div>

11111
{
“message” => “11111”,
“@version” => “1”,
“@timestamp” => “2015-12-26T10:00:23.422Z”,
“type” => “stdin”,
“host” => “0.0.0.0”
}

接著,我們再測試一下以ES作為輸出源,在ES根目錄下:




<div class="se-preview-section-delimiter"></div>

mkdir config
touch logstash-indexer.conf
vim logstash-indexer.conf

修改logstash-indexer.conf定義輸入源為stdin,輸出為stdout以及ES.




<div class="se-preview-section-delimiter"></div>

input {
stdin{
type=> “stdin-input”
}
}
output {
stdout { codec=> rubydebug }
elasticsearch {
hosts=> [“10.0.250.90:9200”]
codec=> “json”
}
}

啟動Logstash




<div class="se-preview-section-delimiter"></div>

bin/logstash -f config/logstash-indexer.conf -l /var/log/logstash/logstash.log
“`
輸入“hello this a test message”然後回車
logstash輸入
在Kibana那就能看到對應的日誌資訊
這裡寫圖片描述

相關推薦

ELK打造視覺中式日誌

Elk是Elastic search, Logstash和Kibana三者的簡稱。 Elastic search顧名思義是致力於搜尋,它是一個彈性搜尋的技術平臺,與其相似的有Solr,二者的對比可參考下面這篇文章: Elastic search與Solr選型

ELK + Filebeat +Nginx 中式日誌分析平臺(一)

文檔 bili cti put tin grok NPU puts term 一、環境準備 本次我們采用 yum 官方倉庫進行安裝,之前采用 rpm 包安裝的文檔大家請看 http://blog.51cto.com/wzlinux/2175836 。 1、軟件版本 File

GoAccess實現視覺並實時監控access日誌

1.ubuntu16.04安裝GoAccess GoAccess下載地址:https://goaccess.io/download 安裝步驟: $ wget https://tar.goaccess.io/goaccess-1.3.tar.gz $ tar -xzvf goaccess-1.3.

ELK+Filebeat 中式日誌解決方案詳解

ELK Stack 簡介 ELK 不是一款軟體,而是 Elasticsearch、Logstash 和 Kibana 三種軟體產品的首字母縮寫。這三者都是開源軟體,通常配合使用,而且又先後歸於 Elastic.co 公司名下,所以被簡稱為 ELK Stack

ELK+Filebeat中式日誌解決方案(centos7)

一.ELK Stack 概述 ELK是一組開源軟體的簡稱,其包括Elasticsearch、Logstash 和 Kibana。ELK最近幾年發展迅速,已經成為目前最流行的集中式日誌解決方案。 Elasticsearch: 能對大容量的資料進行接近

Ueditor為Asp.net mvc打造視覺HTML編輯器

在Asp.net WebForm時代,Web系統的HTML視覺化編輯器可以使用FTB一類的控制元件,直接引入工具箱拖拉即可實現。但是在Asp.net MVC時代,直接使用伺服器端控制元件是不符合MVC

使用開源工具ELK可視 Azure NSG日誌

2.3 ecif loopback manage setting entos ger 時間段 ali 國內的Azure最近上線了網絡觀察程序服務,可以幫助用戶監控和分析VNET虛擬網絡。其中一個很重要的功能就是可以記錄NSG的安全訪問日誌了。但是如果用戶設置了NSG流日

中式日誌分析平臺 Elastic Stack(介紹)

喜歡 存儲 轉換成 redis 版本 個數 將他 報表 ash 一、ELK 介紹 ELK 構建在開源基礎之上,讓您能夠安全可靠地獲取任何來源、任何格式的數據,並且能夠實時地對數據進行搜索、分析和可視化。 最近查看 ELK 官方網站,發現新一代的日誌采集器 Filebeat,

中式日誌分析平臺 Elastic Stack(部署)

usr sts 組件 stat emp clust table java watermark 一、環境準備 1、架構選型 接下來我們進行初步的探視,利用測試環境體驗下ELK Stack + Filebeat,測試環境我們就不進行 Kafka 的配置了,因為他的存在意義在於提

理解OpenShift(6):中式日誌處理

  理解OpenShift(1):網路之 Router 和 Route 理解OpenShift(2):網路之 DNS(域名服務) 理解OpenShift(3):網路之 SDN 理解OpenShift(4):使用者及許可權管理 理解OpenShift(5):從 Docker Volume 到

Python資料分析:手把手教你Pandas生成視覺圖表

大家都知道,Matplotlib 是眾多 Python 視覺化包的鼻祖,也是Python最常用的標準視覺化庫,其功能非常強大,同時也非常複雜,想要搞明白並非易事。但自從Python進入3.0時代以後,pandas的使用變得更加普及,它的身影經常見於市場分析、爬蟲、金融分析以及

05 xml檔案視覺設計窗口布局

前面一直用程式碼來設計視窗的佈局,每次修改後,只有程式執行時才可看到設計的結果,而且當視窗的控制元件較多時,寫程式碼的方式較為麻煩了。 所以Android裡還提供了用xml檔案,用視覺化的方式來設計窗口布局. 首先還是先用嚮導建立一個”Add No Act

Eclipse進行視覺Java介面設計

下載後的VE是一個zip檔案,請將其壓縮包中plugins和features目錄下的內容解壓到eclipse安裝目錄的相應目錄中即可。如果你的eclipse是執行著的,請關閉並重新啟動eclipse。開始一個設計任務現在,所有程式安裝完成,筆者將用一個例子,來講解Visual Editor的使用。在這個例子中

免費、好的SQL視覺工具HeidiSQL

在這裡給大家介紹一款好用的、免費的SQL視覺化工具,它叫做HeidiSQL,當你使用它以後,會對它愛不釋手。 首先看一下的下載地址: https://www.heidisql.com/ Hei

Filebeat,Redis和ELK6.x中式日誌解決方案

簡介  ELK 不是一款軟體,而是 Elasticsearch、Logstash 和 Kibana 三種軟體產品的首字母縮寫。這三者都是開源軟體,通常配合使用,而且又先後歸於 Elastic.co

基於視覺配置的日誌結構轉換實現

導讀:資料匯流排DBus的總體架構中主要包括六大模組,分別是:日誌抓取模組、增量轉換模組、全量抽取程式、日誌運算元處理模組、心跳監控模組、Web管理模組。六大模組各自的功能相互連線,構成DBus的工作原理:通過讀取RDBMS增量日誌的方式來實時獲取增量資料日誌(支援全量拉取);基於Logstash,flume

基於ELK 的 Apache 日誌視覺分析

Apache日誌視覺化分析 專案地址:https://github.com/whirlys/Elastic-In-Practice/tree/master/apache_log_demo 在網站的運營過程中,網站訪問者的各種資訊對於網站運營者來說,是非常有價值的資訊

線上日誌集中視覺管理:ELK

本文來自網易雲社群作者:王貝為什麼推薦ELK:當線上伺服器出了問題,我們要做的最重要的事情是什麼?當需要實時監控跟蹤伺服器的健康情況,我們又要拿什麼去分析?大家一定會說,去看日誌,去分析日誌。是的,日誌對於伺服器開發人員來講是最親密的夥伴了,基本上每天都會去看各種型別的海量的

利用 ELK系統分析Nginx日誌並對資料進行視覺展示

一、寫在前面   結合之前寫的一篇文章:Centos7 之安裝Logstash ELK stack 日誌管理系統,上篇文章主要講了監控軟體的作用以及部署方法。而這篇文章介紹的是單獨監控nginx 日誌分析再進行視覺化圖形展示,並在使用者前端使用nginx 來代理kibana

海量視覺日誌分析平臺之ELK搭建

ELK是什麼? E=ElasticSearch ,一款基於的Lucene的分散式搜尋引擎,我們熟悉的github,就是由ElastiSearch提供的搜尋,據傳已經有10TB+的資料量。 L=LogStash , 一款分散式日誌收集系統,支援多輸入源,並內建一些過濾操作,支