Filebeat 是 Elastic 公司推出的一款轻量数据采集工具。与 logstash 不同的是,Filebeat 的日志结构化是放在Elasticsearch 的 ingest 节点进行的。因此 Filebeat agent 的负载更低,压力更小。
使用 FileBeat 接入蚂蚁云搜和普通 Elaticsearch 的主要差异在于,蚂蚁云搜目前不支持自动建表,所以需要关闭模板,采用手动建表方式创建索引,然后再写入。
接入方法
FileBeat 接入 ZSearch 主要包括以下步骤:
创建日志型表
说明:表名支持自定义,本文以 filebeat_log
为例。
- 导出 Filebeat 模板 (如果自行修改了 fields 文件,则需在配置中指定 setup.template.fields: “fields.yml” 方可生效)
- MacOS 系统,运行以下命令:
./filebeat export template > filebeat.template.json
- 如用 Docker,可以运行以下命令:
docker run docker.elastic.co/beats/filebeat:6.6.0 export template > filebeat.template.json
- 其他环境下的导出方式,参见 导出 Filebeat 模板。
- 编辑导出的
filebeat.template.json
文件。
- 增加
"settings.keep_days":7
,7 为保留天数,可自行设置。 - (可选)删去
index_patterns
和order
。
- 创建表,以 Shell 为例,运行以下命令:
curl -XPUT -u $username:$password -H "Content-Type: application/json" $api/filebeat_log -d @filebeat.template.json
- 说明:
- 其中 username、password 与 api,可以在 ZSearch 控制台应用详情页获得。
- 返回
"acknowledged":true
即为成功。 - 运行成功后,即可在 应用详情页 > 索引列表 中看到
filebeat_log
表。
编辑 Filebeat 配置
- 执行
setup.template.enabled: false
,关闭模板。 - 配置相关参数:
- 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。
注意事项
- Filebeat 通过不同的 module 采集不同的日志,官方提供了多种 module。详见 Filebeat module。
- 每个 module 均有自己的配置,存放在
modules.d
文件夹下。配置中表明了日志位置。如果文件名结尾为.disabled
则表示该 module 未启用。Filebeat 每次启动时,会自动检测moudles.d
文件夹以获取启用的 module 配置。 - 如需自己添加 module,则只需模仿现有 module 在
modules
和models.d
下添加相应文件即可。