Beats及Filebeat轻量型日志采集器
Beats簡(jiǎn)介
Beats被官方稱(chēng)為L(zhǎng)ightweight Data Shipper,就是輕量級(jí)數(shù)據(jù)傳送者,它主要有幾個(gè)分類(lèi),如下:
1. Filebeats日志文件,主要是針對(duì)日志文件。
2. Metricbeat度量數(shù)據(jù),主要可以收集CPU等數(shù)據(jù),內(nèi)存,磁盤(pán),服務(wù)器軟件(如nginx,Mysql等)。
3. Packetbeat網(wǎng)絡(luò)數(shù)據(jù),主要收集網(wǎng)絡(luò)數(shù)據(jù)。
4. Winlogbeat Windows數(shù)據(jù),針對(duì)windows系統(tǒng)日志數(shù)據(jù)。
5. Heartbeat健康檢查。
下圖是Beats在整個(gè)Elastic Stack中的位置。
Beats位于上圖的左側(cè),也就是數(shù)據(jù)產(chǎn)生的起始端,它們可以將數(shù)據(jù)直接傳輸?shù)絜lasticsearch中,也可以通過(guò)logstash對(duì)數(shù)據(jù)進(jìn)行解析和轉(zhuǎn)換,然后在傳輸?shù)絜lasticsearch,最后在對(duì)數(shù)據(jù)進(jìn)行可視化的展示。
什么是Filebeat
Filebeat是一款使用go語(yǔ)言開(kāi)發(fā)的,主要是對(duì)日志文件進(jìn)行處理的,是一個(gè)屬于Beats系列的日志托運(yùn)者 (一組安裝在主機(jī)上的輕量級(jí)托運(yùn)人),用于將不同類(lèi)型的數(shù)據(jù)傳送到ELK堆棧進(jìn)行分析。每個(gè)Beat專(zhuān)門(mén)用于傳送不同類(lèi)型的信息,例如,Winlogbeat發(fā)布Windows事件日志,Metricbeat發(fā)布主機(jī)指標(biāo)等等。顧名思義,F(xiàn)ilebeat提供日志文件。
Filebeat處理流程
1. 日志文件輸入(Input)。
2. 處理日志文件(Filter)。
3. 輸出到目標(biāo)對(duì)象中(Output)。
上圖是Filebeat的結(jié)構(gòu)圖。 上圖左邊灰色框中就是Filebeat,右邊是Filebeat的輸出對(duì)象,F(xiàn)ilebeat可以將日志輸出到Elasticsearch,Logstash,Kafka,redis等。
Filebeat的組成
根據(jù)上圖可以看到Filebeat由兩個(gè)主要組件組成,prospector 和 harvester。
1. harvester(收割者):
負(fù)責(zé)讀取單個(gè)文件的內(nèi)容。
如果文件在讀取時(shí)被刪除或重命名,F(xiàn)ilebeat將繼續(xù)讀取文件。
2. prospector(觀察者):
prospector負(fù)責(zé)管理harvester并找到所有要讀取的文件來(lái)源,主要監(jiān)控文件是否變化,如果輸入類(lèi)型為日志,則查找器將查找路徑匹配的所有文件,并為每個(gè)文件啟動(dòng)一個(gè)harvester(上圖prospector1就有兩個(gè)harvester),如果文件有變化harvester就會(huì)收集新的日志。
Filebeat可以有多個(gè)prospector,每個(gè)prospector負(fù)責(zé)的文件是不同的。
Filebeat安裝
可以先將Filebeats下載,去官網(wǎng)下載,地址:https://www.elastic.co/downloads/beats,也可以在這個(gè)地址 https://elasticsearch.cn/download/
Filebeats官網(wǎng)地址:https://www.elastic.co/cn/beats/filebeat
Filebeats文檔地址:https://www.elastic.co/guide/en/beats/filebeat/current/index.html
Filebeats目錄說(shuō)明
Mac系統(tǒng)安裝:
可以先查看filebeat安裝信息
安裝
查看安裝是否成功
安裝后Filebeat的相關(guān)安裝位置:
1. 安裝目錄:/usr/local/Cellar/filebeat/{filebeat版本}/
2. 配置目錄:/usr/local/etc/filebeat/
3. 緩存目錄:/usr/local/var/lib/filebeat/
啟動(dòng)featbeat,可以通過(guò)命令brew services start filebeat
Filebeat配置
Filebeat的配置文件是filebeat.yml。Filebeat使用的是yaml語(yǔ)法,下面是Filebeat配置示例
filebeat.prospector: - input_type: log paths: - /var/log/apache/httpd-*.log document_type: apache - input_type: log paths: - /var/log/messages - /var/log/*.log
說(shuō)明:
1. prospector可以配置多個(gè),所以這里yaml對(duì)于數(shù)組是用 - 符號(hào)來(lái)表示的,每個(gè)prospector都有輸入類(lèi)型(input_type),這里log表示日志文件。
2. paths也是數(shù)組(下面也有-這個(gè)符號(hào)),path用于指定日志路徑。
Filebeat Output配置
1. Filebeat Console(標(biāo)準(zhǔn)輸出):Filebeat將收集到等數(shù)據(jù),輸出到console里,一般用于開(kāi)發(fā)環(huán)境中,用于調(diào)試。
output.console
pretty.true
enable: true
2. Filebeat Elasticsearch
output.elasticsearch
host:["http://localhost:9200"]
username: "admin"
password: "123456"
Filebeat Filter配置
Filebeat本身可以對(duì)數(shù)據(jù)進(jìn)行處理,不過(guò)處理能力還是有點(diǎn)弱,同時(shí)也缺乏對(duì)數(shù)據(jù)轉(zhuǎn)換的能力。
Filebeat 演示-收集Nginx日志
通過(guò)stdin收集日志。
先查看Nginx是否啟動(dòng),在瀏覽器上輸入http://127.0.0.1:8080/
如果不知道你的環(huán)境nginx監(jiān)聽(tīng)的端口,可以查看nginx.conf配置文件中l(wèi)isten就可以。
查看下nginx日志內(nèi)容
songguojundeMacBook-Pro:~ songguojun$ head -n 10 /usr/local/var/log/nginx/access.log 127.0.0.1 - - [07/May/2020:22:38:13 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:76.0) Gecko/20100101 Firefox/76.0" 127.0.0.1 - - [07/May/2020:22:44:36 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:76.0) Gecko/20100101 Firefox/76.0"
先對(duì)nginx.yml文件進(jìn)行配置,我的Mac系統(tǒng)nginx.yml路徑在/usr/local/etc/filebeat/modules.d/下面,如果沒(méi)有,可以新建一個(gè)nginx.yml文件。
該文件內(nèi)容配置如下:
filebeat.prospectors:
- input_type: stdin
output.console:
pretty: true
在輸入命令head -n 10 /usr/local/var/log/nginx/access.log | filebeat -e -c /usr/local/etc/filebeat/modules.d/nginx.yml
nginx日志每一條都被封裝到j(luò)son中。
Filebeat和Elasticsearch Ingest Node
Filebeat是缺乏對(duì)數(shù)據(jù)轉(zhuǎn)換的能力。所以ES在5.x版本的時(shí)候增加了一個(gè)新的node類(lèi)型Ingest Node。這個(gè)Ingest Node可以在數(shù)據(jù)寫(xiě)入ES之前可以對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換,使用的Api是pipeline。
Filebeat Module介紹
Filebeat Module是針對(duì)社區(qū)中常見(jiàn)的需求進(jìn)行配置,封裝來(lái)增加易用性,比如常見(jiàn)nginx的日志,apache日志,mysql日志。這些封裝都在featbeat.yml這個(gè)配置文件中。
總結(jié)
以上是生活随笔為你收集整理的Beats及Filebeat轻量型日志采集器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python学习-字符串的基本操作
- 下一篇: 阿里云的NoSQL存储服务OTS的应用分