【问题标题】:Unable to start Filebeat due to YAML config issue由于 YAML 配置问题,无法启动 Filebeat
【发布时间】:2015-12-29 15:18:08
【问题描述】:

我是 filebeat 的新手,由于 .yml 配置问题而无法启动。我正在使用 Win7 专业版。

我已经配置了默认的简单配置:

filebeat:
 prospectors:
  -
   paths:
    - "e:\Applications\Apache Tomcat 8.0.9\logs\localhost_access_log.*.txt"
    - "e:\Applications\Apache Tomcat 8.0.9\logs\*.log"
   input_type: log

配置中没有选项卡。经 PSPad 验证。

并且取决于行尾我收到以下错误:

使用 DOS:

加载配置文件错误:在 apache.yml 上 YAML 配置解析失败: yaml:第 4 行:发现未知的转义字符。退出。

使用 UNIX:

加载配置文件错误:在 apache.yml 上 YAML 配置解析失败: yaml:第 3 行:找不到预期的“:”。退出。

【问题讨论】:

    标签: yaml


    【解决方案1】:

    发生“未知转义字符”错误是因为\A 被解释为带引号的标量中的转义字符。最简单的解决方案是去掉引号,因为这里不需要它们(它们通常不在 YAML 中):

    filebeat:
     prospectors:
     - paths:
       - e:\Applications\Apache Tomcat 8.0.9\logs\localhost_access_log.*.txt
       - e:\Applications\Apache Tomcat 8.0.9\logs\*.log
       input_type: log
    

    或者,您可以使用另一个反斜杠来转义反斜杠:

    filebeat:
     prospectors:
     - paths:
       - "e:\\Applications\\Apache Tomcat 8.0.9\\logs\\localhost_access_log.*.txt"
       - "e:\\Applications\\Apache Tomcat 8.0.9\\logs\\*.log"
       input_type: log
    

    【讨论】:

    • 非常感谢!这有帮助!
    【解决方案2】:

    正如Jordan 指出的那样,这是由反斜杠被解释为转义序列引起的。

    有两种可能的解决方法:

    1) 引用并转义每个反斜杠:

    - "e:\\Applications\\Apache Tomcat 8.0.9\\logs\\*.log"
    

    2) 去掉引号(但不是说这在配置参数需要字符串列表时不起作用)

    - e:\Applications\Apache Tomcat 8.0.9\logs\*.log
    

    如果配置参数需要列表格式[],如certificate_authorities,那么您必须使用解决方法#1。

    certificate_authorities: ["C:\\certs\\filebeat.crt"] 
    

    另见https://github.com/elastic/beats/issues/1495

    【讨论】:

    • 您对“列表格式”的评论没有任何意义。由[...](“流”序列)表示的列表和由以-(“块”序列)开头的行表示的列表被反序列化为完全相同的结构。任何可以流式表示的列表都可以用块式表示,并且没有工具会“要求”一个在另一个之上(因为它们反序列化为相同的东西)。看一看:yaml-online-parser.appspot.com/…
    猜你喜欢
    • 2013-05-01
    • 1970-01-01
    • 2019-12-02
    • 2022-01-12
    • 2023-02-11
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多