TailFile 2025.5.31.15¶
번들¶
org.apache.nifi | nifi-standard-nar
설명¶
파일 또는 파일 목록을 ‘테일링’하여 파일에 기록될 때 파일에서 데이터를 수집합니다. 파일은 텍스트 파일로 예상됩니다. 데이터는 새 라인(캐리지 리턴 또는 new-line 문자 또는 조합)이 발생할 때만 수집됩니다. 테일링할 파일이 로그 파일에서 일반적으로 발생하는 것처럼 주기적으로 “롤오버”되는 경우, NiFi 가 실행되지 않는 동안 롤오버가 발생한 경우에도 롤오버된 파일에서 데이터를 검색하기 위해 선택 사항인 롤링 파일 이름 패턴을 사용할 수 있습니다(NiFi 가 다시 시작될 때 데이터가 여전히 존재하는 경우). 이 프로세서는 매우 공격적으로 예약할 경우 많은 리소스를 소모하므로 일반적으로 기본값인 0초로 실행하지 말고 실행 일정을 몇 초로 설정하는 것이 좋습니다. 현재 이 프로세서는 ‘롤오버’ 시 압축된 파일의 수집을 지원하지 않습니다.
입력 요구 사항¶
FORBIDDEN
민감한 동적 속성 지원¶
false
속성¶
속성 |
설명 |
---|---|
파일 위치 |
NiFi 재시작 시 데이터가 중복되지 않고 모든 데이터가 소비될 수 있도록 상태를 적절하게 저장할 수 있도록 상태의 위치를 로컬 또는 클러스터로 지정합니다. |
테일링할 파일 |
단일 파일 모드의 경우 꼬리에 추가할 파일의 경로입니다. 다중 파일 모드를 사용하는 경우 정규식을 사용하여 기본 디렉터리에서 추적할 파일을 찾습니다. 재귀성이 true로 설정된 경우 정규식을 사용하여 기본 디렉터리에서 시작하는 경로를 일치시킵니다(예제는 추가 세부 정보 참조). |
초기 시작 위치 |
프로세서가 처음 데이터를 추적하기 시작할 때 이 속성은 프로세서가 데이터 읽기를 시작해야 하는 위치를 지정합니다. 파일에서 데이터를 수집하면 프로세서는 데이터를 수신한 마지막 지점부터 계속 진행합니다. |
라인 시작 패턴 |
로그 행의 시작 부분에 일치시킬 정규식입니다. 지정하면 식과 일치하는 모든 줄과 그 다음 줄은 다른 줄이 식과 일치할 때까지 버퍼링됩니다. 이렇게 하면 파일에서 여러 줄의 메시지가 분리되는 것을 방지할 수 있습니다. 여기서는 데이터가 UTF-8 형식이라고 가정합니다. |
최대 버퍼 크기 |
줄 바꿈 시작 패턴을 사용할 때, 테일링된 파일의 데이터가 정규식과 일치하지 않는 경우가 있을 수 있습니다. 이렇게 하면 프로세서가 테일링된 파일의 모든 데이터를 버퍼링하여 힙을 빠르게 소진할 수 있습니다. 이를 방지하기 위해 프로세서는 파일에서 일부 데이터를 수집하더라도 버퍼를 플러시하기 전에 이 데이터 양까지만 버퍼링합니다. |
롤오버 후 테일 기간 |
파일이 롤오버되면 프로세서는 이 시간 동안 수정되지 않을 때까지 롤오버된 파일을 계속 추적합니다. 이렇게 하면 다른 프로세스가 파일을 롤오버한 다음 버퍼링된 데이터를 플러시할 수 있습니다. 이 값을 설정하고 테일링된 파일이 롤오버되면 구성한 시간 동안 이전 파일이 수정되지 않을 때까지 새 파일은 테일링되지 않습니다. 또한 이 기능을 사용할 때는 데이터 중복을 방지하기 위해 이 기간을 프로세서의 실행 예약 기간보다 길게 설정해야 하며, 추적 중인 파일이 롤오버된 후 데이터가 완전히 소비되기 전에 프로세서를 중지해서는 안 됩니다. 그렇지 않으면 전체 파일이 1개 FlowFile 의 내용으로 기록될 수 있으므로 데이터가 중복될 수 있습니다. |
롤링 파일 이름 패턴 |
로그 파일의 경우처럼 테일 파일이 “롤오버”되는 경우, 이 파일 이름 패턴은 롤오버된 파일을 식별하는 데 사용되므로 NiFi 를 다시 시작하고 파일이 롤오버된 경우 중단된 부분부터 다시 시작할 수 있습니다. 이 패턴은 와일드카드 문자 * 및 ?를 지원하며, 파일 이름(확장자 제외)을 기반으로 패턴을 지정하는 ${filename} 표기법도 지원합니다. 또한, 롤오버된 파일은 테일링되는 파일과 동일한 디렉터리에 존재한다고 가정합니다. 모든 파일에 동일한 글로브 패턴이 사용됩니다. |
미리 할당된 버퍼 크기 |
각 테일링된 파일에 미리 할당되는 메모리 양을 설정합니다. |
reread-on-nul |
이 옵션을 ‘true’로 설정하면 NUL 문자를 읽을 때 프로세서가 양보하고 나중에 같은 부분을 다시 읽으려고 시도합니다. (참고: 생성하면 NUL 문자가 있는 파일뿐만 아니라 이 프로세서가 추적하는 다른 파일의 처리가 지연될 수 있습니다.) 이 플래그의 목적은 파일을 읽으면 임시 NUL 값이 반환될 수 있는 경우를 사용자가 처리할 수 있도록 하기 위한 것입니다. 예제의 NFS 는 파일 내용을 순서대로 보내지 않을 수 있습니다. 이 경우 누락된 부분은 일시적으로 NUL 값으로 대체됩니다. CAUTION! 파일에 정상적인 NUL 값이 포함된 경우 이 플래그를 설정하면 이 프로세서가 무기한 멈추게 됩니다. 이 때문에 사용자는 이 기능을 사용할 수 있는 경우 사용을 자제하고, 대상 파일이 읽기 신뢰성이 낮은 파일 시스템에 저장되지 않도록 주의해야 합니다. |
tail-base-directory |
추적할 파일을 찾는 데 사용되는 기본 디렉터리입니다. 이 속성은 멀티파일 모드를 사용할 때 필수입니다. |
tail-mode |
사용 모드: 단일 파일은 1개의 파일만 추적하고, 여러 파일은 파일 목록을 찾습니다. 다중 모드에서는 기본 디렉터리가 필수입니다. |
tailfile-lookup-frequency |
여러 파일 모드에서만 사용됩니다. 프로세서가 추적할 파일을 다시 목록에 올리기 전에 대기할 최소 기간을 지정합니다. |
tailfile-maximum-age |
여러 파일 모드에서만 사용됩니다. 마지막 수정일과 관련하여 파일에 새 메시지가 추가되지 않도록 고려하는 데 필요한 최소 기간을 지정합니다. 새 메시지가 더 낮은 빈도로 추가되는 경우 데이터 중복을 방지하기 위해 이 값을 너무 낮게 설정해서는 안 됩니다. |
tailfile-recursive-lookup |
여러 파일 모드를 사용할 때 이 속성은 파일을 기본 디렉터리에 재귀적으로 나열할지 여부를 정의합니다. |
상태 관리¶
범위 |
설명 |
---|---|
CLUSTER |
스토어는 테일링된 파일에서 중단된 위치에 대한 상태를 저장하여 다시 시작할 때 데이터를 복제하지 않아도 됩니다. 상태는 <File Location> 속성에 따라 로컬 또는 클러스터링된 상태로 저장됩니다. |
LOCAL |
스토어는 테일링된 파일에서 중단된 위치에 대한 상태를 저장하여 다시 시작할 때 데이터를 복제하지 않아도 됩니다. 상태는 <File Location> 속성에 따라 로컬 또는 클러스터링된 상태로 저장됩니다. |
제한 사항¶
필수 권한 |
설명 |
---|---|
파일 시스템 읽기 |
NiFi 액세스 권한이 있는 모든 파일에서 읽을 수 있는 기능을 연산자에 제공합니다. |
관계¶
이름 |
설명 |
---|---|
성공 |
모든 FlowFiles 은 이 관계로 라우팅됩니다. |
Writes 특성¶
이름 |
설명 |
---|---|
tailfile.original.path |
flow file의 원본 파일 경로입니다. |