配置文件格式(三)


一、YAML格式簡介

Beats的配置文件基於YAML,這種文件格式比XML和JSON等常用的數據格式更容易讀寫。
在Beats中所有的YAML文件都以字典開始,一個無序的鍵值對。除了字典,YAML還支持列表、數值、字符串和其他的數據類型。相同列表或字典的所有成員必須有相同的縮進級別。
 
1、字典由具有相同縮進級別的key:value組成,冒號后面必須有一個空格
 
name: John Doe
age: 34
country: Canada

 

2、列表由“-”表示,所有的列表成員在相同縮進級別由“-”開始
 
- Red
- Green
- Blue

  

3、beats中使用列表和字典來構建結構化配置
 
filebeat:
  inputs:
    - type: log
      paths:
        - /var/log/*.log
      multiline:
        pattern: '^['
        match: after

  

4、列表和字典也可以用縮寫的方式表示,縮寫方式有點類似於JSON格式,字典使用{},列表使用[]
 
person: {name: "John Doe", age: 34, country: "Canada"}
colors: ["Red", "Green", "Blue"]

 

 

二、Namespacing

 
1、所有的設置都使用字典和列表。讀取配置文件時,通過使用設置名稱及其父結構的名稱的完整路徑,這些設置將被壓縮到名稱設置中。 如:
 
output:
  elasticsearch:
    index: 'beat-%{[beat.version]}-%{+yyyy.MM.dd}'

 

將被壓縮成: output.elasticsearch.index: 'beat-%{[beat.version]}-%{+yyyy.MM.dd}'     全名涉及到所有的父級結構
 
 
2、列表創建的時候以0開始
 
filebeat:
  inputs:
    - type: log

 

將被壓縮為:filebeat.inputs.0.type: log

 
不僅可以以縮進的方式,也可以以折疊的方式
 
 
 

三、配置文件的數據類型

 
配置文件中的設置的值將被轉換為beats所需的值,如果設置的值的類型不是配置文件所要求的值類型,那么啟動將會報錯。
 
1、Boolean
enabled: true
disabled: false

 

2、Number

integer: 123
negative: -1
float: 5.4

  

3、String
在YAML中,字符串支持多種格式,雙引號(“ ”)、單引號(’ ‘)、無引號()
 
4、Duration  
時間必須帶有單位,如ns, us, ms, s, m, h
duration1: 2.5s
duration2: 6h
duration_disabled: -1s

  

5、正則表達式
因為在YAML和正則表達式中使用"\"進行字符串的轉義,因此建議在使用正則表達式的時候使用單引號字符串,當使用單引號字符串的時候\不會被轉義
 
6、格式串(打印的格式)
constant-format-string: 'constant string'
field-format-string: '%{[fieldname]} string'
format-string-with-date: '%{[fieldname]}-%{+yyyy.MM.dd}'

 

 

四、環境變量

1、可以在配置文件中引用環境變量,設置為在運行期間需要用到的值;如
${VAR}

 

var是環境變量的名稱

 
2、當啟動時,變量的值將會被環境變量的值替換。除非指定默認值或自定義錯誤文本,否則會被當做空字符串處理
指定默認值:
${VAR:default_value}

 

指定自定義錯誤文本
${VAR:?error_text}

 

例子:
 
 
4、在環境變量中指定復雜的變量
 
可以使用類似JSON的語法使用復雜的變量,如字典、列表; 如:
ES_HOSTS="10.45.3.2:9220,10.45.3.1:9230"

 

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

 

 

五、引用變量

 
1、Beats中設置可以引用其他設置,將多個可選的自定義值拼接到新值中,如Filebeat默認的注冊表文件為:
filebeat.registry: ${path.data}/registry

 

path.data是隱式設置的,可以在命令行重寫,也可以在配置文件重寫

 
2、如es.host
 
es.host: '${ES_HOST:localhost}'

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

 

3、普通的引用,沒有默認的值,沒有拼接,通過其他字符串來引用完整的命名空間,如:
 
namespace1:
  subnamespace:
    host: localhost
    sleep: 1s

namespace2:
  subnamespace:
    host: localhost
    sleep: 1s

 

可以重寫為: 

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

shared:
  subnamespace:
    host: localhost
    sleep: 1s

 

 

 

六、命令行參數

 
使用-c指定配置文件,如果不指定則使用默認的配置文件;可以通過在啟動時使用-E指定配置文件
 
 
 
如:配置文件里的配置如下

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

 

如果在啟動的時候,加上
 
-E output='{elasticsearch.enabled: false, console.pretty: true}'

 

那么配置文件相當於:
 
output.elasticsearch:
  enabled: false
  hosts: ["http://localhost:9200"]
  username: username
  password: password

output.console:
  pretty: true

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM