EFK를 정리하자 5일차 - Fluentd Configuration4

0

EFK

목록 보기
5/8

Format Section

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에서 사용하는 파라미터는 다음과 같다.

  1. time_type: enum type으로 float(default), unixtime(1510544815), string(time_format)이 있다. 여기에 적힌 type을 기준으로 시간을 포맷팅한다.
  2. time_format: string으로 지정된 format으로 시간을 포맷팅한다. 해당 파라미터는 time_typestring일 때만 가능하다.
  3. localtime: bool로 만약 true이면 local time을 사용한다. 그렇지 않으면 UTC를 사용한다. default로 true이다.
  4. utc: booltrue이면 UTC를 사용하고 아니면 localtime을 사용한다. default로 false이다.
  5. timezone: string으로 지정된 timezone을 사용할 수 있으며, 지정된 timezone format으로 time value를 parse, 포맷팅할 수 있다. default로 nil이다.

Extract Section

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 Section

injectmatchfilter 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과 같다.

Transport 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

storage section은 sourcematch, 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

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

0개의 댓글