Filebeat 是 Elastic 公司推出的一款轻量数据采集工具。与 logstash 不同的是,Filebeat 的日志结构化是放在Elasticsearch 的 ingest 节点进行的。因此 Filebeat agent 的负载更低,压力更小。
使用 FileBeat 接入蚂蚁云搜和普通 Elaticsearch 的主要差异在于,蚂蚁云搜目前不支持自动建表,所以需要关闭模板,采用手动建表方式创建索引,然后再写入。

接入方法

FileBeat 接入 ZSearch 主要包括以下步骤:

  1. 创建日志型表
  2. 编辑 Filebeat 配置
  3. 启动 Filebeat

创建日志型表

说明:表名支持自定义,本文以 filebeat_log 为例。

  1. 导出 Filebeat 模板 (如果自行修改了 fields 文件,则需在配置中指定 setup.template.fields: “fields.yml” 方可生效)
  • MacOS 系统,运行以下命令:
  1. ./filebeat export template > filebeat.template.json
  • 如用 Docker,可以运行以下命令:
docker run docker.elastic.co/beats/filebeat:6.6.0 export template > filebeat.template.json
  1. 编辑导出的 filebeat.template.json 文件。
  • 增加 "settings.keep_days":7 ,7 为保留天数,可自行设置。
  • (可选)删去 index_patternsorder
  1. 创建表,以 Shell 为例,运行以下命令:
curl -XPUT -u $username:$password -H "Content-Type: application/json" $api/filebeat_log -d @filebeat.template.json
  1. 说明
  2. 其中 username、password 与 api,可以在 ZSearch 控制台应用详情页获得。
  3. 返回 "acknowledged":true 即为成功。
  4. 运行成功后,即可在 应用详情页 > 索引列表 中看到 filebeat_log 表。
    Filebeats - 图1

编辑 Filebeat 配置

  1. 执行 setup.template.enabled: false,关闭模板。
  2. 配置相关参数:
  • hosts:即 ZSearch 控制台上的 API 地址去掉 “http(https)” 前缀
  • protocol:即 API 的前缀 (http 或 https)
  • username:等同于控制台上的用户名
  • password:等同于控制台上的密码
  • index:即刚刚创建的表名,本文示例为 filebeat_log
output.elasticsearch:
  hosts: ["api.search.alipay.com"]
  protocol: "https"
  username: "example"
  password: "example_password"
  index: "filebeat_log"

3.(可选)如要配置 Kibana 图表,具体参数如下:

  • host:即控制台域名地址
  • protocol:即控制台的 scheme
  • path:即 /kibana
  • username:等同于控制台上的用户名
  • password:等同于控制台上的密码
setup.kibana:
  host: "zsearch.antcloud.et15.alipay.net:80"
  protocol: "http"
  path: "/kibana"
  username: "example"
  password: "example_password"
setup.dashboards.enabled: true #每次启动都加载一次 dashboard,也可以关闭,手动`setup --dashboards`加载
setup.dashboards.index: "filebeat_log" #和上面 output.elasticsearch.index 的表名一样

启动 Filebeat

  • MacOS 系统,运行以下命令:
sudo ./filebeat -e

注意事项

  • Filebeat 通过不同的 module 采集不同的日志,官方提供了多种 module。详见 Filebeat module
  • 每个 module 均有自己的配置,存放在 modules.d 文件夹下。配置中表明了日志位置。如果文件名结尾为 .disabled 则表示该 module 未启用。Filebeat 每次启动时,会自动检测 moudles.d 文件夹以获取启用的 module 配置。
  • 如需自己添加 module,则只需模仿现有 module 在 modulesmodels.d 下添加相应文件即可。