version: filebeat 7.0.0
自动发现
在容器上运行应用程序时,它们会成为监视系统的移动目标。自动发现允许您跟踪它们并在发生变化时调整设置。通过定义配置模板,自动发现子系统可以在服务开始运行时对其进行监控。
您可以filebeat.autodiscover在filebeat.yml 配置文件的部分中定义自动发现设置 。要启用自动发现,请指定提供程序列表。
提供商
自动发现提供程序通过观察系统上的事件并将这些事件转换为具有通用格式的内部自动发现事件来工作。配置提供程序时,您可以选择使用自动发现事件中的字段来设置满足条件时启动特定配置的条件。
一开始,Filebeat将扫描现有容器并为它们启动适当的配置。然后它将观察新的开始/停止事件。这可以确保您不必担心状态,而只需定义您想要的配置。
Docker
Docker自动发现提供程序监视Docker容器的启动和停止。这些是每个事件的可用字段:
- host
- port
- docker.container.id
- docker.container.image
- docker.container.name
- docker.container.labels
例如:
# cat autodiscover-docker.yaml
filebeat.autodiscover:
providers:
- type: docker
labels.dedot: true
templates:
- condition:
contains:
docker.container.name: echo2
config:
- type: docker
containers.ids:
- "${data.docker.container.id}"
stream: "stderr" #读入指定的流:all, stdout or stderr. The default is all
#include_lines: ["^ERROR"] # 只包括的行
#exclude_lines: ["^\\s+[\\-`('.|_]"] # 排除的行
output.file:
path: "/tmp/filebeat"
filename: autodiscover-docker.log
注:容器往终端输出日志,最好区分类型:一般日志输出到stdout中,错误日志输出到stderr中。这样的好处是:当我们需要过滤错误日志的时候,只要设置:stream: "stderr" ,就可以过滤出所有错误日志;这样比include_lines更加准确。
Kubernetes
Kubernetes自动发现提供商监视Kubernetes pods的启动,更新和停止。这些是每个事件的可用字段:
- host
- port (if exposed)
- kubernetes.container.id
- kubernetes.container.image
- kubernetes.container.name
- kubernetes.labels
- kubernetes.namespace
- kubernetes.node.name
- kubernetes.pod.name
- kubernetes.pod.uid
例如:
filebeat.autodiscover:
providers:
- type: kubernetes
templates:
- condition:
equals:
kubernetes.namespace: kube-system
config:
- type: docker
containers.ids:
- "${data.kubernetes.container.id}"
exclude_lines: ["^\\s+[\\-`('.|_]"] # drop asciiart lines
Filebeat支持基于提供程序提示的自动发现:提示系统在Kubernetes Pod annotations 或具有前缀的Docker labels中查找提示co.elastic.logs
。一旦容器启动,Filebeat将检查它是否包含任何提示并为其启动正确的配置。提示告诉Filebeat如何获取给定容器的日志。默认情况下,将使用docker
输入从容器中检索日志。参考:Filebeat支持基于提供程序提示的自动发现
参考:
https://www.elastic.co/guide/en/beats/filebeat/master/configuration-autodiscover.html
建议以Docker或者k8s POD方法运行filebeat:
kubernetes: https://www.elastic.co/guide/en/beats/filebeat/7.0/running-on-kubernetes.html
Docker:https://www.elastic.co/guide/en/beats/filebeat/7.0/running-on-docker.html
在k8s以Pod方式运行filebeat: https://www.blog-wuchen.cn/2018/10/22/FileBeat-k8s.html
转载:https://blog.csdn.net/kozazyh/article/details/89289647