You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows10环境下使用Fluentd向Elasticsearch发送JSON日志配置求助

Fluentd 可用配置示例

你原有配置的核心问题如下:

  1. tag *配置不符合匹配规则,需要指定明确的标签用于后续路由
  2. index_name写入时不能使用通配符*,需配置为动态带时间的索引名
  3. ES 7+版本已废弃type_name配置,保留会导致写入报错
  4. Windows路径需确保Fluentd进程对日志目录有读写权限,pos文件可正常生成

修复后的配置如下:

<source>
  @type tail
  path C:/Projects/log.json
  pos_file C:/Projects/log.json.pos
  tag app.api.log
  format json
  time_key @timestamp
  keep_time_key true # 保留日志原有@timestamp字段,不覆盖
</source>

<match app.api.log>
  @type elasticsearch
  host localhost
  port 9200
  # 按天分索引,可按需调整时间格式
  index_name appname-api-%Y%m%d
  logstash_format false
  flush_interval 1s
  # 如果ES有账号密码,取消注释下面两行填写对应信息
  # user elastic
  # password your_es_password
</match>

Filebeat 替代方案配置

对单文件采集直传ES的场景,Filebeat配置更轻量,出错概率更低,可用配置如下:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - C:\Projects\log.json
  json.keys_under_root: true # 把json字段展开到根层级
  json.overwrite_keys: true
  json.add_error_key: true

output.elasticsearch:
  hosts: ["http://localhost:9200"]
  index: "appname-api-%{+yyyyMMdd}"
  # 有认证的话补充下面配置
  # username: "elastic"
  # password: "your_es_password"

setup.ilm.enabled: false
setup.template.enabled: false

使用Filebeat无需额外配置pos文件,程序会自动维护采集位点,同时对Windows系统的兼容性更好。


通用排查注意点

  • 确认Docker容器的ES 9200端口已正确映射到Windows本地9200端口,无端口占用
  • 若ES开启了跨域配置,需确保允许本地地址访问
  • 可查看采集工具的运行日志,定位是日志读取权限问题还是ES连接/写入问题

内容的提问来源于stack exchange,提问作者walruz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:24:00