使用 Filebeat 收集日志并提交到 logstash 中

安装 Filebeat

此处只介绍 Windows 下面的安装,至于其他系统, 请参考: https://link.jianshu.com/?t=https%3A%2F%2Fwww.elastic.co%2Fguide%2Fen%2Fbeats%2Ffilebeat%2Fcurrent%2Ffilebeat-installation.html

下载并解压后,有两种方式运行,一种是注册为 Windows 服务,另一种是直接通过命令行运行;下面分别介绍两种方式。

注册为 Windows 服务

前提:系统必须有 PowerShell,因为官方安装包中提供的脚本只能在 PowerShell 中运行,若是 win10 系统,可忽略,因为它已经自带了 PowerShell, 否则请下载 PowerShell 并安装。

  1. 下载安装包 点我下载.
  2. 解压到以下目录: C:\Program Files 。

  3. 重命名 filebeat--windows 为 Filebeat 。

  4. 以 管理员 身份运行 PowerShell 。

  5. 在 PowerShell 中运行以下命令:

cd 'C:\Program Files\Filebeat'
C:\Program Files\Filebeat> .\install-service-filebeat.ps1

注:

如果此处提示你没有权限,请运行以下的命令注册 Filebeat 服务 :

PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-filebeat.ps1

到这,已经将 Filebeat 成功注册为系统服务,当下一次开机时它会自动启动,当然你也可以手动通过服务控制面板启动它。

通过命令行运行 Filebeat

通过命令行运行 Filebeat 非常简单,只需将 Filebeat 文件解压到某个目录后,通过以下命令运行:

filebeat -e -c filebeat.yml

配置 Filebeat

日志输入配置

Filebeat 使用了安装目录下的 filebeat.yml 文件进行相关配置。此处我们主要会用到以下的配置:

filebeat.prospectors:
- type: log
# 此处需特别注意,官方默认配置为 false,需要修改为 true
  enabled: true
  paths:
  # 此处配置的是需要收集的日志所在的位置,可使用通配符进行配置
    - D:/logs/*.log

日志输出配置

因为我们使用的是 logstash 收集日志,所以得注释掉默认的 elasticsearch 配置,并取消 logstash 的注释,最终的效果为:

#output.elasticsearch:
  # Array of hosts to connect to.
  #hosts: ["localhost:9200"]

  # Optional protocol and basic auth credentials.
  #protocol: "https"
  #username: "elastic"
  #password: "changeme"
output.logstash:
  # The Logstash hosts
  hosts: ["localhost:5044"]

  # Optional SSL. By default is off.
  # List of root certificates for HTTPS server verifications
  #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]

  # Certificate for SSL client authentication
  #ssl.certificate: "/etc/pki/client/cert.pem"

  # Client Certificate Key
  #ssl.key: "/etc/pki/client/cert.key"

此处仅介绍了最基础的配置,如需查看更多高级配置,请查看:官方文档

关于 Filebeat 的配置已经介绍完毕,下面我介绍 log4j2 的配置。

配置 Log4j2

因为我们使用的是 Filebeat 进行日志收集,所以我们只需要简单的将日志输出到本地文件中即可,这里我将使用 RollingFile 进行相关配置:

log4j-spring.xml

<?xml?>
<Configuration>
  <Properties>
    <Property/>
  </Properties>
  <Appenders>
    <Console>
      <PatternLayout/>
    </Console>
    <RollingFile
     >
      <PatternLayout/>
      <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy/>
      </Policies>
    </RollingFile>
    <Async>
      <AppenderRef/>
    </Async>
  </Appenders>
  <Loggers>
    <Root>
      <AppenderRef/>
      <AppenderRef/>
    </Root>
  </Loggers>
</Configuration>

配置 logstash

这里我们只需要在加入以下的配置即可:

input {
  beats {
    port => 5044
  }
}

此处的端口需要和 Filebeat 中配置的端口一致。

好了,所有的配置都已经完成,这里就不再重复 kibana 和 elasticsearch 的配置了,如有需要,请查看: https://www.jianshu.com/p/78c5159aace8

运行效果

我们启动其它服务并登陆 kibana 后,就可以看到以下的结果了:

查看源码

关于 Filebeat 的介绍就到此结束了,关于 logstash 的更多高级功能将在后续文章中一一介绍。

查看源码: https://link.jianshu.com/?t=https%3A%2F%2Fgithub.com%2Fheyuxian%2Fmcloud

发布于:2019-10-31 16:05:24