Beats及Filebeat轻量型日志采集器
Beats簡介
Beats被官方稱為Lightweight Data Shipper,就是輕量級數據傳送者,它主要有幾個分類,如下:
1. Filebeats日志文件,主要是針對日志文件。
2. Metricbeat度量數據,主要可以收集CPU等數據,內存,磁盤,服務器軟件(如nginx,Mysql等)。
3. Packetbeat網絡數據,主要收集網絡數據。
4. Winlogbeat Windows數據,針對windows系統日志數據。
5. Heartbeat健康檢查。
下圖是Beats在整個Elastic Stack中的位置。
Beats位于上圖的左側,也就是數據產生的起始端,它們可以將數據直接傳輸到elasticsearch中,也可以通過logstash對數據進行解析和轉換,然后在傳輸到elasticsearch,最后在對數據進行可視化的展示。
什么是Filebeat
Filebeat是一款使用go語言開發的,主要是對日志文件進行處理的,是一個屬于Beats系列的日志托運者 (一組安裝在主機上的輕量級托運人),用于將不同類型的數據傳送到ELK堆棧進行分析。每個Beat專門用于傳送不同類型的信息,例如,Winlogbeat發布Windows事件日志,Metricbeat發布主機指標等等。顧名思義,Filebeat提供日志文件。
Filebeat處理流程
1. 日志文件輸入(Input)。
2. 處理日志文件(Filter)。
3. 輸出到目標對象中(Output)。
上圖是Filebeat的結構圖。 上圖左邊灰色框中就是Filebeat,右邊是Filebeat的輸出對象,Filebeat可以將日志輸出到Elasticsearch,Logstash,Kafka,redis等。
Filebeat的組成
根據上圖可以看到Filebeat由兩個主要組件組成,prospector 和 harvester。
1. harvester(收割者):
負責讀取單個文件的內容。
如果文件在讀取時被刪除或重命名,Filebeat將繼續讀取文件。
2. prospector(觀察者):
prospector負責管理harvester并找到所有要讀取的文件來源,主要監控文件是否變化,如果輸入類型為日志,則查找器將查找路徑匹配的所有文件,并為每個文件啟動一個harvester(上圖prospector1就有兩個harvester),如果文件有變化harvester就會收集新的日志。
Filebeat可以有多個prospector,每個prospector負責的文件是不同的。
Filebeat安裝
可以先將Filebeats下載,去官網下載,地址:https://www.elastic.co/downloads/beats,也可以在這個地址 https://elasticsearch.cn/download/
Filebeats官網地址:https://www.elastic.co/cn/beats/filebeat
Filebeats文檔地址:https://www.elastic.co/guide/en/beats/filebeat/current/index.html
Filebeats目錄說明
Mac系統安裝:
可以先查看filebeat安裝信息
安裝
查看安裝是否成功
安裝后Filebeat的相關安裝位置:
1. 安裝目錄:/usr/local/Cellar/filebeat/{filebeat版本}/
2. 配置目錄:/usr/local/etc/filebeat/
3. 緩存目錄:/usr/local/var/lib/filebeat/
啟動featbeat,可以通過命令brew services start filebeat
Filebeat配置
Filebeat的配置文件是filebeat.yml。Filebeat使用的是yaml語法,下面是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
說明:
1. prospector可以配置多個,所以這里yaml對于數組是用 - 符號來表示的,每個prospector都有輸入類型(input_type),這里log表示日志文件。
2. paths也是數組(下面也有-這個符號),path用于指定日志路徑。
Filebeat Output配置
1. Filebeat Console(標準輸出):Filebeat將收集到等數據,輸出到console里,一般用于開發環境中,用于調試。
output.console
pretty.true
enable: true
2. Filebeat Elasticsearch
output.elasticsearch
host:["http://localhost:9200"]
username: "admin"
password: "123456"
Filebeat Filter配置
Filebeat本身可以對數據進行處理,不過處理能力還是有點弱,同時也缺乏對數據轉換的能力。
Filebeat 演示-收集Nginx日志
通過stdin收集日志。
先查看Nginx是否啟動,在瀏覽器上輸入http://127.0.0.1:8080/
如果不知道你的環境nginx監聽的端口,可以查看nginx.conf配置文件中listen就可以。
查看下nginx日志內容
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"
先對nginx.yml文件進行配置,我的Mac系統nginx.yml路徑在/usr/local/etc/filebeat/modules.d/下面,如果沒有,可以新建一個nginx.yml文件。
該文件內容配置如下:
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日志每一條都被封裝到json中。
Filebeat和Elasticsearch Ingest Node
Filebeat是缺乏對數據轉換的能力。所以ES在5.x版本的時候增加了一個新的node類型Ingest Node。這個Ingest Node可以在數據寫入ES之前可以對數據進行轉換,使用的Api是pipeline。
Filebeat Module介紹
Filebeat Module是針對社區中常見的需求進行配置,封裝來增加易用性,比如常見nginx的日志,apache日志,mysql日志。這些封裝都在featbeat.yml這個配置文件中。
總結
以上是生活随笔為你收集整理的Beats及Filebeat轻量型日志采集器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python学习-字符串的基本操作
- 下一篇: python学习-字符串格式化