天天看點

【最佳實踐】 輕量化資料采集器Beats入門教程

輕量化資料采集器Beats入門教程,幫助 Elasticsearch 初學者全面了解什麼是 Beats、如何快速部署 Beats。

本文作者:劉曉國-Elastic社群布道師

Elasticsearch

Elasticsearch是一個分布式的開源搜尋和分析引擎,适用于所有類型的資料,包括文本,數字,地理空間,結構化和非結構化。Elasticsearch 基于Apache Lucene 建構,并于2010年由 Elasticsearch N.V.(現稱為Elastic)首次釋出。

Elasticsearch 以其簡單的 REST API,分布式性質,速度和易擴充性而聞名。Elasticsearch 的搜尋體驗的基本原則是規模(scale),速度(speed),相關性(relevance)。 總之,這三個屬性是 Elastic 與其他産品的差別。 這些屬性貫穿我們能看到的任何一個商業的示例,并且如果剝離這些層,則通常是它們使用 Elastic 的真正原因。

【最佳實踐】 輕量化資料采集器Beats入門教程

Scale:可擴充性是指攝取和處理 PB 級資料的能力。Elasticsearch 叢集是分布式的,是以它很容根據商業的需求來擴容。如果需要存儲更多的資料,我們很容添加更多的伺服器來進行滿足商業的需求。

【最佳實踐】 輕量化資料采集器Beats入門教程

Speed:快速獲得搜尋結果的能力, 即使在大規模的情況下。 在中國有一種說法:天下武功唯快不破。Elasticsearch可以在PB級資料情況下,也能獲得毫秒級的搜尋。即使是新資料導入到Elasticsearch中,也可以在1秒内變為可以搜尋,進而實作近實時的搜尋。對于有的資料庫來說,搜尋可能是需要數小時才能完成。

Relevance: 關聯性是一種能夠以任意方式查詢資料并獲得相關結果的能力,而不論是檢視文本,數字還是地理資料。Elasticsearch可以根據資料的比對度來傳回資料。每個搜尋的結果有一個分數,它表示比對的相關度。在傳回的資料結果中,比對度最大的結果排在傳回的結果的前面。

Elastic Stack

【最佳實踐】 輕量化資料采集器Beats入門教程

“ELK”是三個開源項目的縮寫:Elasticsearch,Logstash 和 Kibana。 Elasticsearch 是搜尋和分析引擎。Elasticsearch是整個Elastic Stack的核心元件。 Logstash是一個伺服器端資料處理管道,它同時從多個源中提取資料,進行轉換,然後将其發送到類似Elasticsearch的“存儲”中。Beats是一些輕量級的資料攝入器的組合,用于将資料發送到Elasticsearch或發向Logstash做進一步的處理,并最後導入到Elasticsearch。 Kibana允許使用者在Elasticsearch中使用圖表将資料可視化。

Elastic 方案

【最佳實踐】 輕量化資料采集器Beats入門教程

Elastic 公司圍繞Elastic Stack建立了許多的開箱即用的方案。對于很多搜尋或資料庫的公司來說,他們可能有很好的産品,但是運用它們開發一套實作某種方案來說,也是需要很多的精力來組合不同公司的産品來完成這些方案。圍繞Elastic Stack,Elastic公司推出了3+1:

我們可以看到 Elastic 的三大解決方案

• 企業搜尋

• 可觀測性

• 安全

而三大解決方案基于同一個 Elastic (ELK) Stack:Elasticsearch 和 Kibana。

Beats 是什麼?

在集中式日志記錄中,資料管道包括三個主要階段:聚合,處理和存儲。 在ELK堆棧中,傳統上,前兩個階段是堆棧工作量Logstash的職責。執行這些任務需要付出一定的代價。 由于與Logstash的設計有關的内在問題,性能問題變得經常發生,尤其是在複雜的管道需要大量處理的情況下。将Logstash的部分職責外包的想法也應運而生,尤其是将資料提取任務轉移到其他工具上。 正如我在本文中所描述的,這個想法首先在Lumberjack中展現出來,然後在Logstash轉發器中展現出來。 最終,在随後的幾個開發周期中,引入了新的改進協定,該協定成為現在所謂的“ Beats”家族的骨幹。

