设置和运行Filebeat

设置和运行Filebeat

阅读本节之前,请参阅 基本安装说明的入门文档以帮助您入门。

本节包含有关如何设置和运行Filebeat的更多信息,其中包括:

目录布局

安装的目录布局如下所示:

类型 描述 默认位置 配置选项

Filebeat安装的主页。

path.home

箱子

二进制文件的位置。

{path.home}/bin

配置

配置文件的位置。

{path.home}

path.config

数据

持久数据文件的位置。

{path.home}/data

path.data

日志

由Filebeat创建的日志的位置。

{path.home}/logs

path.logs

您可以使用CLI标志或配置文件中的设置路径选项更改这些设置。

默认路径

Filebeat使用下列默认路径,除非您明确地更改它们。

deb和rpm

类型 描述 位置

home

Filebeat安装的主页。

/usr/share/filebeat

bin

二进制文件的位置。

/usr/share/filebeat/bin

config

配置文件的位置。

/etc/filebeat

data

持久数据文件的位置。

/var/lib/filebeat

logs

由Filebeat创建的日志的位置。

/var/log/filebeat

对于deb和rpm分发,这些路径在init脚本或systemd单元文件中设置。确保使用首选操作系统方法(init脚本或systemctl)来启动Filebeat服务。否则,路径可能被错误地设置。

docker

类型 描述 位置

home

Filebeat安装的主页。

/usr/share/filebeat

bin

二进制文件的位置。

/usr/share/filebeat

config

配置文件的位置。

/usr/share/filebeat

data

持久数据文件的位置。

/usr/share/filebeat/data

logs

由Filebeat创建的日志的位置。

/usr/share//filebeat/logs

zip,tar.gz和tgz

类型 描述 位置

home

Filebeat安装的主页。

{extract.path}

bin

二进制文件的位置。

{extract.path}

config

配置文件的位置。

{extract.path}

data

持久数据文件的位置。

{extract.path}/data

logs

由Filebeat创建的日志的位置。

{extract.path}/logs

对于zip,tar.gz和tgz分布,这些路径基于提取的二进制文件的位置。这意味着如果使用以下简单命令启动Filebeat,则所有路径都将正确设置:

./filebeat

Filebeat命令

Filebeat提供了一个用于运行Beat和执行常见任务的命令行界面,如测试配置文件和加载仪表板。命令行还支持 用于控制全局行为的全局标志

sudo在以下情况下使用以运行以下命令:

  • 配置文件归属于root
  • Filebeat配置为捕获需要root访问的 数据

export

将配置或索引模板导出到stdout。

help

显示任何命令的帮助。

modules

管理配置的模块。

run

运行Filebeat。如果在不指定命令的情况下启动Filebeat,则默认使用此命令。

setup

设置初始环境,包括索引模板,Kibana仪表板(如果可用)和机器学习作业(可用时)。

test

测试配置。

version

显示有关当前版本的信息。

另请参阅全局标志

export命令

将配置或索引模板导出到stdout。您可以使用此命令快速查看您的配置或索引模板的内容。

概要

filebeat export SUBCOMMAND [FLAGS]

SUBCOMMANDS

config

将当前配置导出到stdout。如果使用-c标志,则此命令将导出在指定文件中定义的配置。

template

将索引模板导出到stdout。您可以指定--es.version和 --index标志来进一步定义要导出的内容。

FLAGS

--es.version VERSION

与之一起指定时template,导出与指定版本兼容的索引模板。

-h, --help

显示该export命令的帮助。

--index BASE_NAME

与之一起指定时template,设置用于索引模板的基本名称。如果未指定此标志,则默认的基本名称是filebeat

另请参阅全局标志

例子

filebeat export config
filebeat export template --es.version 6.1.3 --index myindexname

help命令

显示任何命令的帮助。如果未指定命令,则显示该run命令的帮助 。

概要

filebeat help COMMAND_NAME [FLAGS]

COMMAND_NAME

指定显示帮助的命令的名称。

FLAGS

-h, --help

显示该help命令的帮助。

另请参阅全局标志

filebeat help export

modules命令

