在CentOS系统中,Filebeat和Logstash协同工作以实现日志数据的集中收集、处理和转发。以下是它们协同工作的基本原理和步骤:
Filebeat的工作原理
- 输入(Input):负责监控日志文件或目录的变化,如文件被移动、删除或创建新文件,并将这些信息提供给Harvester使用。
- Harvester:负责监控单个日志文件内容的变化,如是否新加了一行数据,是否读到了EOF等。
- Spooler:用于将Harvester“收割”到的新事件(日志行)发送到指定目的地,如Elasticsearch、Kafka、Logstash等。
Logstash的工作原理
- 输入(Input):使用Input插件将数据输入至Logstash中,如从文件系统中的文件读取数据。
- 过滤(Filter):过滤器插件在Logstash管道中的中间处理设备,可以对事件进行解析和转换。
- 输出(Output):输出是Logstash管道的最后阶段,将修改后的事件输出到任何目的地。
Filebeat与Logstash的协同工作
- 安装和配置Filebeat:
- 在CentOS系统上安装Filebeat,编辑Filebeat的配置文件(通常位于
/etc/filebeat/filebeat.yml
),指定输出插件为Logstash,并提供Logstash的地址和端口。
- 配置Logstash:
- 编辑Logstash的配置文件(通常位于
/etc/logstash/conf.d/
目录下),创建一个新的配置文件,比如filebeat.conf
,并在其中定义输入、过滤和输出插件。
- 在输入插件中配置Filebeat的地址和端口,例如:
input { beats { port 5044 } }
。
- 在过滤插件中添加所需的过滤器逻辑,如解析日志格式、提取字段等。
- 在输出插件中配置将处理后的数据发送到Elasticsearch或其他目的地。
- 启动Filebeat和Logstash:
- 使用以下命令启动Filebeat服务,并设置开机自启:
sudo systemctl start filebeat
sudo systemctl enable filebeat
- 使用以下命令启动Logstash服务,并设置开机自启:
sudo systemctl start logstash
sudo systemctl enable logstash
- 验证配置:
- 确保Filebeat和Logstash都在运行,并且Filebeat能够成功地将日志发送到Logstash。可以通过查看Filebeat和Logstash的日志文件来验证配置是否正确。
通过以上步骤,Filebeat可以实时收集日志数据,并将其发送到Logstash进行进一步的处理和分析。这种协同工作模式有效地分散了日志处理的负载,提高了系统的可扩展性和可靠性。