如何在Linux中運行多個Filebeat實例

在本教程中,您將學習如何在Linux系統中運行多個filebeat實例。 文件拍 是Elastic Beat之一,是用於收集,轉發和集中事件日誌數據的輕量級託運人。它作為代理程序安裝在要從中收集日誌的服務器上。它可以將正在收集的日誌轉發到Elasticsearch或Logstash進行直接索引編製或進一步處理,然後再分別發送到Elasticsearch進行索引編製。

在Linux中運行多個Filebeat實例

在以前的教程中,我們討論了如何安裝單實例Filebeat。

在Ubuntu 20.04上安裝和配置Filebeat

在CentOS 8上安裝和配置Filebeat

在Fedora 30 / Fedora 29 / CentOS 7上安裝Filebeat

在Ubuntu 18.04 / Debian 9.8上安裝和配置Filebeat 7

在以上所有教程中,我們只有一個Filebeat實例在系統上運行,並且在將日誌數據直接發送到Elasticsearch或Logstash之前進行進一步處理,然後再發送到Elasticsearch。

有時候,您可能希望將系統日誌發送到多個輸出。例如將一些日誌直接發送到Elasticsearch,同時將其他一些日誌直接發送到Logstash進行處理。

因此,在本教程中,讓我們看看在Linux系統中安裝和運行多個filebeat實例的可能性,以便能夠將數據發送到多個輸出中。

如何在Linux中運行多個Filebeat實例

您可以通過多種方式在Linux中安裝和運行多個filebeat實例。其中一些包括:

  • 使用Filebeat-god在Linux中運行多個Filebeat實例
  • 使用systemd在Linux中運行多個Filebeat實例

使用Filebeat-god在Linux中運行多個Filebeat實例

Go守護進程 (要不就 )是一種實用程序,用於“守護”最初僅在前台運行的Go程序,並將日誌寫入控制台。 Filebeat-god (Filebeat Go daemon) 因此,它是一個實用程序,用於守護本來可以在前台運行的Filebeat進程。

只是要注意,該指南已經在Ubuntu 20.04和CentOS 8上進行了測試。但是,我猜它也應該在其他系統上工作-:)。

安裝Filebeat-god

每當安裝Filebeat時,Filebeat-god就會一起安裝,並且通常與Filebeat二進制文件位於 /usr/share/filebeat/bin 目錄。

要找到Filebeat-god二進制文件,只需使用以下find命令即可;

find / -iname filebeat-god
/usr/share/filebeat/bin/filebeat-god

現在,默認情況下,Filebeat使用以下路徑;

類型描述位置
Filebeat安裝的主目錄。/usr/share/filebeat
箱子二進制文件的位置。/usr/share/filebeat/bin
配置配置文件的位置。/etc/filebeat
數據永久數據文件的位置。/var/lib/filebeat
日誌Filebeat創建的日誌的位置。/var/log/filebeat

假設您想使用系統模塊將系統日誌和系統身份驗證事件直接轉發到Elasticsearch,同時又想將其他自定義日誌發送到Logstash進行進一步處理,然後再發送到Elasticsearch,那麼您必須使用Filebeat-god運行Filebeat進程, /usr/share/filebeat/bin/filebeat-god, 如下;

創建Filebeat配置文件的副本。

cp -r /etc/filebeat{,-elasticsearch}

此命令創建一個 /etc/filebeat-org目錄。

現在我們有了這些FIlebeat配置目錄。

ls /etc/filebeat*
/etc/filebeat:
fields.yml  filebeat.reference.yml  filebeat.yml  modules.d

/etc/filebeat-elasticsearch:
fields.yml  filebeat.reference.yml  filebeat.yml  modules.d

讓我們收集 系統日誌認證方式 日誌使用 /etc/filebeat-elasticsearch 配置並轉發到Elasticsearch。啟用系統模塊;

cp /etc/filebeat-elasticsearch/modules.d/system.yml{.disabled,}

配置Elasticsearch輸出

vim /etc/filebeat-elasticsearch/filebeat.yml
...
# ---------------------------- Elasticsearch Output ----------------------------
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["192.168.57.30:9200"]
...

保存並退出配置。

驗證是否可以通過在調試模式下運行Filebeat來建立與Elasticsearch的連接;

filebeat -e --path.config /etc/filebeat-elasticsearch --path.home /usr/share/filebeat --path.data /var/lib/filebeat-elasticsearch

如果一切順利,您應該會看到正在建立Elasticsearch連接。