管理配置的模块。您可以使用此命令启用和禁用modules.d目录中定义的特定模块配置。您使用此命令所做的更改将被保留,并用于后续的Filebeat运行。

要查看启用和禁用哪些模块,请运行list子命令。

概要

filebeat modules SUBCOMMAND [FLAGS]

SUBCOMMANDS

disable MODULE_LIST

禁用空格分隔列表中指定的模块。

enable MODULE_LIST

启用空格分隔列表中指定的模块。

list

列出当前已启用和禁用的模块。

FLAGS

-h, --help

显示该export命令的帮助。

另请参阅全局标志

例子

filebeat modules list
filebeat modules enable apache2 auditd mysql

run命令编辑

运行Filebeat。如果在不指定命令的情况下启动Filebeat,则默认使用此命令。

概要

filebeat run [FLAGS]

要么:

filebeat [FLAGS]

FLAGS

-N, --N

禁止将事件发布到定义的输出。此选项仅用于测试Filebeat。

--cpuprofile FILE

将CPU配置文件数据写入指定的文件。此选项对解决Filebeat问题很有用。

-h, --help

显示该run命令的帮助。

--httpprof [HOST]:PORT

启动一个http服务器进行分析。此选项对于疑难解答和分析Filebeat非常有用。

--memprofile FILE

将内存配置文件数据写入指定的输出文件。此选项对解决Filebeat问题很有用。

--modules MODULE_LIST

指定要运行的模块的逗号分隔列表。例如:

filebeat run --modules nginx,mysql,system

每次运行Filebeat时,不要指定模块列表,您可以使用该modules命令启用和禁用特定的模块。然后当您运行Filebeat时,它将运行任何启用的模块。

--once

使用--once标志时,Filebeat会启动所有配置的收割机和探矿仪,并运行每个探矿仪,直到收割机关闭。如果您设置了--once标志,您还应该设置close_eof收割机在达到文件结束时关闭。默认情况下收割机在close_inactive达到后关闭。

--setup

加载示例Kibana仪表板。如果要在不运行Filebeat的情况下加载仪表板,请改用该setup命令。

另请参阅全局标志

filebeat run -e --setup

要么:

filebeat -e --setup

setup命令编辑

设置初始环境,包括索引模板,Kibana仪表板(如果可用)和机器学习作业(可用时)。

  • 索引模板确保字段在Elasticsearch中正确映射。
  • Kibana仪表板使您更容易在Kibana中可视化Filebeat数据。
  • 机器学习作业包含分析异常数据所需的配置信息和元数据。

使用这个命令而不是run --setup当你想设置环境而不需要实际运行Filebeat和摄取数据。

概要

filebeat setup [FLAGS]

FLAGS

--dashboards

只设置Kibana仪表板。

-h, --help

显示该setup命令的帮助。

--machine-learning

仅设置机器学习作业配置。

--modules MODULE_LIST

指定一个逗号分隔的模块列表。当filebeat.yml文件中没有定义模块时,使用此标志可以避免错误。

--template

只设置索引模板。

另请参阅全局标志

filebeat setup --dashboards

test命令编辑

测试配置。

概要

filebeat test SUBCOMMAND [FLAGS]

config

测试配置设置。

output

测试Filebeat可以通过使用当前设置连接到输出。

FLAGS

-h, --help

显示该test命令的帮助。

另请参阅全局标志

filebeat test config

version命令编辑

显示有关当前版本的信息。

概要

filebeat version [FLAGS]

FLAGS

-h, --help

显示该version命令的帮助。

另请参阅全局标志

filebeat version

全局标志编辑

这些全局标志在您运行Filebeat时可用。

-E, --E "SETTING_NAME=VALUE"

覆盖特定的配置设置。您可以指定多个覆盖。例如:

filebeat -E "name=mybeat" -E "output.elasticsearch.hosts=["http://myhost:9200"]"

此设置适用于当前正在运行的Filebeat进程。Filebeat配置文件不会更改。

-M, --M "VAR_NAME=VALUE"

覆盖Filebeat模块的默认配置。您可以指定多个变量覆盖。例如:

