簡介:
本文全面介紹了Elastic Beats、Logstash、語言用戶端以及Kibana開發者工具的特性及資料采集到阿裡雲Elasticsearch(簡稱ES)服務中的解決方案。幫助您全面了解原理并選擇符合自身業務特色的資料采集方案。
本文字數:2763
閱讀時間:預計10分鐘
以下是正文
背景資訊
對于資料搜尋和分析來說,Elasticsearch無處不在。開發人員和社群可使用Elasticsearch尋找各種各樣的用例,從
應用程式搜尋和
網站搜尋,到日志、
基礎架構監測、
APM和
安全分析,不一而足。雖然現在有針對這些用例的免費解決方案,但是開發人員首先需要将其資料提供給Elasticsearch。
本文提供了以下幾種常見的将資料采集到阿裡雲ES中的方法。
- Elastic Beats
- Logstash
- 語言用戶端
- Kibana開發工具
Elasticsearch提供了靈活的RESTful API,用于與用戶端應用程式通信。是以,REST調用被用來采集資料、執行搜尋和資料分析,以及管理叢集及其索引。實際上,上述所有方法都依賴于REST API将資料采集到Elasticsearch。
Elastic Beats是一組輕量型的資料采集器,可以友善地将資料發送給Elasticsearch服務。由于是輕量型的,Beats不會産生太多的運作時開銷,是以,可以在硬體資源有限的裝置(如 IoT 裝置、邊緣裝置或嵌入式裝置)上運作和收集資料。如果您需要收集資料,但沒有資源來運作資源密集型資料收集器,那麼Beats會是您最佳的選擇。這種無處不在(涵蓋所有聯網裝置)的資料收集方式,讓您能夠快速檢測到異常情況做出反應,例如系統範圍内的問題和安全事件等。
當然,Beats并不局限于資源有限的系統,它們還可用于具有更多可用硬體資源的系統。
Beats有多種風格,可以收集不同類型的資料:
- Filebeat 支援您從以檔案形式提供的源中讀取、預處理和傳輸資料。雖然大多數使用者使用Filebeat來讀取日志檔案,但它也支援非二進制檔案格式。Filebeat還支援多種其他資料源,包括TCP/UDP、容器、Redis和Syslog。借助豐富的 子產品 ,可以輕松針對Apache、MySQL和Kafka等常見應用程式的日志格式,進行收集,并解析相應的資料。
- Metricbeat 可以收集并預處理系統和服務名額。系統名額包括關于運作中程序的相關資訊,以及CPU/記憶體/磁盤/網絡使用率方面的資料。這些 可用于收集來自許多不同服務的資料,包括Kafka、Palo Alto Networks、Redis等。
- Packetbeat 可收集并預處理實時網絡資料,進而支援應用程式監測、安全和網絡性能分析。此外,Packetbeat還支援DHCP、DNS、HTTP、MongoDB、NFS和TLS協定。
- Winlogbeat 可從Windows作業系統捕獲事件日志,包括應用程式事件、硬體事件,以及安全和系統事件。
- Auditbeat 可以檢測對關鍵檔案的更改,并從Linux的審計架構收集事件。不同的 簡化了它的部署,這主要在安全分析用例中使用。
- Heartbeat 使用探測來監測系統和服務的可用性。是以,Heartbeat在許多場景中都很有用,例如基礎架構監測和安全分析。ICMP、TCP和HTTP都是受支援的協定。
- Functionbeat 可以從無伺服器環境(如 AWS Lambda)中收集日志和名額。
您可以參考
阿裡雲Elasticsearch通過Beats搭建可視化運維系統,學習Beats的使用方法。其他Beats的使用方法與此類似。
Logstash是一個強大而靈活的工具,可以讀取、處理和傳送任何類型的資料。Logstash提供了許多功能,這些功能目前還不可用,或者通過Beats執行成本太高,例如通過對外部資料源執行查找來豐富文檔。不管采用哪種方式,Logstash的這種功能和靈活性都是有代價的。此外,Logstash的硬體要求也顯著高于Beats。嚴格來說,Logstash通常不應部署在低資源裝置上。是以,在Beats功能不足以滿足特定用例要求的情況下,可将Logstash用作其替代選擇。
一種常見的架構模式是将Beats和Logstash組合起來:使用Beats來收集資料,并使用Logstash來執行Beats無法執行的資料處理任務。
Logstash概述
阿裡雲Elasticsearch提供了Logstash服務。阿裡雲Logstash Service作為伺服器端的資料處理管道,提供了100%相容開源的Logstash功能,能夠動态地從多個來源采集資料、轉換資料,并且将資料存儲到所選擇的位置。通過輸入、過濾和輸出插件,Logstash可以對任何類型的事件加工和轉換。
Logstash通過事件處理管道來執行任務,其中每個管道至少包含以下各項中的一個:
- 輸入 從資料源讀取資料。官方支援多種資料源,包括檔案、http、imap、jdbc、kafka、syslog、tcp和udp。
- 過濾器 以多種方式處理和豐富資料。在許多情況下,首先需要将非結構化的日志行解析為更加結構化的格式。是以,除其他功能外,Logstash還在正規表達式的基礎上,提供了解析CSV、JSON、鍵/值對、分隔的非結構化資料,以及複雜的非結構化資料的過濾器( grok 過濾器 )。Logstash還提供了更多的過濾器,通過執行 DNS查找 ,添加 關于IP位址的地理資訊 ,或通過對 自定義目錄 或 Elasticsearch 索引執行查找來豐富資料。通過這些附加的過濾器,能夠對資料進行各種轉換,例如重命名、删除、複制資料字段和值( mutate 過濾器 )。
- 輸出 将解析後并加以豐富的資料寫入資料接收器,是Logstash處理管道的最後階段。雖然有很多輸出插件可用,但本文主要讨論如何使用 Elasticsearch輸出 ,将資料采集到Elasticsearch服務中。
Logstash示例管道
以下提供了一個示例Logstash管道,該管道能夠:
- 讀取Elastic部落格RSS源。
- 通過複制/重命名字段、删除特殊字元以及HTML标記,來執行一些簡單的資料預處理。
- 将文檔采集到Elaticsearch。
1.參考
通過Kibana配置Pipeline,按照以下示例配置阿裡雲Logstash管道。
input {
rss {
url => "/blog/feed"
interval => 120
}
}
filter {
mutate {
rename => [ "message", "blog_html" ]
copy => { "blog_html" => "blog_text" }
copy => { "published" => "@timestamp" }
}
mutate {
gsub => [
"blog_text", "<.*?>", "",
"blog_text", "[\n\t]", " "
]
remove_field => [ "published", "author" ]
}
}
output {
stdout {
codec => dots
}
elasticsearch {
hosts => [ "https://<your-elsaticsearch-url>" ]
index => "elastic_blog"
user => "elastic"
password => "<your-elasticsearch-password>"
}
}
hosts需要替換為
<對應阿裡雲Elasticsearch執行個體的内網位址>:9200;
;password需要替換為對應阿裡雲Elasticsearch的通路密碼。
- 将Logstash與阿裡雲Elasticsearch相關聯。詳細操作方法請參見 管道管理配置 。
- 在Kibana控制台中,檢視索引資料。
POST elastic_blog/_search
- 詳細操作方法請參見 執行任務并檢視結果
在某些情況下,最好将資料采集與自定義應用程式代碼內建。為此,建議您使用一個
官方支援的Elasticsearch用戶端。這些用戶端是抽象出資料采集低層細節的庫,使您能夠專注于特定應用程式的實際工作。Java、JavaScript、Go、.NET、PHP、Perl、Python和Ruby都有官方用戶端。有關您所選語言的所有詳細資訊和代碼示例,請參見相關文檔即可。如果您的應用程式不是用上面所列語言編寫的,則可以在
社群貢獻的用戶端中查找相關文檔。
推薦您使用
Kibana開發控制台,開發并調試Elasticsearch請求。Kibana開發工具公開了通用的Elasticsearch REST API的全部功能和靈活性,同時抽象出了底層HTTP請求的技術細節。您可以使用Kibana開發工具,将原始JSON文檔添加到Elasticsearch中。
PUT my_first_index/_doc/1
{
"title" :"How to Ingest Into Elasticsearch Service",
"date" :"2019-08-15T14:12:12",
"description" :"This is an overview article about the various ways to ingest into Elasticsearch Service"
}
說明 除了Kibana開發工具以外,您也可以使用其他工具,通過Elasticsearch提供的通用REST接口,與Elasticsearch通信并采集文檔。例如
curl是一款經常作為最後手段使用的工具,用于開發、調試或與自定義腳本內建。
總結
将資料采集到Elasticsearch服務的方法不勝枚舉。您需要根據特定用例、需求和環境,選擇合适的方法或工具來采集資料。
- Beats提供了一種友善、輕量級的開箱即用型解決方案,可以從許多不同的來源收集和采集資料。與Beats封裝在一起的子產品為許多常見資料庫、作業系統、容器環境、Web伺服器、緩存等,提供了資料擷取、解析、索引和可視化的配置。這些子產品可提供五分鐘實作資料到儀表闆的體驗。因為Beats是輕量型的,是以非常适合資源受限的嵌入式裝置,例如IoT裝置或防火牆。
- Logstash是一種靈活的工具,可用于讀取、轉換和采集資料,提供了大量的過濾器、輸入和輸出插件。如果Beats的功能對于某些用例來說還不夠,那麼一種常見的架構模式是使用Beats來收集資料,并通過Logstash做進一步處理,然後再采集到Elasticsearch中。
- 當您需要直接從應用程式采集資料時,建議使用官方支援的用戶端庫。
- 當您需要對Elasticsearch請求進行開發或調試時,建議您使用Kibana開發工具。
加入我們
加入《Elasticsearch中文技術社群》,與更多開發者探讨交流

訂閱《阿裡雲Elasticsearch技術交流期刊》每月定期為大家推送相關幹貨
2019年阿裡雲雲栖大會上,Elasticsearch背後的商業公司Elastic與阿裡雲Elasticsearch确定戰略合作更新,在100%相容開源的基礎上,完成了ELK的完整生态雲上閉環,歡迎開通使用。
點選了解更多産品資訊