如何在 Ubuntu 上安装 FileBeat
Elastic Stack 是四个主要组件 Elasticsearch、Logstash、Kibana 和 Beats 的组合。 Filebeat 是该家族中最著名的成员之一,它收集、转发事件日志数据并将其集中到 Elasticsearch 或 Logstash 进行索引。 Filebeat 拥有许多模块,包括 Apache、Nginx、System、MySQL、auditd 等,可将常见日志格式的可视化简化为单个命令。
在本教程中,我们将向您展示如何在 Ubuntu 18.04 上安装和配置 Filebeat 以将事件日志、SSH 身份验证事件转发到 Logstash。
先决条件
- 运行 Ubuntu 18.04 的服务器,安装并配置了 Elasticsearch、Kibana 和 Logstash。
- 您的服务器上配置了 root 密码。
入门
开始之前,请将您的系统更新为最新版本。您可以通过运行以下命令来完成此操作:
apt-get update -y
apt-get upgrade -y
系统更新后,重新启动以应用更改。
安装 Filebeat
默认情况下,Filebeat 在 Ubuntu 18.04 默认存储库中不可用。因此,您需要在系统中添加 Elastic Stack 7 APT 存储库。
首先,使用以下命令安装所需的包:
apt-get install apt-transport-https -y
接下来,使用以下命令下载并添加 Elastic Stack 密钥:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
接下来,使用以下命令添加 Elastic Stack 7 Apt 存储库:
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-7.x.list
接下来,更新存储库并使用以下命令安装 Filebeat:
apt-get update -y
apt-get install filebeat -y
安装完成后,您可以继续下一步。
配置Filebeat
默认情况下,Filebeat 配置为将事件数据发送到 Elasticsearch。在这里,我们将配置 Filebeat 将事件数据发送到 Logstash。您可以通过编辑文件 /etc/filebeat/filebeat.yml 来完成此操作:
nano /etc/filebeat/filebeat.yml
注释掉 elasticsearch 输出并取消注释 Logstash 输出,如下所示:
#-------------------------- Elasticsearch output ------------------------------
# output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["localhost:9200"]
#----------------------------- Logstash output --------------------------------
output.logstash:
# The Logstash hosts
hosts: ["localhost:5044"]
完成后,您可以继续下一步。
启用 Filebeat 系统模块
默认情况下,Filebeat 附带许多模块。您可以使用以下命令列出所有模块:
filebeat modules list
您应该看到以下输出:
Enabled:
Disabled:
apache
auditd
aws
cef
cisco
coredns
elasticsearch
envoyproxy
googlecloud
haproxy
ibmmq
icinga
iis
iptables
kafka
kibana
logstash
mongodb
mssql
mysql
nats
netflow
nginx
osquery
panw
postgresql
rabbitmq
redis
santa
suricata
system
traefik
zeek
默认情况下,所有模块均被禁用。因此,您需要启用系统模块来收集和解析系统日志服务创建的日志。您可以使用以下命令启用系统模块:
filebeat modules enable system
接下来,您可以使用以下命令验证系统模块:
filebeat modules list
您应该看到系统模块现已启用:
Enabled:
system
接下来,您需要将系统模块配置为只读身份验证日志。您可以通过编辑文件 /etc/filebeat/modules.d/system.yml 来完成此操作:
nano /etc/filebeat/modules.d/system.yml
更改以下行:
- module: system
# Syslog
syslog:
enabled: false
...
# Authorization logs
auth:
enabled: true
# Set custom paths for the log files. If left empty,
# Filebeat will choose the paths depending on your OS.
var.paths: ["/var/log/auth.log"]
完成后保存并关闭文件。
在Elasticsearch中加载索引模板
接下来,您需要手动将模板加载到 Elasticsearch 中。您可以使用以下命令来完成此操作:
filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
您应该看到以下输出:
Index setup finished.
接下来,使用以下命令生成索引模板并在 Elastic Stack 服务器上安装该模板:
filebeat export template > filebeat.template.json
curl -XPUT -H 'Content-Type: application/json' http://localhost:9200/_template/filebeat-7.0.1 [email
最后,使用以下命令启动 Filebeat 服务并使其在系统重新引导后启动:
systemctl start filebeat
systemctl enable filebeat
您可以使用以下命令检查 Filebeat 的状态:
systemctl status filebeat
您应该看到以下输出:
? filebeat.service - Filebeat sends log files to Logstash or directly to Elasticsearch.
Loaded: loaded (/lib/systemd/system/filebeat.service; disabled; vendor preset: enabled)
Active: active (running) since Tue 2019-11-26 06:45:18 UTC; 14s ago
Docs: https://www.elastic.co/products/beats/filebeat
Main PID: 13059 (filebeat)
Tasks: 28 (limit: 463975)
CGroup: /system.slice/filebeat.service
??13059 /usr/share/filebeat/bin/filebeat -e -c /etc/filebeat/filebeat.yml -path.home /usr/share/filebeat -path.config /etc/filebeat
Nov 26 06:45:18 ubuntu filebeat[13059]: 2019-11-26T06:45:18.528Z INFO log/harvester.go:251 Harvester started for file: /va
Nov 26 06:45:18 ubuntu filebeat[13059]: 2019-11-26T06:45:18.528Z INFO log/harvester.go:251 Harvester started for file: /va
Nov 26 06:45:18 ubuntu filebeat[13059]: 2019-11-26T06:45:18.529Z INFO log/harvester.go:251 Harvester started for file: /va
Nov 26 06:45:18 ubuntu filebeat[13059]: 2019-11-26T06:45:18.529Z INFO log/harvester.go:251 Harvester started for file: /va
Nov 26 06:45:18 ubuntu filebeat[13059]: 2019-11-26T06:45:18.530Z INFO log/harvester.go:251 Harvester started for file: /va
Nov 26 06:45:18 ubuntu filebeat[13059]: 2019-11-26T06:45:18.530Z INFO log/harvester.go:251 Harvester started for file: /va
Nov 26 06:45:21 ubuntu filebeat[13059]: 2019-11-26T06:45:21.485Z INFO add_cloud_metadata/add_cloud_metadata.go:87 add_clou
Nov 26 06:45:21 ubuntu filebeat[13059]: 2019-11-26T06:45:21.486Z INFO log/harvester.go:251 Harvester started for file: /va
Nov 26 06:45:22 ubuntu filebeat[13059]: 2019-11-26T06:45:22.485Z INFO pipeline/output.go:95 Connecting to backoff(async(tc
Nov 26 06:45:22 ubuntu filebeat[13059]: 2019-11-26T06:45:22.487Z INFO pipeline/output.go:105 Connection to backoff(async(t
测试Elasticsearch数据接收
现在,使用以下命令验证 Elasticsearch 是否正在接收数据:
curl -X GET localhost:9200/_cat/indices?v
您应该看到以下输出:
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open .kibana_task_manager_1 fpHT_GhXT3i_w_0Ob1bmrA 1 0 2 0 46.1kb 46.1kb
yellow open ssh_auth-2019.11 mtyIxhUFTp65WqVoriFvGA 1 1 15154 0 5.7mb 5.7mb
yellow open filebeat-7.4.2-2019.11.26-000001 MXSpQH4MSZywzA5cEMk0ww 1 1 0 0 283b 283b
green open .apm-agent-configuration Ft_kn1XXR16twRhcZE4xdQ 1 0 0 0 283b 283b
green open .kibana_1 79FslznfTw6LfTLc60vAqA 1 0 8 0 31.9kb 31.9kb
您还可以使用以下命令验证 ssh_auth-2019.05 索引:
curl -X GET localhost:9200/ssh_auth-*/_search?pretty
您应该看到以下输出:
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 10000,
"relation" : "gte"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "ssh_auth-2019.11",
"_type" : "_doc",
"_id" : "g7OXpm4Bi50dVWRYAyK4",
"_score" : 1.0,
"_source" : {
"log" : {
"offset" : 479086,
"file" : {
"path" : "/var/log/elasticsearch/gc.log"
}
},
"event" : {
"timezone" : "+00:00",
"dataset" : "elasticsearch.server",
"module" : "elasticsearch"
},
在 Kibana 上添加索引
现在,登录到 Kibana 仪表板并单击 Index Patterns。您应该看到以下页面:
现在,单击创建索引模式。您应该看到以下页面:
添加 ssh_auth-* 索引并单击下一步按钮。您应该看到以下页面:
现在,选择@timestamp并单击创建索引模式按钮。您应该看到以下页面:
现在,单击左侧窗格中的发现选项卡。您应该能够在以下屏幕中看到您的数据:
恭喜!您已成功安装并配置 Filebeat 以将事件数据发送到 Logstash。现在,您可以在收到所有数据后继续创建 Kibana 仪表板。