format
section은 match
또는 filter
section에서 사용가능하며 다음과 같이 사용한다.
<match tag.*>
@type file
# ...
<format>
# ...
</format>
</match>
foramt
section의 @type
파라미터는 formatter plugin type을 지정할 수 있다. 가령 json
이라면 다음과 같이 쓸 수 있다.
<format>
@type json
</format>
이 외의 built-in formatter plugin들은 다음과 같다.
1. out_file
2. json
3. ltsv
4. csv
5. msgpack
6. hash
7. single_value
format
section에서 사용하는 파라미터는 다음과 같다.
time_type
: enum
type으로 float
(default), unixtime
(1510544815), string
(time_format)이 있다. 여기에 적힌 type
을 기준으로 시간을 포맷팅한다.time_format
: string
으로 지정된 format으로 시간을 포맷팅한다. 해당 파라미터는 time_type
이 string
일 때만 가능하다. localtime
: bool
로 만약 true
이면 local time을 사용한다. 그렇지 않으면 UTC
를 사용한다. default로 true
이다.utc
: bool
로 true
이면 UTC를 사용하고 아니면 localtime을 사용한다. default로 false
이다.timezone
: string
으로 지정된 timezone을 사용할 수 있으며, 지정된 timezone format으로 time value를 parse, 포맷팅할 수 있다. default로 nil
이다. extract
section은 match
, source
, filter
section에서 사용할 수 있다. extract
configuration은 event record의 값을 뽑아낼 수 있다.
<source>
@type exec
# ...
<extract>
# ...
</extract>
</source>
extract
section에서 사용하는 파라미터는 다음과 같다.
1. tag_key
: string
으로 tag
에서 추출할 field이름이다.
2. keep_tag_key
: bool
로 만약 true
라면 값을 추출한 후에 record안에 field를 유지할 지 결정한다. (default: false)
3. time_key
: string
으로 time을 추출하기 위한 field name이다.
4. keep_time_key
: 값을 추출한 후에 record안에 field를 유지할 지 결정한다. (default: false)
시간에 관련된 파라미터는 format
section과 동일하다.
inject
는 match
와 filter
section에서 사용할 수 있으며 plugin에서 inject
section을 지원하면 사용할 수 있다.
<match>
@type file
# ...
<inject>
# ...
</inject>
</match>
다음과 같이 configuration을 설정했다고 하자.
<inject>
time_key fluentd_time
time_type string
time_format %Y-%m-%dT%H:%M:%S.%NZ
tag_key fluentd_tag
</inject>
그리고 실제 event record가 다음과 같다면,
tag: test
time: 1547575563.952259
record: {"message":"hello"}
record에 주입된 내용은 다음과 같다.
{"message":"hello","fluentd_tag":"test","fluentd_time":"2019-01-15T18:06:03.952259000Z"}
inject
section에서 사용하는 파라미터는 다음과 같다.
1. hostname_key
: string
으로 hostname
configuration 값에 넣을 field name을 지정한다.
2. hostname
: string
으로 hostname_key
의 값이 된다.
3. tag_key
: string
으로 tag
를 주입할 field name이다.
4. time_key
: string
으로 time
을 주입할 field name이다.
time
관한 파리미터는 foramt
section과 같다.
일부 fluentd input, output, filter plugin에서 server
/http_server
plugin helper를 사용한다. 또한, <transport>
section을 지원하여 어떻게 connection들을 다룰 지 지정할 수 있다.
transport
section은 match
, source
, filter
section에서 사용할 수 있고, protocol과 버전, cert파일들을 지정할 수 있다.
# tcp
<transport tcp>
</transport>
# udp
<transport udp>
</transport>
# tls
<transport tls>
cert_path /path/to/fluentd.crt
private_key_path /path/to/fluentd.key
private_key_passphrase YOUR_PASSPHRASE
# ...
</transport>
기본적인 파라미터로 protocol
이 있고 udp
, tcp
, tls
가 가능하다. default는 tcp
이다.
이외에 TLS와 CA에 관한 여러 파라미터들이 있는데, 이는 다음의 페이지에서 참고하도록 하자. https://docs.fluentd.org/configuration/transport-section#tls-setting
storage
section은 source
와 match
, filter
section에서 사용할 수 있다. storage
는 plugin에서 사용하고 있는 internal state를 memory나 storage, key-value store에 저장하도록 한다. 그 방법은 storage
plugin마다 다르기 때문에 plugin마다의 사용방법을 참고하는 것이 좋다. https://docs.fluentd.org/storage
<source>
@type windows_eventlog
# ...
<storage>
# ...
</storage>
</source>
@type
파마리터는 storage plugin의 타입을 지정한다. 가령 local
type을 사용하며 다음과 같이 쓴다.
<storage>
@type local
</storage>
service_discovery
section을 지원하여 target node를 동적으로 설정할 수 있도록 하였다. service_discovery
section은 match
아래에 있으며 다음과 같다.
<match tag.*>
@type forward
# ...
<service_discovery>
# ...
</service_discovery>
</match>
service_discovery
의 @type
파라미터는 service_discovery
의 타입을 지정하는데, 가령 file
이면 다음과 같이 쓸 수 있다.
<service_discovery>
@type file
# ...
</service_discovery>
built-in service discovery plugin으로 static
, file
, srv
가 있다. plugin마다 사용방법이 다르니 참고하도록 하자. https://docs.fluentd.org/service_discovery