Filebeat是Elastic Stack生态中的轻量级日志托运人(log shipper),专为在资源受限环境中高效收集、转发日志数据而设计。作为Docker镜像,它可快速部署于容器化环境,实现对物理机、虚拟机或容器日志的统一采集,并将数据可靠传输至Elasticsearch、Logstash、Kafka等后端系统,支持日志集中存储、分析与可视化。
filebeat.yml自定义日志路径、过滤规则、标签及元数据/var/log/syslog、/var/log/auth.log),实时监控系统状态与异常行为filebeat.yml),用于定义日志输入源与输出目标(配置示例见下文)Filebeat需通过配置文件指定输入与输出,建议将本地filebeat.yml挂载至容器内:
bashdocker run -d \ --name filebeat \ -v /path/to/your/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro \ -v /var/log:/var/log:ro \ # 挂载主机日志目录(只读) -v /path/to/filebeat-data:/usr/share/filebeat/data \ # 持久化状态数据(避免重复收集) docker.elastic.co/beats/filebeat:8.11.3 # 使用***镜像,版本号可替换
说明:
filebeat.yml需设置权限为chmod 600(容器内Filebeat用户ID为1000)/var/log挂载为只读(:ro),防止容器修改主机日志文件
结合Elasticsearch与Kibana的完整部署示例(docker-compose.yml):
yamlversion: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:8.11.3 environment: - discovery.type=single-node - xpack.security.enabled=false ports: - "9200:9200" networks: - elastic kibana: image: docker.elastic.co/kibana/kibana:8.11.3 ports: - "5601:5601" environment: - ELASTICSEARCH_HOSTS=[***] depends_on: - elasticsearch networks: - elastic filebeat: image: docker.elastic.co/beats/filebeat:8.11.3 volumes: - ./filebeat.yml:/usr/share/filebeat/filebeat.yml:ro - /var/log:/var/log:ro - /var/lib/docker/containers:/var/lib/docker/containers:ro # 收集Docker容器日志 - /var/run/docker.sock:/var/run/docker.sock:ro # 获取容器元数据 - filebeat-data:/usr/share/filebeat/data # 持久化状态数据 user: root # 需root权限访问Docker sock及部分日志文件 depends_on: - elasticsearch networks: - elastic networks: elastic: driver: bridge volumes: filebeat-data: # 命名卷,持久化Filebeat状态数据
核心配置项示例(输出至Elasticsearch):
yamlfilebeat.inputs: - type: log # 日志输入类型 paths: - /var/log/*.log # 收集/var/log下所有.log文件 - /var/log/nginx/access.log # 收集Nginx访问日志(需额外挂载对应目录) tags: ["server-logs"] # 添加标签,便于后续过滤 fields: # 自定义字段,丰富日志元数据 service: "web-server" output.elasticsearch: hosts: ["elasticsearch:9200"] # Elasticsearch地址(与docker-compose网络一致) index: "filebeat-%{+yyyy.MM.dd}" # 按日期生成索引 setup.kibana: host: "kibana:5601" # Kibana地址,用于导入默认仪表板 setup.dashboards.enabled: true # 自动导入Filebeat默认仪表板
可通过环境变量动态调整配置(需在filebeat.yml中引用):
| 环境变量 | 说明 | 示例值 |
|---|---|---|
ELASTICSEARCH_HOSTS | Elasticsearch服务地址 | [***] |
LOG_LEVEL | 日志级别(debug/info/warn/error) | info |
INDEX_NAME | 自定义索引名称 | custom-filebeat-index |
在filebeat.yml中引用环境变量示例:
yamloutput.elasticsearch: hosts: ["${ELASTICSEARCH_HOSTS}"] index: "${INDEX_NAME}-%{+yyyy.MM.dd}" logging.level: "${LOG_LEVEL:info}" # 默认为info级别
启动前可通过以下命令验证配置文件有效性:
bashdocker run --rm \ -v /path/to/your/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro \ docker.elastic.co/beats/filebeat:8.11.3 \ test config -c /usr/share/filebeat/filebeat.yml
root用户运行(或添加CAP_DAC_READ_SEARCH权限)以访问日志文件与Docker sock--memory=512m --cpus=0.5),防止资源占用过高output.elasticsearch.username与password配置认证信息来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429