我们的项目是将logstash的整个 .conf文件通过页面表单交互方式配置生成出来,这里放一个设计图纸
总体来讲:
一个conf文件包含三个Block(input,filter,output),每个Block由若干个具体的Plugin组成,每个Plugin包含若干个Setting
每个Setting由settingName和ValueType对应的具体值组成
具体的三大插件,这篇不做详述,参考官网,这里主要讲Value Type
上图中,每个setting需要一个具体的确定的value type,支持的value type如下
Array
[ {id => 1, name => bob}, {id => 2, name => jane} ]
看起来像java的list,又像jsonArray,不过这里是用"=>",而不是"=",这个列子中list内部是一个hash,元素间用逗号隔开,开闭是方括号[ ]
Hash
match => { "field1" => "value1" "field2" => "value2" ... } # or as a single line. No commas between entries: match => { "field1" => "value1" "field2" => "value2" }
这个例子是match这个setting的值,看起来又像java的HashMap,hash是键值对的集合,注意:键值对之间使用空格隔开,而非逗号,可以写在同一行
Number
port => 33
这个很好理解,logstash要求number是integer或float,非常明确
String
由单引号或双引号包围的字符序列
Boolean
值为true或false,注意是小写,不带引号,和java基本一致
Codec
codec => "json"
用于对数据进行encode和decode,仅在input和output插件中使用
Password,URI,Path
用的很少,其实就是一些特殊的string
Bytes
使用较少
Comments
注释,用# 号表示注释
Escape Sequences
转义字符,很好理解
:carriage return (ASCII 13) :new line (ASCII 10) :tab (ASCII 9) \:backslash (ASCII 92) ":double quote (ASCII 34) ':single quote (ASCII 39)