filebeat修改自带modules模版

Filebeat针对流行应用集成了大量的module,方便直接拿来使用收集日志比如

[root@ecs-nginx2 ingest]# filebeat modules list
Enabled:
nginx

Disabled:
activemq
apache
auditd
aws
awsfargate
azure
barracuda
bluecoat
cef
checkpoint
cisco
coredns
crowdstrike
cyberark
cyberarkpas
cylance
elasticsearch
envoyproxy
f5
fortinet
gcp
google_workspace
googlecloud
gsuite
haproxy
ibmmq
icinga
iis
imperva
infoblox
iptables
juniper
kafka
kibana
logstash
microsoft
misp
mongodb
mssql
mysql
mysqlenterprise
nats
netflow
netscout
o365
okta
oracle
osquery
panw
pensando
postgresql
proofpoint
rabbitmq
radware
redis
santa
snort
snyk
sonicwall
sophos
squid
suricata
system
threatintel
tomcat
traefik
zeek
zookeeper
zoom
zscaler

这里可以看到支持的module和已经启用的module,但是有时候默认的模版不能完全满足需求,就得自己修改达到需要,比如我已经自定义了nginx-access.log的日志输出格式为如下,按默认模版会无法解析

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"'
                      ' "$upstream_addr" "$upstream_response_time" "$request_time" "$http_host"';

如果使用yum或者rpm安装的filebeat,module的路径在/usr/share/filebeat/module/下,以我当前需要修改的nginx的access日志为例路径是/usr/share/filebeat/module/nginx/access/ingest/pipeline.yml

将grok字段改为这样,可以对应上修改后的日志

- grok:
    field: event.original
    patterns:
    - (%{NGINX_HOST} )?"?(?:%{NGINX_ADDRESS_LIST:nginx.access.remote_ip_list}|%{NOTSPACE:source.address})
      - (-|%{DATA:user.name}) \[%{HTTPDATE:nginx.access.time}\] "%{DATA:nginx.access.info}"
      %{NUMBER:http.response.status_code:long} %{NUMBER:http.response.body.bytes:long}
      "(-|%{DATA:http.request.referrer})" "(-|%{DATA:user_agent.original})" "(-|%{DATA:nginx.access.xff})" "(-|%{DATA:nginx.access.upstream_addr})" "%{NUMBER:nginx.access.upstream_response_time:float}" "%{NUMBER:nginx.access.request_time:float}" "%{DATA:nginx.access.http_host}"

192.168.0.10 - - [18/Nov/2022:03:50:50 +0800] "GET /a/b/c.png HTTP/1.1" 200 93094 "-" "Zabbix" "111.111.111.111" "192.168.0.104:9999" "0.001" "0.008" "a.b.com"

修改完成后在module已经启用的情况下使用命令filebeat setup --pipelines --modules=nginx进行在线更新

如果第一次启用module,使用命令filebeat modules enable nginx