...
2020-11-24T19:47:12.332Z	INFO	[index-management]	idxmgmt/std.go:298	Loaded index template.
2020-11-24T19:47:12.333Z	INFO	[index-management]	idxmgmt/std.go:309	Write alias successfully generated.
2020-11-24T19:47:12.333Z	INFO	[publisher_pipeline_output]	pipeline/output.go:151	Connection to backoff(elasticsearch(http://192.168.57.30:9200)) established

接下來,停止Filebeat在調試模式下運行,並使用Filebeat-god作為守護程序將其啟動,如下所示;

/usr/share/filebeat/bin/filebeat-god -n -p /var/run/filebeat-elasticsearch.pid -r / -- /usr/share/filebeat/bin/filebeat --path.config /etc/filebeat-elasticsearch --path.home /usr/share/filebeat --path.data /var/lib/filebeat-elasticsearch --path.logs /var/log/filebeat-elasticsearch

驗證Filebeat現在是否正在作為守護程序運行;

ps aux | grep filebeat | grep -v grep
root      121377  0.0  0.0   9300   636 pts/1    S    20:14   0:00 /usr/share/filebeat/bin/filebeat-god -n -p /var/run/filebeat-elasticsearch.pid -r / -- /usr/share/filebeat/bin/filebeat --path.config /etc/filebeat-elasticsearch --path.home /usr/share/filebeat --path.data /var/lib/filebeat-elasticsearch --path.logs /var/log/filebeat-elasticsearch
root      121378  4.8  2.0 1609528 127224 pts/1  SLl  20:14   0:02 /usr/share/filebeat/bin/filebeat --path.config /etc/filebeat-elasticsearch --path.home /usr/share/filebeat --path.data /var/lib/filebeat-elasticsearch --path.logs /var/log/filebeat-elasticsearch

拖尾原木;

tail -f /var/log/filebeat-elasticsearch/filebeat
...
2020-11-25T17:22:30.532Z	INFO	template/load.go:97	Template filebeat-7.10.0 already exists and will not be overwritten.
2020-11-25T17:22:30.532Z	INFO	[index-management]	idxmgmt/std.go:298	Loaded index template.
2020-11-25T17:22:30.533Z	INFO	[index-management]	idxmgmt/std.go:309	Write alias successfully generated.
2020-11-25T17:22:30.536Z	INFO	[publisher_pipeline_output]	pipeline/output.go:151	Connection to backoff(elasticsearch(http://192.168.57.30:9200)) established

配置Logstash輸出

現在,如果要在同一系統上收集其他一些日誌,然後直接發送到Logstash進行進一步處理,而不是發送到Elasticsearch,則只需創建一個單獨的Filebeat配置文件,如下所示;

cp -r /etc/filebeat{,-logstash}
vim /etc/filebeat-logstash/filebeat.yml

指定日誌文件以讀取數據並將數據發送到Logstash。在此示例中,我們正在收集wordpress日誌並轉發到Logstash進行處理。

# ============================== Filebeat inputs ===============================

filebeat.inputs:
- type: log

  # Change to true to enable this input configuration.
  enabled: true

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - /var/log/wordpress/kifarunix-demo.com.log
...
...
# ================================== Outputs ===================================

# Configure what output to use when sending the data collected by the beat.

# ---------------------------- Elasticsearch Output ----------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
  #hosts: ["192.168.57.30:9200"]
...
...
# ------------------------------ Logstash Output -------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["192.168.57.30:5044"]
...

保存並退出配置文件。

使用上面創建的logstash的自定義Filebeat配置在調試模式下運行Filebeat。

filebeat -e --path.config /etc/filebeat-logstash/ --path.home /usr/share/filebeat --path.data /var/lib/filebeat-logstash
...
2020-11-25T18:06:30.298Z	INFO	log/harvester.go:302	Harvester started for file: /var/log/wordpress/kifarunix-demo.com.log
2020-11-25T18:06:33.300Z	INFO	[add_cloud_metadata]	add_cloud_metadata/add_cloud_metadata.go:89	add_cloud_metadata: hosting provider type not detected.
2020-11-25T18:06:34.302Z	INFO	[publisher_pipeline_output]	pipeline/output.go:143	Connecting to backoff(async(tcp://192.168.57.30:5044))
2020-11-25T18:06:34.303Z	INFO	[publisher]	pipeline/retry.go:219	retryer: send unwait signal to consumer
2020-11-25T18:06:34.304Z	INFO	[publisher]	pipeline/retry.go:223	  done
2020-11-25T18:06:34.305Z	INFO	[publisher_pipeline_output]	pipeline/output.go:151	Connection to backoff(async(tcp://192.168.57.30:5044)) established

如果一切正常,請運行Filebeat實例,該實例將數據作為守護程序發送到Logstash;

/usr/share/filebeat/bin/filebeat-god -n -p /var/run/filebeat-logstash.pid -r / -- /usr/share/filebeat/bin/filebeat --path.config /etc/filebeat-logstash/ --path.home /usr/share/filebeat --path.data /var/lib/filebeat-logstash --path.logs /var/log/filebeat-logstash

同樣,您可以使用 ps 命令。

使用Systemd在Linux中運行多個Filebeat實例

對於使用Systemd初始化的Linux系統,甚至不需要費心地在Linux中使用Filebeat-god運行多個Filebeat實例。

使用Systemd在Linux中運行多個Filebeat實例非常簡單。

假設您想收集各種日誌並將其發送到各種輸出,如上面的示例所示,那麼您要做的就是為Filebeat收集每個特定日誌文件上的日誌創建一個Systemd服務單元。

一個基於上面的示例配置文件創建Filebeat以將日誌發送到Elasticsearch的示例;

複製默認的FIlebeat systemd服務單元,從而對其進行重命名。

cp /lib/systemd/system/filebeat.service /etc/systemd/system/filebeat-elasticsearch.service

編輯定製服務單元的配置文件並設置適當的目錄

vim /etc/systemd/system/filebeat-elasticsearch.service
[Unit]
Description=Filebeat sends log files to directly to Elasticsearch.
Documentation=https://www.elastic.co/products/beats/filebeat
Wants=network-online.target
After=network-online.target

[Service]

Environment="BEAT_LOG_OPTS="
Environment="BEAT_CONFIG_OPTS=-c /etc/filebeat-elasticsearch/filebeat.yml"
Environment="BEAT_PATH_OPTS=--path.home /usr/share/filebeat --path.config /etc/filebeat-elasticsearch --path.data /var/lib/filebeat-elasticsearch --path.logs /var/log/filebeat-elasticsearch"
ExecStart=/usr/share/filebeat/bin/filebeat --environment systemd $BEAT_LOG_OPTS $BEAT_CONFIG_OPTS $BEAT_PATH_OPTS
Restart=always

[Install]
WantedBy=multi-user.target

同樣,用於發送到Logstash;

cp /lib/systemd/system/filebeat.service /etc/systemd/system/filebeat-logstash.service
vim /etc/systemd/system/filebeat-logstash.service
[Unit]
Description=Filebeat sends log files to Logstash.
Documentation=https://www.elastic.co/products/beats/filebeat
Wants=network-online.target
After=network-online.target

[Service]

Environment="BEAT_LOG_OPTS="
Environment="BEAT_CONFIG_OPTS=-c /etc/filebeat-logstash/filebeat.yml"
Environment="BEAT_PATH_OPTS=--path.home /usr/share/filebeat --path.config /etc/filebeat-logstash --path.data /var/lib/filebeat-logstash --path.logs /var/log/filebeat-logstash"
ExecStart=/usr/share/filebeat/bin/filebeat --environment systemd $BEAT_LOG_OPTS $BEAT_CONFIG_OPTS $BEAT_PATH_OPTS
Restart=always

[Install]
WantedBy=multi-user.target

重新加載系統配置;

systemctl daemon-reload

啟動兩項服務;

systemctl start filebeat-logstash filebeat-elasticsearch

檢查狀態;

systemctl status filebeat-logstash filebeat-elasticsearch
● filebeat-logstash.service - Filebeat sends log files to Logstash.
     Loaded: loaded (/etc/systemd/system/filebeat-logstash.service; disabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-11-25 19:29:20 UTC; 1min 21s ago
       Docs: https://www.elastic.co/products/beats/filebeat
   Main PID: 129521 (filebeat)
      Tasks: 9 (limit: 7031)
     Memory: 28.4M
     CGroup: /system.slice/filebeat-logstash.service
             └─129521 /usr/share/filebeat/bin/filebeat --environment systemd -c /etc/filebeat-logstash/filebeat.yml --path.home /usr/share/filebeat --path.config /etc/file>
...
● filebeat-elasticsearch.service - Filebeat sends log files to directly to Elasticsearch.
     Loaded: loaded (/etc/systemd/system/filebeat-elasticsearch.service; disabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-11-25 19:29:20 UTC; 1min 21s ago
       Docs: https://www.elastic.co/products/beats/filebeat
   Main PID: 129540 (filebeat)
      Tasks: 9 (limit: 7031)
     Memory: 23.9M
     CGroup: /system.slice/filebeat-elasticsearch.service
             └─129540 /usr/share/filebeat/bin/filebeat --environment systemd -c /etc/filebeat-elasticsearch/filebeat.yml --path.home /usr/share/filebeat --path.config /et...

然後你去。這就是在Linux中運行多個Filebeat實例所需要的全部。

參考

在Linux實例中安裝和配置多個filebeat

Sidebar