Beats是輕量級(資源高效,無依賴性,小型)和開放源代碼日志發送程式的集合,這些日志發送程式充當安裝在基礎結構中不同伺服器上的代理,用于收集日志或名額(metrics)。這些可以是日志檔案(Filebeat),網絡資料(Packetbeat),伺服器名額(Metricbeat)或Elastic和社群開發的越來越多的Beats可以收集的任何其他類型的資料。 收集後,資料将直接發送到Elasticsearch或Logstash中進行其他處理。Beats建立在名為libbeat的Go架構之上,該架構用于資料轉發,這意味着社群一直在開發和貢獻新的Beats

Elastic Beats

【最佳實踐】 輕量化資料采集器Beats入門教程

Filebeat

顧名思義,Filebeat用于收集和傳送日志檔案,它也是最常用的Beat。 Filebeat如此高效的事實之一就是它處理背壓的方式-是以,如果Logstash繁忙,Filebeat會減慢其讀取速率,并在減速結束後加快節奏。

Filebeat幾乎可以安裝在任何作業系統上,包括作為Docker容器安裝,還随附用于特定平台(例如Apache,MySQL,Docker等)的内部子產品,其中包含這些平台的預設配置和Kibana對象。

在我之前的幾篇文章中,我已經給出來好幾個例子關于如何使用Filebeat。

• Beats:通過Filebeat把日志傳入到 Elasticsearch

• Logstash:把Apache日志導入到 Elasticsearch

Packetbeat

網絡資料包分析器Packetbeat是第一個引入的beat。 Packetbeat捕獲伺服器之間的網絡流量,是以可用于應用程式和性能監視。

Packetbeat可以安裝在受監視的伺服器上,也可以安裝在其專用伺服器上。 Packetbeat跟蹤網絡流量,解碼協定并記錄每筆交易的資料。 Packetbeat支援的協定包括:DNS,HTTP,ICMP,Redis,MySQL,MongoDB,Cassandra等。

Metribeat

Metricbeat是一種非常受歡迎的beat,它收集并報告各種系統和平台的各種系統級度量。 Metricbeat還支援用于從特定平台收集統計資訊的内部子產品。您可以使用這些子產品和稱為名額集的metricsets來配置Metricbeat收集名額的頻率以及要收集哪些特定名額。

Heartbeat

Heartbeat是用于“uptime monitoring”的。本質上,Heartbeat是探測服務以檢查它們是否可通路的功能,例如,它可以用來驗證服務的正常運作時間是否符合您的SLA。 您要做的就是為Heartbeat提供URL和正常運作時間名額的清單,以直接發送到Elasticsearch或Logstash以便在建立索引之前發送到您的堆棧。

Auditbeat

Auditbeat可用于稽核Linux伺服器上的使用者和程序活動。 與其他傳統的系統稽核工具(systemd,auditd)類似,Auditbeat可用于識别安全漏洞-檔案更改,配置更改,惡意行為等。

Winlogbeat

Winlogbeat僅會引起Windows系統管理者或工程師的興趣,因為它是專門為收集Windows事件日志而設計的Beat。 它可用于分析安全事件,已安裝的更新等。

Functionbeat

Functionbeat被定義為“serverless”的發件人,可以将其部署為收集資料并将其發送到ELK堆棧的功能。 Functionbeat專為監視雲環境而設計,目前已針對Amazon設定量身定制,可以部署為Amazon Lambda函數,以從Amazon CloudWatch,Kinesis和SQS收集資料。

【最佳實踐】 輕量化資料采集器Beats入門教程

Beats 在 Elastic 堆棧中是如何融入的

到目前為止,有如下的3中方式能夠把我們所感興趣的資料導入到Elasticsearch中:

【最佳實踐】 輕量化資料采集器Beats入門教程

正如上面所顯示的那樣,我們可以通過:

1、Beats:我們可以通過beats把資料導入到Elasticsearch中

2、Logstash:我們可以Logstash把資料導入。Logstash的資料來源也可以是Beats

3、REST API:我們可以通過Elastic所提供的豐富的API來把資料導入到Elasticsearch中。我們可以通過Java, Python, Go, Nodejs等各種Elasticsearch API來完成我們的資料導入。

那麼針對Beats來說,Beats是如何和其它的Elastic Stack一起工作的呢?我們可以看如下的框圖:

【最佳實踐】 輕量化資料采集器Beats入門教程

從上面我們可以看出來,Beats的資料可以有如下的三種方式導入到Elasticsearch中:

• Beats ==> Elasticsearch

• Beats ==> Logstash ==> Elasticsearch

• Beats ==> Kafka ==> Logstash ==> Elasticsearch

