由于YAML配置问题而无法启动Filebeat

Red*_* SK 3 yaml

我是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
Run Code Online (Sandbox Code Playgroud)

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

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

使用DOS:

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

使用UNIX:

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

Jor*_*ing 7

发生“未知的转义字符”错误是因为\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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)


Pha*_*eek 5

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

有两种可能的解决方法:

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

- "e:\\Applications\\Apache Tomcat 8.0.9\\logs\\*.log"
Run Code Online (Sandbox Code Playgroud)

2)删除引号(但不是当配置参数需要字符串列表时这不起作用)

- e:\Applications\Apache Tomcat 8.0.9\logs\*.log
Run Code Online (Sandbox Code Playgroud)

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

certificate_authorities: ["C:\\certs\\filebeat.crt"] 
Run Code Online (Sandbox Code Playgroud)

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