Filebeat7.7.1 Docker配置

在现代的应用开发中,日志记录是非常重要的。它可以帮助我们了解应用程序的运行情况、故障排除和性能优化。Filebeat是一个轻量级的开源日志文件数据收集器,可以将日志从多个来源发送到Elasticsearch、Logstash或Kafka等后端。

在本篇文章中,我们将学习如何在Docker环境中配置和使用Filebeat7.7.1。

步骤1:准备工作

在开始之前,我们需要确保已经安装了Docker和Docker Compose。如果还没有安装,请参考官方文档进行安装。

步骤2:创建Docker Compose文件

在项目的根目录下创建一个名为docker-compose.yml的文件,并添加以下内容:

version: "3"
services:
  filebeat:
    image: docker.elastic.co/beats/filebeat:7.7.1
    volumes:
      - ./filebeat.yml:/usr/share/filebeat/filebeat.yml
      - /var/lib/docker/containers:/var/lib/docker/containers:ro
      - /var/run/docker.sock:/var/run/docker.sock
    restart: always

上述配置文件定义了一个名为filebeat的服务,使用了Elastic官方提供的Filebeat镜像。我们将在后续步骤中配置Filebeat的具体行为。

步骤3:创建Filebeat配置文件

在项目的根目录下创建一个名为filebeat.yml的文件,并添加以下内容:

filebeat.inputs:
- type: log
  paths:
    - /var/lib/docker/containers/*/*.log

output.elasticsearch:
  hosts: ["elasticsearch:9200"]

上述配置文件定义了一个日志输入和一个Elasticsearch输出。我们使用/var/lib/docker/containers/*/*.log作为日志输入路径,它将收集所有Docker容器的日志文件。

步骤4:启动Filebeat容器

使用以下命令启动Filebeat容器:

docker-compose up -d

这将启动一个后台运行的Filebeat容器,并开始收集日志。

步骤5:验证配置

要验证Filebeat是否正常工作,可以使用以下命令查看Filebeat的日志输出:

docker-compose logs -f filebeat

如果一切正常,你将看到类似下面的输出:

2020-06-25T10:12:30.123Z	INFO	instance/beat.go:610	Home path: [/usr/share/filebeat] Config path: [/usr/share/filebeat] Data path: [/usr/share/filebeat/data] Logs path: [/usr/share/filebeat/logs]
2020-06-25T10:12:30.124Z	INFO	instance/beat.go:618	 Beat ID: 12345678-1234-1234-1234-1234567890ab
2020-06-25T10:12:30.124Z	INFO	[api]	api/server.go:62	Starting stats endpoint
2020-06-25T10:12:30.125Z	INFO	[api]	api/server.go:64	Metrics endpoint listening on: 127.0.0.1:5066
2020-06-25T10:12:30.125Z	INFO	[beat]	instance/beat.go:941	Process info	{"system_info": {"process": {"capabilities": {"inheritable":null,"permitted":null,"effective":null,"bounding":null,"ambient":null,"added":[],"removed":[]},"cwd":"/usr/share/filebeat","exe":"/usr/share/filebeat/filebeat","name":"filebeat","pid":1,"ppid":0,"seccomp":null,"start_time":"2020-06-25T10:12:29.070Z"}}}
2020-06-25T10:12:30.125Z	INFO	instance/beat.go:297	Setup Beat: filebeat; Version: 7.7.1
2020-06-25T10:12:30.125Z	INFO	[index-management]	idxmgmt/std.go:184	Set output.elasticsearch.index to 'filebeat-7.7.1' as ILM is enabled.
2020-06-25T10:12:30.125Z	INFO	eslegclient/connection.go:97	elasticsearch url: http://elasticsearch:9200
...

总结

通过Docker容器运行Filebeat是非常方便和灵活的。我们通过一个简单