正如上面所顯示的那樣:

• 我們可以直接把Beats的資料傳入到Elasticsearch中,甚至在現在的很多情況中,這也是一種比較受歡迎的一種方案。它甚至可以結合Elasticsearch所提供的pipeline一起完成更為強大的組合。

• 我們可以利用Logstash所提供的強大的filter組合對資料流進行處理:解析,豐富,轉換,删除,添加等等。你可以參閱我之前的文章“Data轉換,分析,提取,豐富及核心操作”

• 針對有些情況,如果我們的資料流具有不确定性,比如可能在某個時刻生産大量的資料,進而導緻Logstash不能及時處理,我們可以通過Kafka來做一個緩存。你可以參考我的文章“使用Kafka部署Elastic Stack”。

攝入通道(ingest pipeline)

我們知道在Elasticsearch的節點中,有一類節點是

ingest node

。ingest pipeline運作于ingest node之上。它提供了在對文檔建立索引之前對其進行預處理的功能

• 解析,轉換并豐富資料

• 管道允許您配置将要使用的處理器

【最佳實踐】 輕量化資料采集器Beats入門教程

在上面的圖中,我們可以看出來,我們可以使用在Elasticsearch叢集裡的ingest node來運作我們所定義的processors。這些processors定義于Elastic的官方文檔

Processors

Libeat - 建立Beats的Go架構

Libbeat是一個用于資料轉發的庫。Beats建構在名為libbeat的Go架構之上。 它是一個開源的軟體。我們可以在位址

https://github.com/elastic/beats/tree/master/libbeat

找到它的源碼。它可以輕松為您想要發送到Elasticsearch的任何類型的資料建立自定義Beat。

如果你想建構自己的Beat的話,你可以參閱如下的文章:

• Build your own Beat

• Generate your beat

你也可以參閱我之前建立的文章“如何建立一個定制的Elastic Beat”。

對于一個beat來說,它可以分為如下的兩個部分:資料收集器,資料處理器及釋出器。後面的這個部分由libbeat來提供。

【最佳實踐】 輕量化資料采集器Beats入門教程

上面的processor可以由Define processors來了解。下面是其中的一些processor的例子:

- add_cloud_metadata
- add_locale
- decode_json_fields
- add_fields
- drop_event
- drop_fields
- include_fields
- add_kubernetes_metadata
- add_docker_metadata
           

啟動Filebeat及Metricbeat

Filebeat 總覽

Filebeat是用于轉發和集中日志資料的輕量級傳送程式。 作為伺服器上的代理安裝,Filebeat監視您指定的日志檔案或位置,收集日志事件,并将它們轉發到Elasticsearch或Logstash以進行索引

Filebeat具有如下的一些特性:

• 正确處理日志旋轉:針對每隔一個時間段生産一個新的日志的案例,Filebeat可以幫我們正确地處理新生産的日志,并重新啟動對新生成日志的處理

• 背壓敏感:如果日志生成的速度過快,進而導緻Filebeat生産的速度超過Elasticsearch處理的速度,那麼Filebeat可以自動調節處理的速度,以達到Elasticsearch可以處理的範圍内

• “至少一次”保證:每個日志生成的事件至少被處理一次

• 結構化日志:可以處理結構化的日志資料資料

• 多行事件:如果一個日志有多行資訊,也可以被正确處理,比如錯誤資訊往往是多行資料

• 條件過濾:可以有條件地過濾一些事件

Filebeat的工作方式如下:啟動Filebeat時,它将啟動一個或多個輸入,這些輸入将在為日志資料指定的位置中查找。 對于Filebeat所找到的每個日志,Filebeat都會啟動收集器。 每個收割機都讀取一個日志以擷取新内容,并将新日志資料發送到libbeat,libbeat會彙總事件,并将彙總的資料發送到為Filebeat配置的輸出。

【最佳實踐】 輕量化資料采集器Beats入門教程

從上面有可以看出來在spooler裡有一些緩存,這個可以用于重新發送以確定至少一次的事件消費,同時也可以用于背壓敏感。一旦Filebeat生成的事件的速度超過Elasticsearch能夠處理的極限,這個緩存可以用于存儲一些事件。

Metricbeat 總覽

Metricbeat是一種輕量級的托運人,您可以将其安裝在伺服器上,以定期從作業系統和伺服器上運作的服務收集名額。 Metricbeat會收集它收集的度量标準和統計資訊,并将其運送到您指定的輸出,例如Elasticsearch或Logstash。

