需要學習的地方:概念,用法,模塊使用
Elastic Beats介紹
Elastic Stack傳統上由三個主要組件(Elasticsearch,Logstash和Kibana)組成,早已脫離了這種組合,現在也可以與名為“ Beats”的第四個元素結合使用--一個針對不同用例的日志運送者系列。 現在網上有一種說法叫做ELKB,這里的B就是指的beats.
在集中式日志記錄中,數據管道包括三個主要階段:聚合,處理和存儲。 在ELK堆棧中,傳統上,前兩個階段是堆棧工作量Logstash的職責。執行這些任務需要付出一定的代價。 由於與Logstash的設計有關的內在問題,性能問題變得經常發生,尤其是在復雜的管道需要大量處理的情況下。將Logstash的部分職責外包的想法也應運而生,尤其是將數據提取任務轉移到其他工具上。
Beats到底是什么呢
Beats是輕量級(資源高效,無依賴性,小型)和開放源代碼日志發送程序的集合,這些日志發送程序充當安裝在基礎結構中不同服務器上的代理,用於收集日志或指標(metrics)。這些可以是日志文件(Filebeat),網絡數據(Packetbeat),服務器指標(Metricbeat)或Elastic和社區開發的越來越多的Beats可以收集的任何其他類型的數據。 收集后,數據將直接發送到Elasticsearch或Logstash中進行其他處理。Beats建立在名為libbeat的Go框架之上,該框架用於數據轉發,這意味着社區一直在開發和貢獻新的Beats。
Filebeat
顧名思義,Filebeat用於收集和傳送日志文件,它也是最常用的Beat。 Filebeat如此高效的事實之一就是它處理背壓的方式-因此,如果Logstash繁忙,Filebeat會減慢其讀取速率,並在減速結束后加快節奏。
Filebeat幾乎可以安裝在任何操作系統上,包括作為Docker容器安裝,還隨附用於特定平台(例如Apache,MySQL,Docker等)的內部模塊,其中包含這些平台的默認配置和Kibana對象。
Packetbeat
網絡數據包分析器Packetbeat是第一個引入的beat。 Packetbeat捕獲服務器之間的網絡流量,因此可用於應用程序和性能監視。
Packetbeat可以安裝在受監視的服務器上,也可以安裝在其專用服務器上。 Packetbeat跟蹤網絡流量,解碼協議並記錄每筆交易的數據。 Packetbeat支持的協議包括:DNS,HTTP,ICMP,Redis,MySQL,MongoDB,Cassandra等。
Metricbeat
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事件日志而設計的節拍。 它可用於分析安全事件,已安裝的更新等。
Functionbeat
Functionbeat被定義為“serverless”的發件人,可以將其部署為收集數據並將其發送到ELK堆棧的功能。 Functionbeat專為監視雲環境而設計,目前已針對Amazon設置量身定制,可以部署為Amazon Lambda函數,以從Amazon CloudWatch,Kinesis和SQS收集數據。
如何使用beats
現在我們來用metricbeat展示如何使用beats。其他的可以仿照這個方法來做。
安裝metricbeat
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.3.2-linux-x86_64.tar.gz
tar xzvf metricbeat-7.3.2-linux-x86_64.tar.gz
Metricbeat 配置文件
等我們安裝完Metricbeat后,我們可以在安裝目錄的根目錄下看到如下的所有文件:
$ ls -F
LICENSE.txt metricbeat*
NOTICE.txt metricbeat.reference.yml
README.md metricbeat.yml
data/ metricbeat.yml.org
fields.yml module/
kibana/ modules.d/
logs/
在這個目錄下,我們可以看到有兩個文件配置文件:
metricbeat.yml:這是一個默認的配置文件
metricbeat.reference.yml:這是一個完整的樣本配置文件
只使用第一個配置文件。
配置Metricbeat時,需要指定要運行的模塊。 Metricbeat使用模塊來收集指標。 每個模塊都定義了從特定服務(例如Redis或MySQL)收集數據的基本邏輯。 一個模塊由獲取和構造數據的metricsets組成。比如針對Redis模塊,在這個模塊中使用了Info Metricset及Keyspace Metricset。它們會共用一個和host相連接的通道。
- 啟用要運行的模塊
如果您接受默認配置而不啟用其他模塊,則Metricbeat僅收集System指標。
# 路徑:metricbeat-7.3.2-darwin-x86_64/modules.d
# ls -a
. kibana-xpack.yml.disabled
.. kibana.yml.disabled
aerospike.yml.disabled kubernetes.yml.disabled
apache.yml.disabled kvm.yml.disabled
aws.yml.disabled logstash-xpack.yml.disabled
beat-xpack.yml.disabled logstash.yml.disabled
beat.yml.disabled memcached.yml.disabled
ceph.yml.disabled mongodb.yml.disabled
cockroachdb.yml.disabled mssql.yml.disabled
consul.yml.disabled munin.yml.disabled
coredns.yml.disabled mysql.yml.disabled
couchbase.yml.disabled nats.yml.disabled
couchdb.yml.disabled nginx.yml.disabled
docker.yml.disabled oracle.yml.disabled
dropwizard.yml.disabled php_fpm.yml.disabled
elasticsearch-xpack.yml.disabled postgresql.yml.disabled
elasticsearch.yml.disabled prometheus.yml.disabled
envoyproxy.yml.disabled rabbitmq.yml.disabled
etcd.yml.disabled redis.yml.disabled
golang.yml.disabled system.yml
graphite.yml.disabled traefik.yml.disabled
haproxy.yml.disabled uwsgi.yml.disabled
http.yml.disabled vsphere.yml.disabled
jolokia.yml.disabled windows.yml.disabled
kafka.yml.disabled zookeeper.yml.disabled
在Metricbeat下的子目錄下有一個叫做modules.d的。它里面顯示所有默認的metricbeat能支持的所有的模塊,在默認的情況下,只有system.yml是enabled的狀態。其它的都是在disabled的狀態。
我們可以通過在metricbeat安裝目錄下打入如下的命令來獲得當前所有被支持的模塊:
./metricbeat modules list
如果我們想打開某個模塊,我們可以這么做:
./metricbeat modules enable apache mysql
這樣我們就打開了apache及mysql的模塊。如果我們想關閉模塊的話,可以采用如下的命令:
./metricbeat modules disable apache mysql
- 配置output
Metricbeat支持多種輸出,但是通常您將事件直接發送到Elasticsearch或Logstash進行其他處理。
output.elasticsearch
hosts: ["127.0.0.1:9200"]
- 如果您打算使用Metricbeat隨附的示例Kibana儀表板,請配置Kibana端點。 如果Kibana與Elasticsearch在同一主機上運行,則可以跳過此步驟。
setup.kibana:
host: "127.0.0.1:5601"
- 如果Elasticsearch和Kibana受保護,請在運行設置和啟動Metricbeat的命令之前在metricbeat.yml配置文件中設置證書。
output.elasticsearch:
hosts: ["myEShost:9200"]
username: "filebeat_internal"
password: "YOUR_PASSWORD"
setup.kibana:
host: "mykibanahost:5601"
username: "my_kibana_user"
password: "YOUR_PASSWORD"
- 運行測試指令:
./metricbeat test config -e
目前只設置了system模塊。
- 設置Kibana模塊
我們運行如下的命令來配置Kibana儀表盤:
./metricbeat setup
顯示結果:
$ ./metricbeat setup
Index setup finished.
Loading dashboards (Kibana must be running and reachable)
Loaded dashboards
這個操作將在Kibana中為我們生產相應的index pattern,並生產相應的示例模板dashboard供我們使用。
運行Metricbeat
在上一步我們已經配置好我們的Metricbeat了,我們現在可以開始運行Metricbeat了。
./metricbeat -e
可以到Kibana上去看一下數據。選擇以metricbeat為開頭的index,可以看見數據是在不斷地增長,表明metricbeat是在不斷地收集數據。
點擊Discover圖標,然后選擇metricbeat的Index pattern,可以看到一件收集到的數據。
點擊Dashboard圖標,然后搜索Metricbeat的System顯示儀表盤
上面顯示的是System Overview,我們也可以點擊“Host Overview”:
通過這樣簡單的配置,我們就可以了解我們系統的整個使用情況。