filebeat -modules=nginx -M "nginx.access.var.paths=[/var/log/nginx/access.log*]" -M "nginx.access.var.pipeline=no_plugins"

-c, --c FILE

指定用于Filebeat的配置文件。你在这里指定的文件是相对的path.config。如果-c未指定标志filebeat.yml,则使用默认配置文件。

-d, --d SELECTORS

启用对指定选择器的调试。对于选择器,可以指定以逗号分隔的组件列表,也可以使用-d "*"为所有组件启用调试。例如,-d "publish"显示所有“发布”相关的消息。

-e, --e

记录到stderr并禁用syslog /文件输出。

--path.config

设置配置文件的路径。有关详细信息,请参阅目录布局部分

--path.data

设置数据文件的路径。有关详细信息,请参阅目录布局部分

--path.home

设置其他文件的路径。有关详细信息,请参阅目录布局部分

--path.logs

设置日志文件的路径。有关详细信息,请参阅目录布局部分

--strict.perms

对配置文件进行严格的权限检查。默认是 -strict.perms=true。请参阅 Beats平台参考中的配置文件所有权和权限以获取更多信息。

-v, --v

记录INFO级别的消息。

在Docker上运行Filebeat

Filebeat的Docker镜像可以从Elastic Docker注册表获得。您可以使用docker pull命令检索图像。

docker pull docker.elastic.co/beats/filebeat:6.1.3

基本的图像是centos:7,源代码可以在GitHub上 找到

在Docker 

上配置Filebeat

Docker镜像提供了几种配置Filebeat的方法。传统的方法是通过绑定安装的卷提供配置文件,但也可以使用您的配置创建自定义映像。

绑定配置

在Docker上配置Filebeat的一种方法是filebeat.yml通过绑定提供。与docker run,绑定安装可以这样指定:

docker run \
  -v ~/filebeat.yml:/usr/share/filebeat/filebeat.yml \
  docker.elastic.co/beats/filebeat:6.1.3

自定义图像配置

可以将Filebeat配置嵌入到自定义映像中。下面是一个Dockerfile的例子来实现这个功能:

FROM docker.elastic.co/beats/filebeat:6.1.3
COPY filebeat.yml /usr/share/filebeat/filebeat.yml
USER root
RUN chown filebeat /usr/share/filebeat/filebeat.yml
USER filebeat

在Kubernetes上运行Filebeat

Filebeat Docker镜像可以用于Kubernetes检索和发送容器日志。

Kubernetes部署清单

通过将Filebeat部署为DaemonSet, 我们确保在集群的每个节点上都有一个正在运行的实例。

Docker日志主机文件夹(/var/lib/docker/containers)安装在Filebeat容器上。Filebeat将启动这些文件的探矿者,并开始收集这些文件。

一切都部署在kube-system命名空间下,你可以通过更新YAML文件来改变它。

要获得清单运行:

curl -L -O https://raw.githubusercontent.com/elastic/beats/6.1/deploy/kubernetes/filebeat-kubernetes.yaml

设置

清单中公开了一些参数来配置日志目的地,默认情况下,它们将使用现有的Elasticsearch部署,但是您可能需要更改该行为,因此只需编辑YAML文件并对其进行修改即可:

- name: ELASTICSEARCH_HOST
  value: elasticsearch
- name: ELASTICSEARCH_PORT
  value: "9200"
- name: ELASTICSEARCH_USERNAME
  value: elastic
- name: ELASTICSEARCH_PASSWORD
  value: changeme

部署编辑

要将Filebeat部署到Kubernetes,只需运行:

kubectl create -f filebeat-kubernetes.yaml

那么你应该可以通过运行来检查状态:

$ kubectl --namespace=kube-system get ds/filebeat

NAME       DESIRED   CURRENT   READY     UP-TO-DATE   AVAILABLE   NODE-SELECTOR   AGE
filebeat   32        32        0         32           0           <none>          1m

日志应该开始流向Elasticsearch,全部使用Add Kubernetes元数据 处理器进行注释。

升级Filebeat

有关升级到新版本的信息,请参阅Beats平台参考中的以下主题:

Filebeat如何

