美文网首页
2.Beats 配置文件格式

2.Beats 配置文件格式

作者: 歌哥居士 | 来源:发表于2019-04-20 22:52 被阅读0次

概述

Beats配置文件采用YAML格式。

  • 同级(同一个父级)的配置缩进级别相同。
  • 字典,格式为key: value:后面加个空格。
person:
  name: Baozi
  age: 22
  • 列表,以-开头,后面加个空格。
colors:
  - Red
  - Green
  - Blue
  • 缩写的列表和字典类似JSON,{}表示字典,[]表示列表。
person: {name: "Baozi", age: 22}
colors: ["Red", "Green", "Blue"]
  • Beats配置由字典和列表组成,一个Filebeat配置示例,为了帮助理解,我把几种形式都写了出来:
filebeat:
  inputs:
    - type: log
      paths:
        - /var/log/*.log
      multiline:
        pattern: '^['
        match: after

filebeat.inputs:
- type: log
  paths: ["/var/log/*.log"]
  multiline.pattern: '^['
  multiline.match: after


filebeat.inputs:
- type: log
  paths:
    - /var/log/system.log
    - /var/log/wifi.log
- type: log
  paths:
    - "/var/log/apache2/*"
  fields:
    apache: true
  fields_under_root: true

命名空间

官网解释有点拗口,按我的理解简单解释下:读配置文件时,根据配置全路径,解析成命名空间,为折叠格式

  • 直接看示例:
output:
  elasticsearch:
    index: 'beat-%{[beat.version]}-%{+yyyy.MM.dd}'

会被解析成:output.elasticsearch.index: 'beat-%{[beat.version]}-%{+yyyy.MM.dd}',这就是所谓的命名空间折叠格式啦。

  • 解析列表时,下标从0开始:
filebeat:
  inputs:
    - type: log

会被解析成: filebeat.inputs.0.type: log

  • 配置时可以直接使用折叠格式,和按照缩进等级的一起使用。
filebeat.inputs:
- type: log
  paths: ["/var/log/*.log"]
  multiline.pattern: '^['
  multiline.match: after

output.elasticsearch.hosts: ["http://localhost:9200"]

数据类型

  • Boolean

    true|yes|on、false|no|off
enabled: true
disabled: false
  • Number

    不加引号的数字
integer: 123
negative: -1
float: 5.4
  • String

    支持双引号、单引号、无引号。

    双引号,\会被用来转义。

    单引号,\不会被用来转义。

    无引号,不要使用在YAML中具有特殊含义的符号。

    正则表达式,特殊字符串,在加载时被编译成正则表达式。定义正则表达式时建议使用单引号的形式,因为这时\不会用来转义。

  • Duration

    数值为整数或小数。

    单位为ns(纳秒),us(微秒),ms(毫秒), s(秒), m(分), h(小时)

    有时使用0或负数表示禁用。

duration1: 2.5s
duration2: 6h
duration_disabled: -1s

环境变量

  • ${ 环境变量 }:引用环境变量,如果没有就会替换成空字符串。
  • ${ 变量:默认值 }:引用环境变量,如果没有就使用默认值。
  • ${ 变量:?错误提示 }:引用环境变量,如果没有就返回自定义的错误信息。
  • 如果你需要在配置文件中使用${,可以用$${来表示。
  • 更新环境变量后需要重启Beats,因为解析YAML之前就会将这些变量替换为实际值,而不是实时解析变量。
  • 命令行启动时可以使用—E指定或覆盖环境变量。
  • 引用环境变量示例:
环境变量 示例 结果
export NAME=elastic name: ${NAME} name: elastic
没有设置 name: ${NAME} name:
export NAME=elastic name: ${NAME:beats} name: elastic
没有设置 name: ${NAME:beats} name: beats
export NAME=elastic name: ${NAME:?你需要设置环境变量} 没有。返回自定义的错误信息。
没有设置 name: ${NAME:?你需要设置环境变量} name: elastic
  • 引用复杂环境变量:

定义复杂变量

export ES_HOSTS="10.45.3.2:9220,10.45.3.1:9230"

引用

output.elasticsearch:
  hosts: '${ES_HOSTS}'

引用变量

  • 引用变量可以将多个变量组合成一个,又或者重用相同的变量。
  • 与引用环境变量语法相同。
  • 只能引用折叠格式的设置名称。
  • 示例:
filebeat.registry: ${path.data}/registry
es.host: '${ES_HOST:localhost}'

output.elasticsearch:
  hosts: ['http://${es.host}:9200']

重复配置的情况

namespace1:
  subnamespace:
    host: localhost
    sleep: 1s

namespace2:
  subnamespace:
    host: localhost
    sleep: 1s


可以被重写为:

namespace1: ${shared}
namespace2: ${shared}

shared:
  subnamespace:
    host: localhost
    sleep: 1s

一些提示

  • 使用空格而不是制表符缩进。一般每个缩进等级使用2个空格。
  • Beats提供了示例配置文件,可以作为很好的参考。
  • 可以使用test config检查配置文件格式是否正确:所用的beat的名称 test config -c beat名称.yml
  • 正则表达式最好使用单引号包围起来。
  • 路径最好也用单引号,尤其是Windows的路径。
  • 避免在数字前加0(09)。加0开头,如果是有效8进制会转为整数,否则转为浮点数,避免这种问题就是不加0开头或使用单引号。

相关文章

网友评论

      本文标题:2.Beats 配置文件格式

      本文链接:https://www.haomeiwen.com/subject/fsergqtx.html