<think>好的,我现在需要帮助用户理解Filebeat中的`filebeat.config.modules`配置。用户之前询问了关于双节点四台服务器部署Filebeat到Kafka的问题,现在他们接着问到了`filebeat.config.modules`,这可能意味着他们想进一步了解如何配置模块或者优化日志收集。 首先,我应该回忆一下Filebeat模块的作用。模块是预设的配置集,用于快速集成常见的日志类型,比如Nginx、MySQL、系统日志等。用户可能希望知道如何启用这些模块,或者是否需要在配置文件中使用这个参数。 接下来,我需要确定`filebeat.config.modules`的具体用法。根据官方文档,这个配置项是用来指定模块的配置文件路径的,通常默认情况下Filebeat会从`modules.d`目录加载模块配置。用户可能想知道如何手动配置这个参数,或者是否需要修改它。 然后,考虑用户的实际使用场景。用户之前配置了Filebeat推送日志到Kafka,可能现在需要收集特定服务的日志,比如Nginx或MySQL。这时候,使用模块可以简化配置,用户可能想了解如何启用这些模块,并确保它们与现有的Kafka输出配置兼容。 需要解释模块的基本结构,包括输入配置、处理器和仪表板等。同时,用户可能关心是否需要每个服务器都配置模块,特别是如果他们的四台服务器有不同的角色(比如有的运行Web服务,有的运行数据库),可能需要不同的模块配置。 还要注意用户可能的误区,比如是否必须使用模块,或者模块和自定义配置之间的关系。需要说明模块是可选功能,用户可以根据需求选择使用模块还是手动配置。 此外,用户可能想知道如何启用和禁用模块,以及如何验证模块是否正确加载。可能需要提供具体的命令示例,比如`filebeat modules enable nginx`和如何编辑模块的配置文件。 最后,确保回答清晰,结构合理,涵盖模块的作用、配置方法、使用场景以及注意事项。可能需要举几个常用模块的例子,帮助用户更好地理解如何应用在他们的环境中。</think>在 Filebeat 中,`filebeat.config.modules` 是用于配置和管理 **Filebeat 模块(Modules)** 的核心参数。模块是 Filebeat 提供的一种预设集成方案,目的是快速收集、解析和可视化特定服务(如 Nginx、MySQL、Redis 等)的日志,而无需手动编写复杂的配置。 --- ### **1. 模块的作用** Filebeat 模块通过预定义的配置模板,自动完成以下任务: - **日志采集**:指定服务的默认日志路径(如 Nginx 的 `/var/log/nginx/access.log`)。 - **字段解析**:通过 Ingest Pipeline 或 processors 提取结构化字段(如 HTTP 状态码、数据库查询时间)。 - **仪表板集成**:生成 Kibana 仪表板(需配合 Elasticsearch 和 Kibana 使用)。 --- ### **2. 模块的配置方式** 默认情况下,Filebeat 的模块配置文件存储在 `/etc/filebeat/modules.d/` 目录下(路径可能因系统而异)。每个模块对应一个 YAML 文件(如 `nginx.yml`、`mysql.yml`)。 #### **启用/禁用模块** - **命令行操作**: ```bash # 启用模块(例如 Nginxfilebeat modules enable nginx # 禁用模块 filebeat modules disable nginx ``` 此命令会修改 `/etc/filebeat/modules.d/nginx.yml` 中的 `enabled: true/false`。 - **手动修改配置文件**: ```yaml # /etc/filebeat/modules.d/nginx.yml - module: nginx access: enabled: true var.paths: ["/var/log/nginx/access.log*"] error: enabled: true var.paths: ["/var/log/nginx/error.log*"] ``` --- ### **3. `filebeat.config.modules` 参数详解** 在 `filebeat.yml` 主配置文件中,`filebeat.config.modules` 用于控制模块的加载行为: ```yaml filebeat.config.modules: path: ${path.config}/modules.d/*.yml # 默认加载 modules.d 目录下所有模块配置 reload.enabled: true # 允许动态重载配置(无需重启) reload.period: 10s # 每隔 10 秒检查配置变更 ``` #### **常见场景** - **自定义模块路径**:如果模块配置不在默认目录,可修改 `path`: ```yaml filebeat.config.modules: path: /opt/custom_modules/*.yml ``` - **禁用动态重载**:生产环境中为提高稳定性,可关闭动态加载: ```yaml filebeat.config.modules: reload.enabled: false ``` --- ### **4. 模块与 Kafka 输出的结合** 如果目标是推送日志到 Kafka(而非 Elasticsearch),模块仍可用于**日志解析**,但需注意: 1. **禁用 Elasticsearch 输出**:确保 `output.elasticsearch` 未启用。 2. **启用 Kafka 输出**:在 `filebeat.yml` 中配置 `output.kafka`(如你之前的配置)。 3. **模块的解析结果会保留在日志事件中**,最终以 JSON 格式发送到 Kafka。 --- ### **5. 示例:使用 Nginx 模块 + Kafka 输出** ```yaml # filebeat.yml filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: false # 生产环境建议关闭动态重载 output.kafka: hosts: ["kafka:9092"] topic: "nginx_logs" codec.json: pretty: false ``` ```yaml # modules.d/nginx.yml - module: nginx access: enabled: true var.paths: ["/var/log/nginx/access.log*"] error: enabled: true var.paths: ["/var/log/nginx/error.log*"] ``` --- ### **6. 注意事项** - **模块覆盖范围**:Filebeat 官方支持 [70+ 种模块](https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-modules.html),涵盖常见服务。 - **自定义解析规则**:若默认解析不满足需求,可通过 `processors` 或自定义 Ingest Pipeline 扩展。 - **资源占用**:启用多个模块可能增加 CPU/内存消耗(尤其是日志量较大时)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值