在这个主题中,您了解了Filebeat的关键构建模块以及它们如何一起工作。了解这些概念将有助于您针对特定用例对Filebeat进行配置做出明智的决定。

Filebeat由两个主要组件组成:探矿者收割者。这些组件一起工作来尾随文件并将事件数据发送到您指定的输出。

什么是收割机?

收割机负责读取单个文件的内容。收割机逐行读取每个文件,并将内容发送到输出。每个文件启动一台收割机。收割机负责打开和关闭文件,这意味着收割机运行时文件描述符保持打开状态。如果在收获文件时删除或重命名文件,Filebeat将继续读取文件。这有副作用,在收割机关闭之前,磁盘上的空间被保留。默认情况下,Filebeat保持打开文件直到close_inactive达到。

关闭收割机有以下后果:

  • 文件处理程序关闭,释放基础资源,如果在收割机还在读取文件时文件被删除。
  • 文件的采集只会在scan_frequency经过后再次开始。
  • 如果在收割机关闭的情况下移动或移除文件,文件的收割将不会继续。

要控制收割机何时关闭,请使用close_*配置选项。

什么是探矿者?编辑

探矿者负责管理收割机并找到所有的读取源。

如果输入类型为log,则探矿者会查找驱动器上与所​​定义的全局路径匹配的所有文件,并为每个文件启动一个收集器。每个探矿者都在自己的Go例程中运行。

以下示例将Filebeat配置为从与指定的glob模式匹配的所有日志文件中获取行:

filebeat.prospectors:
- type: log
  paths:
    - /var/log/*.log
    - /var/path2/*.log

Filebeat目前支持两种prospector类型:logstdin。每个探矿者类型可以定义多次。该log探矿检查每个文件看收割机是否需要启动,一个人是否已经在运行,或文件是否可以忽略不计(见ignore_older)。只有在收割机关闭后文件的大小发生了变化的情况下,才会选择新行。

Filebeat探矿者只能读取本地文件。没有功能连接到远程主机读取存储的文件或日志。

Filebeat如何保持文件的状态?

Filebeat保持每个文件的状态,并经常刷新注册表文件中的磁盘状态。状态用于记住收割机正在读取的最后偏移量,并确保发送所有日志行。如果输出(如Elasticsearch或Logstash)无法访问,Filebeat将跟踪发送的最后一行,并在输出再次可用时继续读取文件。当Filebeat正在运行时,每个探矿者的状态信息也被保存在内存中。当Filebeat重新启动时,来自注册表文件的数据被用来重建状态,并且Filebeat继续每个在最后已知位置的收割机。

每个探矿者为每个找到的文件保留一个状态。由于文件可以被重命名或移动,文件名和路径不足以识别文件。对于每个文件,Filebeat存储唯一的标识符来检测文件是否先前被收获。

如果您的使用案例涉及每天创建大量新文件,您可能会发现注册表文件会变得太大。看到注册表文件太大?编辑有关您可以设置解决此问题的配置选项的详细信息。

Filebeat如何确保至少一次交付?

Filebeat保证事件至少被传递到配置的输出一次,没有数据丢失。Filebeat能够实现此行为,因为它将每个事件的传递状态存储在注册表文件中。

在定义的输出被阻止并且没有确认所有事件的情况下,Filebeat会一直尝试发送事件,直到输出确认已经收到事件。

如果Filebeat在发送事件的过程中关闭,则不会等待输出在关闭之前确认所有事件。任何发送到输出的事件,在Filebeat关闭之前没有被确认,在重新启动Filebeat时会再次发送。这可确保每个事件至少发送一次,但最终可能会将重复事件发送到输出。您可以通过设置shutdown_timeout选项来配置Filebeat以在关闭之前等待特定的时间。

Filebeat的至少一次交付保证包括日志轮换和删除旧文件的限制。如果将日志文件写入磁盘并且旋转速度超过Filebeat可以处理的速度,或者如果在输出不可用的情况下删除文件,数据可能会丢失。在Linux上,Filebeat也可能因inode重用而跳过行。有关inode重用问题的更多详细信息,请参阅 常见问题解答

猜你喜欢

转载自my.oschina.net/ch66880/blog/1619087