반응형
n개의 클라이언트에서 발생하는 json로그를 서버 한 곳에서 보아야 할 일이 생겼는데,
해당 서버가 fluentd 방식을 지원한다고 하여, json 로그를 특정 폴더에 남겨서, 실시간으로 tailing 하여 fluentd의 forward 프로토콜을 이용하여 전송하는 방식으로 설정을 해보았다.
1. 서버 구성 (docker)
### docker-compose.yml version: '2' services: fluentd-recv: container_name: 'fluentd-recv' image: fluent/fluentd volumes: - ./conf:/fluentd/etc ports: - 24224:24224
### conf/fluent.conf # Input <source> @type forward # forward 프로토콜을 이용하여 전송받는다. (forward는 전송은 tcp로 하고, health check는 udp로 하는 방식) port 24224 # 24224 포트를 이용한한다. </source> # Output <match **> # 보내는 부분에서 tag를 지정하여, tag별로 설정 가능하다. @type file # 받은 내용을 파일로 저장함 path /fluentd/recv/* # 이 경로에 저장함. (파일명을 명시할 수도 있는 것 같다.) </match>
2. 클라 구성 (docker)
### docker-compose.yml version: '2' services: fluentd-send: container_name: 'fluentd-send' image: fluent/fluentd volumes: - ./conf:/fluentd/etc
### conf/fluent.conf # Input <source> @type tail # 지정된 경로의 지정된 패턴에 해당하는 파일의 내용을 감시한다. path /fluentd/send/*.json # 경로 지정 pos_file /fluentd/send/test_log.pos # 파일의 position 관리 (이 설정이 없으면, 네트워크 이슈 발생 시 파일이 중복 전송되거나 잘려서 전송될 수 있으므로, 파일 내용의 정합성이 깨질 수 있다.) tag testlog # 식별자 지정 (match에서 활용됨) format json # 파일포맷 지정 refresh_interval 5s # 5초 주기로 감시한다. </source> # Output <match testlog> # tag가 testlog인 것만 아래 구문을 처리 @type forward # 전송 시 forward 프로토콜을 이용한다. flush_interval 5s # 5초 주기로 전송한다. <server> # 전송할 서버 정보 입력 host 192.168.0.10 port 24224 </server> </match>
반응형
'개발 > Fluentd' 카테고리의 다른 글
[nxlog] Batch Script를 활용한 nxlog 설치 자동화 (0) | 2017.12.06 |
---|---|
[Fluentd] Windows 환경에서 로그 전송하고 받기 (0) | 2017.05.31 |