'datatype'에 해당하는 글 1건

Plugin parameter

Tool/Fluentd 2017. 4. 12. 23:29

각 Fluentd 플러그인에는 일련의 파라미터가 있다.

예를 들어, in_tail 플러그인에는 rotate_wait 및 pos_file 과 같은 파라미터가 있다. 

각 파라미터에는 연관된 특정 타입이 있으며, 각 다음과 같이 정의된다 :



파라미터 데이터 타입


string

필드가 문자열로 분석된다. 이것은 가장 일반적인 타입으로 각 플러그인이 문자열 처리 방법을 결정한다.

문자열에는 인용되지 않은 한 줄의 문자열, 따옴표(')로 인용된 문자열, 쌍따옴표(")로 인용된 문자열 등으로 구분할 수 있다.


integer

필드가 정수로 분석된다.


float

필드가 부동소숫점으로 분석된다.


size

필드가 바이트 수로 분석되며 몇 가지 표기법이 있다.

- 값이 <INTEGER>k 또는 <INTEGER>K 와 일치하면, 값은 INTEGER(KByte) 이다.

- 값이 <INTEGER>m 또는 <INTEGER>M 과 일치하면, 값은 INTEGER(MByte) 이다.

- 값이 <INTEGER>g 또는 <INTEGER>G 와 일치하면, 값은 INTEGER(GByte) 이다.

- 값이 <INTEGER>t 또는 <INTEGER>T 와 일치하면, 값은 INTEGER(TByte) 이다.

- 나머지는 byte 수이다.


time

필드가 시간으로 분석된다.

- 값이 <INTEGER>s 와 일치하면, 값은 INTEGER(초) 이다.

- 값이 <INTEGER>m 과 일치하면, 값은 INTEGER(분) 이다.

- 값이 <INTEGER>h 와 일치하면, 값은 INTEGER(시) 이다.

- 값이 <INTEGER>d 와 일치하면, 값은 INTEGER(일) 이다.

- 나머지는 float 로 분석되며 float 는 초단위의 수이다. 이 옵션은 "0.1"(=0.1초 = 100ms) 와 같이 1초 미만의 시간을 지정하는 데 유용하다.


array

필드가 JSON 배열로 분석된다.


hash

필드가 JSON 객체로 분석된다.


거의 모든 프로그래밍 언어 및 인프라 도구에서 JSON 값을 쉽게 생성할 수 있기 때문에 array 및 hash 타입은 JSON 형식이다.



플러그인의 공통 파라미터


아래 파라미터들은 시스템 예약어이며, @ 접두사를 가진다.


- @type : 플러그인 타입 지정.

- @id : 플러그인 id 지정. in_monitor_agent 는 plugin_id 필드에 이 값을 사용한다.

- @label : label 기호 지정.

- @log_level : 플러그인 별 로그 수준 지정.


type, id, log_level 은 이전 버전과 호환된다.



Multiple line 


쌍따옴표(") 부호가 있는 string, array, hash 값에 대해 다중 행을 쓸 수 있다.


str_param "foo  # This line is converted to "foo\nbar". NL is kept in the parameter bar"
array_param [
  "a""b"
]
hash_param {
  "k":"v",
  "k1":10
}
cs


Fluentd 는 [ 또는 { 가 array / hash 의 시작으로 판단한다.

따라서 [ 또는 { 시작되었지만 non-json 파라미터를 설정하려면 ' 또는 " 을 사용하라.


예제1: mail 플러그인


<match **>
  @type mail
  subject "[CRITICAL] foo's alert system"
</match>
cs


예제2: map 플러그인


<match tag>
  @type map
  map '[["code." + tag, time, { "code" => record["code"].to_i}], ["time." + tag, time, { "time" => record["time"].to_i}]]'
  multi true
</match>
cs



Ruby 코드 포함


" 인용 부호 string 에서 #{} 부호로 Ruby 코드를 삽입할 수 있다.

이것은 호스트 이름 같은 컴퓨터 정보를 설정하는 데 유용하다.


host_param "#{Socket.gethostname}" # host_param is actual hostname like `webserver1`.
env_param "foo-#{ENV["FOO_BAR"]}" # NOTE that foo-"#{ENV["FOO_BAR"]}" doesn't work.
cs


config-xxx 혼합 형식은 "#{}" 이 아닌 "${}" 을 사용한다.


큰 따옴표로 묶인 string 에서 \는 이스케이프 문자이다.

\는 이스케이프 문자로 해석된다.

큰 따옴표로 묶인 string 에서 \, \r, \n, \t, \ 등에는 \ 를 붙여야 한다.




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,