首页 > 其他 > 详细

配置文件格式(三)

时间:2019-02-28 15:52:19      阅读:170      评论:0      收藏:0      [点我收藏+]
一、YAML格式简介
Beats的配置文件基于YAML,这种文件格式比XML和JSON等常用的数据格式更容易读写。
在Beats中所有的YAML文件都以字典开始,一个无序的键值对。除了字典,YAML还支持列表、数值、字符串和其他的数据类型。相同列表或字典的所有成员必须有相同的缩进级别。

1、字典由具有相同缩进级别的key:value组成,冒号后面必须有一个空格
3
 
1
name: John Doe
2
age: 34
3
country: Canada

2、列表由“-”表示,所有的列表成员在相同缩进级别由“-”开始
3
 
1
- Red
2
- Green
3
- Blue

3、beats中使用列表和字典来构建结构化配置
8
 
1
filebeat:
2
  inputs:
3
    - type: log
4
      paths:
5
        - /var/log/*.log
6
      multiline:
7
        pattern: ‘^[‘
8
        match: after

4、列表和字典也可以用缩写的方式表示,缩写方式有点类似于JSON格式,字典使用{},列表使用[]
2
 
1
person: {name: "John Doe", age: 34, country: "Canada"}
2
colors: ["Red", "Green", "Blue"]

二、Namespacing

1、所有的设置都使用字典和列表。读取配置文件时,通过使用设置名称及其父结构的名称的完整路径,这些设置将被压缩到名称设置中。如:
3
 
1
output:
2
  elasticsearch:
3
    index: ‘beat-%{[beat.version]}-%{+yyyy.MM.dd}‘
将被压缩成: output.elasticsearch.index: ‘beat-%{[beat.version]}-%{+yyyy.MM.dd}‘     全名涉及到所有的父级结构

2、列表创建的时候以0开始
x
 
1
filebeat:
2
  inputs:
3
    - type: log
将被压缩为:filebeat.inputs.0.type: log

不仅可以以缩进的方式,也可以以折叠的方式

三、配置文件的数据类型

配置文件中的设置的值将被转换为beats所需的值,如果设置的值的类型不是配置文件所要求的值类型,那么启动将会报错。

1、Boolean
1
 
1
enabled: true
2
disabled: false

2、Number
1
 
1
integer: 123
2
negative: -1
3
float: 5.4

3、String
在YAML中,字符串支持多种格式,双引号(“ ”)、单引号(’ ‘)、无引号()

4、Duration  
时间必须带有单位,如ns, us, ms, s, m, h
1
 
1
duration1: 2.5s
2
duration2: 6h
3
duration_disabled: -1s

5、正则表达式
因为在YAML和正则表达式中使用"\"进行字符串的转义,因此建议在使用正则表达式的时候使用单引号字符串,当使用单引号字符串的时候\不会被转义

6、格式串(打印的格式)
1
 
1
constant-format-string: ‘constant string‘
2
field-format-string: ‘%{[fieldname]} string‘
3
format-string-with-date: ‘%{[fieldname]}-%{+yyyy.MM.dd}‘

四、环境变量
1、可以在配置文件中引用环境变量,设置为在运行期间需要用到的值;如
1
 
1
${VAR}
var是环境变量的名称

2、当启动时,变量的值将会被环境变量的值替换。除非指定默认值或自定义错误文本,否则会被当做空字符串处理
指定默认值:
1
 
1
${VAR:default_value}

指定自定义错误文本
1
 
1
${VAR:?error_text}

例子:
技术分享图片


4、在环境变量中指定复杂的变量
可以使用类似JSON的语法使用复杂的变量,如字典、列表;如:
1
 
1
ES_HOSTS="10.45.3.2:9220,10.45.3.1:9230"
1
 
1
output.elasticsearch:
2
  hosts: ‘${ES_HOSTS}‘

五、引用变量

1、Beats中设置可以引用其他设置,将多个可选的自定义值拼接到新值中,如Filebeat默认的注册表文件为:
1
 
1
filebeat.registry: ${path.data}/registry
path.data是隐式设置的,可以在命令行重写,也可以在配置文件重写

2、如es.host
1
 
1
es.host: ‘${ES_HOST:localhost}‘
2
3
output.elasticsearch:
4
  hosts: [‘http://${es.host}:9200‘]

3、普通的引用,没有默认的值,没有拼接,通过其他字符串来引用完整的命名空间,如:
1
 
1
namespace1:
2
  subnamespace:
3
    host: localhost
4
    sleep: 1s
5
6
namespace2:
7
  subnamespace:
8
    host: localhost
9
    sleep: 1s
可以重写为:
1
 
1
namespace1: ${shared}
2
namespace2: ${shared}
3
4
shared:
5
  subnamespace:
6
    host: localhost
7
    sleep: 1s


六、命令行参数

使用-c指定配置文件,如果不指定则使用默认的配置文件;可以通过在启动时使用-E指定配置文件

技术分享图片

如:
配置文件里的配置如下:
1
 
1
output.elasticsearch:
2
  hosts: ["http://localhost:9200"]
3
  username: username
4
  password: password

如果在启动的时候,加上
1
 
1
-E output=‘{elasticsearch.enabled: false, console.pretty: true}‘

那么配置文件相当于:
 
1
output.elasticsearch:
2
  enabled: false
3
  hosts: ["http://localhost:9200"]
4
  username: username
5
  password: password
6
7
output.console:
8
  pretty: true

配置文件格式(三)

原文:https://www.cnblogs.com/lemon-le/p/10450731.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!