Metricbeat通過從伺服器上運作的系統和服務收集名額來幫助您監視伺服器,例如:

• Apache

• HAProxy

• MongoDB

• MySQL

• Nginx

• PostgreSQL

• Redis

• System

• Zookeeper

Metricbeat具有一些特性:

• 輪詢服務的API以收集名額

• 有效地将名額存儲在Elasticsearch中

• 通過JMX / Jolokia,Prometheus,Dropwizard,Graphite的應用程式名額

• 自動貼标:表明是從AWS, Docker, Kubernetes, GoogleCloud 或Azure采集的

Metricbeat由子產品和名額集組成。 Metricbeat子產品定義了從特定服務(例如Redis,MySQL等)收集資料的基本邏輯。 該子產品指定有關服務的詳細資訊,包括如何連接配接,收集度量的頻率以及收集哪些度量。

每個子產品都有一個或多個名額集。 度量集是子產品的一部分,用于擷取和建構資料。 度量标準集不是将每個度量标準收集為單獨的事件,而是在對遠端系統的單個請求中檢索多個相關度量标準的清單。 是以,例如,Redis子產品提供了一個資訊量度集,該資訊量度集通過運作INFO指令并解析傳回的結果來從Redis收集資訊和統計資訊。

【最佳實踐】 輕量化資料采集器Beats入門教程

同樣,MySQL子產品提供了一個狀态名額集,該名額集通過運作SHOW GLOBAL STATUS SQL查詢從MySQL收集資料。 通過在遠端伺服器傳回的單個請求中将相關度量标準集組合在一起,度量标準集使您更輕松。 如果沒有使用者啟用的度量标準集,則大多數子產品都具有預設度量标準集。

Metricbeat通過根據您在配置子產品時指定的周期值定期詢問主機系統來檢索名額。 由于多個度量标準集可以将請求發送到同一服務,是以Metricbeat盡可能重用連接配接。 如果Metricbeat在逾時配置設定指定的時間内無法連接配接到主機系統,它将傳回錯誤。 Metricbeat異步發送事件,這意味着未确認事件檢索。 如果配置的輸出不可用,則事件可能會丢失。

什麼是Filebeat和Merticbeat子產品

一個Filebeat子產品通常由如下的部分組成:

【最佳實踐】 輕量化資料采集器Beats入門教程

Filebeat子產品簡化了常見日志格式的收集,解析和可視化。

• 一個典型的子產品(例如,對于Nginx日志)由一個或多個檔案集(對于Nginx,通路和錯誤)組成。 檔案集包含以下内容:

• Filebeat輸入配置,其中包含在其中查找日志檔案的預設路徑。 這些預設路徑取決于作業系統。 Filebeat配置還負責在需要時将多行事件縫合在一起。

• Elasticsearch Ingest Node管道定義,用于解析日志行。

• 字段定義,用于為每個字段配置具有正确類型的Elasticsearch。 它們還包含每個字段的簡短說明。

• 示例Kibana儀表闆(如果有)可用于可視化日志檔案。

Filebeat會根據您的環境自動調整這些配置,并将它們加載到相應的Elastic stack元件中。

針對其它的Beats子產品來說,基本和Filebeat一樣。目前針對Elasticsearch所提供的子產品來說,有非常多的子產品可以供使用:

【最佳實踐】 輕量化資料采集器Beats入門教程

本文經由 CSDN-Elastic 中國社群官方部落格授權釋出

原文标題:Beats:Beats 入門教程 (一)

原文連結:

https://elasticstack.blog.csdn.net/article/details/104432643

如果你想體驗阿裡雲一站式全托管Beats服務

阿裡雲全托管Beats采集中心:實作對File、Metric、Heart的采集用戶端批量下發管理

↓↓↓↓↓

點選免費開通阿裡雲 Logstash,體驗全托管Beats服務 如何管理阿裡雲 Beats
【最佳實踐】 輕量化資料采集器Beats入門教程

阿裡雲Elastic Stack

】100%相容開源ES,獨有9大能力

相關活動

更多折扣活動,請

通路阿裡雲 Elasticsearch 官網 阿裡雲 Elasticsearch 商業通用版,1核2G首月免費 阿裡雲 Logstash 2核4G首月免費
【最佳實踐】 輕量化資料采集器Beats入門教程
【最佳實踐】 輕量化資料采集器Beats入門教程