로그를 뉴렐릭으로 전달하면 모든 로깅 데이터를 한 위치에서 사용할 수 있으며 애플리케이션과 플랫폼 성능 데이터 모두에 대한 더 깊은 가시성을 확보할 수 있습니다. 로그를 한 곳에서 수집, 처리, 탐색, 쿼리하고 로그 데이터에서 발견된 오류 또는 이상에 대해 알림을 제공할 수 있습니다.
호스트의 UI에서, 선택된 기간 동안의 이벤트의 로그가 문맥으로 표시됩니다. 강조 표시된 속성에 대한 데이터를 세부적으로 검토할 수 있습니다.
인프라 에이전트가 로그 전달 기능을 활성화하므로, 로그를 전달하는 방법은 인프라 에이전트를 설치한 방법에 따라 다를 수 있습니다. 다음을 통해 인프라 에이전트를 설치할 수 있습니다.
안내 설치(대부분의 사용자에게 권장됨)
수동 설치
Linux tarball
중요
Linux 버전의 인프라 에이전트, 특히 버전 1.42.0은 td-agent-bit 패키지 사용에서 fluent-bit 패키지로 전환되었습니다. 주요 버전 2.x 업데이트 후 fluent-bit가 더 이상 td-agent-bit 플레이버에 배포되지 않는다는 사실 때문에 이러한 변경이 필요했습니다.
원활한 작동을 보장하고, fluent-bit 패키지에 문제가 있는 경우 td-agent-bit로 되돌릴 수 있는 옵션을 제공하기 위해 인프라 에이전트는 이제 두 패키지(td-agent-bit 및 fluent-bit)를 모두 설치합니다. 기본적으로 에이전트는 fluent-bit를 사용하도록 설정됩니다.
구성 파일은 뉴렐릭에 표시하려는 로그 소스를 전달하도록 시스템에 지시합니다. 원하는 만큼 구성 파일을 추가할 수 있습니다. 인프라 에이전트는 .yml 파일을 사용하여 로깅을 구성합니다. UI에서 Add data를 통해 인프라 에이전트를 설치하면 logging.yml 파일이 자동으로 생성됩니다.
logging.yml 구성 파일을 만들고 필요한 매개변수를 추가합니다. logging.d 디렉터리에는 참조 또는 시작점으로 사용할 수 있는 다양한 .yml.example 파일이 있습니다. Windows 예제는 Github 저장소를 참조하십시오.
# Log forwarder configuration file example
# Source: file
# Available customization parameters: attributes, max_line_kb, pattern
logs:
# Basic tailing of a single file
-name: basic-file
file: /var/log/logFile.log
# File with spaces in its path. No need to use quotes.
-name: file-with-spaces-in-path
file: /var/log/folder with spaces/logFile.log
# Specify a list of custom attributes, as key-value pairs, to be included
# in each log record
-name: file-with-attributes
file: /var/log/logFile.log
attributes:
application: tomcat
department: sales
maintainer: example@mailprovider.com
# Use wildcards to refer to multiple files having a common extension or
# prefix. Newly generated files will be automatically detected every 60
# seconds.
#
# WARNING: avoid using wildcards that include the file extension, since
# it'll cause logs to be forwarded repeatedly if log rotation is enabled.
-name: log-files-in-folder
file: /var/log/logF*.log
# Lines longer than 128 KB will be automatically skipped. Use 'max_line_kb'
# to increase this limit.
-name: log-file-with-long-lines
file: /var/log/logFile.log
max_line_kb:256
# Use 'pattern' to filter records using a regular expression
-name: only-records-with-warn-and-error
file: /var/log/logFile.log
pattern: WARN|ERROR
에이전트는 인프라 모니터링 서비스를 다시 시작할 필요 없이 새 구성 파일을 자동으로 처리합니다. 이에 대한 유일한 예외는 커스텀 Fluent Bit 구성을 하는 경우입니다.
2단계. 로그 전달 파라미터 설정
로그 전달 .yml 구성 파일에서 name 및 로그 소스 파라미터를 설정해야 합니다. 시작하려면 뉴렐릭에 전달할 로그의 name을 정의합니다.
로그 소스에 무엇을 사용하는지는 로그 소스 위치에 따라 다릅니다. 로그 소스에 사용 가능한 옵션은 다음과 같습니다.
로그 파일 또는 파일의 경로입니다. 에이전트는 tail -f 쉘과 유사한 방식으로 로그 파일의 변경 사항을 추적합니다.
예:
logs:
-name: example-log
file: /var/log/example.log # Path to a single log file
-name: example-log-two
file: /var/log/example-two.log # Path to another single log file
file 매개변수는 이름 및 확장자에 적용된 와일드카드를 사용하여 특정 로그 파일 또는 여러 파일을 가리킬 수 있습니다. 예: /logs/*.log. 파일 경로의 디렉터리 대신 와일드카드를 사용할 수 있습니다. 이 와일드카드는 다른 디렉터리에 있는 파일을 테일링하는 데 사용할 수 있습니다.
예:
logs:
-name: docker-logs
file: /var/lib/docker/containers/*/*.log# Path to multiple folders and files
중요
와일드카드를 사용하면 파일 설명자의 수가 크게 증가할 수 있으며 inotify는 Fluent Bit 프로세스가 열린 상태를 유지하여 호스트의 파일 설명자 제한에 도달하면 로그 수집을 방해할 수 있습니다. 많은 수의 파일을 처리하려면 운영 체제에서 허용하는 파일 설명자와 inotify 감시자의 최대 수를 늘려야 할 수 있습니다. 로그 파일을 늘리는 방법에 대한 자세한 내용은 많은 양의 로그 파일을 추적할 때 발생하는 오류를 참조하십시오.
systemd 매개변수를 사용하여 Linux 환경에서 journald 데몬이 수집한 로그 메시지를 전달합니다. 이 입력 유형을 사용하려면 에이전트가 루트 모드에서 실행되어야 합니다.
예:
logs:
-name: systemd-example
systemd: cupsd
Syslog 데이터 소스.
매개변수:
uri: Syslog 소켓. 형식은 프로토콜에 따라 다릅니다.
TCP/UDP 네트워크 소켓: [tcp/udp]://LISTEN_ADDRESS:PORT
Unix 도메인 소켓: unix_[tcp/udp]:// + /socket/path
parser: Syslog 파서. 기본값은 rfc3164입니다. 메시지에 소수 자릿수 초가 포함된 경우 rfc5424를 사용합니다. 참고: rfc3164는 현재 SuSE에서 작동하지 않습니다.
unix_permissions: 기본값은 도메인 소켓의 경우 0644입니다. 이것은 루트로 실행되는 프로세스로 항목을 제한합니다. 0666을 사용하여 자신의 책임하에 루트가 아닌 프로세스를 수신할 수 있습니다.
권한 있는 모드에서 에이전트를 실행할 때 다른 프로세스가 소켓에 로그를 쓸 수 있도록 포트와 소켓을 사용할 수 있거나 0666 파일 권한이 있는 nri-agent에서 소유해야 합니다.
logs:
# TCP network socket
-name: syslog-tcp-test
syslog:
uri: tcp://0.0.0.0:5140# Use the tcp://LISTEN_ADDRESS:PORT format
parser: rfc5424 # Default syslog parser is rfc3164
# UDP network socket
-name: syslog-udp-test
syslog:
uri: udp://0.0.0.0:6140# Use the udp://LISTEN_ADDRESS:PORT format
max_line_kb:35
# Unix TCP domain socket
-name: syslog-unix-tcp-test
syslog:
uri: unix_tcp:///var/unix-tcp-socket-test
unix_permissions:0666# Default is 0644. Change at your own risk
# Unix UDP domain socket
-name: syslog-unix-udp-test
syslog:
uri: unix_udp:///var/unix-udp-socket-test
parser: rfc5424
TCP 연결을 통해 검색된 로그입니다.
매개변수:
uri: 들어오는 데이터를 수신 대기하는 TCP/IP 소켓입니다. URI 형식은 tcp://LISTEN_ADDRESS:PORT
format: 데이터 형식. json 또는 none일 수 있습니다.
separator:format: none을 사용하는 경우 레코드 분할을 위한 구분자 문자열을 정의할 수 있습니다. (기본값: \n )
logs:
-name: tcp-simple-test
tcp:
uri: tcp://0.0.0.0:1234# Use the tcp://LISTEN_ADDRESS:PORT format
format: none # Raw text - this is default for 'tcp'
separator: \t # String for separating raw text entries
max_line_kb:32
-name: tcp-json-test
tcp:
uri: tcp://0.0.0.0:2345# Use the tcp://LISTEN_ADDRESS:PORT format
format: json
중요
인프라 에이전트 v.1.24.3부터 사용 가능합니다. Windows Server 2019 이상과만 호환됩니다. 이전 버전에는 winlog를 대신 사용하십시오.
collect-eventids: 수집하여 뉴렐릭에 전달할 Windows 이벤트 ID 목록입니다. 이벤트 ID 범위가 지원됩니다.
exclude-eventids: 컬렉션에서 제외할 Windows 이벤트 ID 목록입니다. 이벤트 ID 범위가 지원됩니다.
use-ansi: winevtlog 메시지에 ANSI 인코딩을 사용합니다. Windows Server 2016 및 이전 버전에서는 기본적으로 ANSI 인코딩을 사용하고 최신 버전에서는 UTF-8을 사용합니다. 이러한 기본값이 사용 사례에 적합하지 않은 경우 이 구성 매개변수로 동작을 재정의할 수 있습니다.
모든 이벤트는 기본적으로 지정된 채널에서 수집됩니다. 뉴렐릭 계정에 원치 않는 로그가 전송되지 않도록 collect-eventids 및 exclude-eventids 섹션을 구성합니다.
이벤트 ID 또는 범위를 collect-eventids 또는 exclude-eventids에 추가하여 특정 이벤트를 전달하거나 삭제합니다. 동일한 이벤트 ID가 두 섹션에 모두 있는 경우 exclude-eventids가 collect-eventids 보다 우선합니다.
예:
logs:
# Example winevtlog security log ingestion with eventId filters.
-name: windows-security
winevtlog:
channel: Security
collect-eventids:
-4624
-4265
- 4700-4800
exclude-eventids:
-4735
attributes:
logtype: windows_security
# Example entries for the application and system channels
-name: windows-application
winevtlog:
channel: Application
attributes:
logtype: windows_application
-name: windows-system
winevtlog:
channel: System
attributes:
logtype: windows_system
# Example/Optional entry for Windows Defender Logs
Winlog는 클래식 이벤트 로그만 수집할 수 있습니다. 다른 로그를 캡처하려고 하면 애플리케이션 로그가 자동으로 수집됩니다.
Windows 로그 채널에서 이벤트를 수집합니다.
매개변수:
channel: 채널 로그의 이름이 수집됩니다. 커스텀 채널에서는 작동하지 않습니다.
collect-eventids: 수집하여 뉴렐릭에 전달할 Windows 이벤트 ID 목록입니다. 이벤트 ID 범위가 지원됩니다.
exclude-eventids: 컬렉션에서 제외할 Windows 이벤트 ID 목록입니다. 이벤트 ID 범위가 지원됩니다.
use-ansi: winlog 메시지에 ANSI 인코딩을 사용합니다. Windows Server 2016 및 이전 버전에서는 기본적으로 ANSI 인코딩을 사용하고 최신 버전에서는 UTF-8을 사용합니다. 이러한 기본값이 사용 사례에 적합하지 않은 경우 이 구성 매개변수로 동작을 재정의할 수 있습니다.
모든 이벤트는 기본적으로 지정된 채널에서 수집됩니다. 뉴렐릭 계정에 원치 않는 로그가 전송되지 않도록 collect-eventids 및 exclude-eventids 섹션을 구성합니다.
이벤트 ID 또는 범위를 collect-eventids 또는 exclude-eventids에 추가하여 특정 이벤트를 전달하거나 삭제합니다. 동일한 이벤트 ID가 두 섹션에 모두 있는 경우 exclude-eventids가 collect-eventids 보다 우선합니다.
예:
logs:
# Example winlog security log ingestion with eventId filters.
-name: windows-security
winlog:
channel: Security
collect-eventids:
-4624
-4265
- 4700-4800
exclude-eventids:
-4735
attributes:
logtype: windows_security
# Example entries for the application and system channels
-name: windows-application
winlog:
channel: Application
attributes:
logtype: windows_application
-name: windows-system
winlog:
channel: System
attributes:
logtype: windows_system
# Example/Optional entry for Windows Defender Logs
이러한 구성 파라미터는 필수는 아니지만 로그 전달을 최대한 활용할 수 있도록 이러한 구성을 logging.yml 파일에 적용하는 것이 좋습니다.
쿼리할 수 있는 로그와 함께 추가 데이터를 보내는 데 사용할 수 있는 키-값 쌍으로 지정된 사용자 지정 속성 목록입니다. attributes 구성 매개변수는 모든 로그 소스와 함께 사용할 수 있습니다.
중요
attributes 구성 매개변수는 외부 Fluent Bit 구성(예: fluentbit 구성 매개변수 사용)을 통해 전달된 로그에 커스텀 속성을 추가하지 않습니다. 이 시나리오에서는 Fluent Bit 문서에서 record_modifier 옵션을 참조해야 합니다.
attributes 구성 매개변수의 일반적인 용도 중 하나는 logtype 속성을 지정하는 것입니다. 이 속성을 사용하면 뉴렐릭의 로그 관리 기능이 지원하는 내장된 구문 분석 규칙 중 하나를 활용할 수 있습니다.
예:
logs:
-name: example-file-attributes
file: /var/log/example.log
attributes:
logtype: nginx
region: example-us-02
team: A-team
-name: example-tcp-attributes
tcp:
uri: tcp://0.0.0.0:2345
format: json
attributes:
logtype: nginx
region: example-us-02
team: B-team
인프라 에이전트는 사용자의 편의를 위해 자동으로 로그 속성을 삽입합니다. 그 중 일부는 모든 로그 레코드에 삽입되고 나머지는 로그 전달자를 설정하는 동안 사용한 구성 매개변수에 따라 다릅니다.
Attribute name(속성 이름)
설명
entity.guids
항상 삽입됩니다.
인프라 에이전트는 실행 중인 호스트를 식별하기 위해 뉴렐릭에서 할당한 Entity GUID를 삽입합니다. entity.guids 필드에서 사용할 수 있습니다.
참고: 캡처된 로그가 APM을 사용하여 계측된 애플리케이션에 속하는 경우 entity.guids 필드에는 파이프( | ) 구분 기호로 구분된 인프라의 엔터티 GUID와 APM의 GUID가 모두 포함됩니다.
fb.input
항상 삽입됩니다.
로그를 캡처하는 데 사용되는 기본 Fluent Bit 입력 플러그인 유형입니다. 현재 값은 tail, systemd, winlog, syslog 및 tcp 입니다.
filePath
file 입력 유형을 사용할 때 삽입됩니다.
모니터링 중인 파일의 절대 파일 경로입니다.
hostname
항상 삽입됩니다.
인프라 에이전트를 실행하는 머신/VM/컨테이너의 호스트 이름입니다.
plugin.type
항상 삽입됩니다.
로그를 캡처하는 데 사용되는 유틸리티를 나타냅니다. 이 경우 인프라 에이전트 자체이므로 이 속성의 값은 항상 nri-agent입니다.
레코드 필터링을 위한 정규식입니다. tail, systemd, syslog 및 tcp (none 형식의 경우에만) 소스에 대해서만 지원됩니다.
이 필드는 Unix 시스템의 grep -E와 유사한 방식으로 작동합니다. 예를 들어 캡처 중인 특정 파일에 대해 다음을 사용하여 WARN 또는 ERROR가 포함된 레코드를 필터링할 수 있습니다.
-name: only-records-with-warn-and-error
file: /var/log/logFile.log
pattern: WARN|ERROR
기본적으로 필터링이 적용되지 않습니다.
로그 항목/줄의 최대 크기(KB)입니다. 로그 항목이 제한을 초과하면 건너뜁니다. 기본값은 128입니다.
외부 Fluent Bit 구성 및 파서 파일. 정의된 경우 인프라 에이전트에서 생성한 기존 구성 및 파서 파일과 병합됩니다.
인프라 에이전트는 logging.d 디렉터리에 있는 구성 파일을 처리하고 적절한 [INPUT], [FILTER] 및 [OUTPUT] 섹션이 포함된 런타임 Fluent Bit 구성 파일을 생성합니다. 선택적으로 fluentbit 옵션을 통해 외부 Fluent Bit 구성 파일을 제공한 경우 @INCLUDE도 선언합니다.
런타임 파일은 모든 기본 Fluent Bit 구성 값을 그대로 두고[SERVICE] 섹션을 정의하지 않습니다. 외부 Fluent Bit 구성 파일에 고유한 [SERVICE] 섹션을 정의함으로써 Fluent Bit의 기본 설정을 무시하고 fluentbit 옵션을 통해 이를 포함시킬 수 있습니다.
매개변수:
config_file: 기존 Fluent Bit 구성 파일의 경로입니다. 소스가 겹치면 뉴렐릭의 로그 UI에 메시지가 중복됩니다.
parsers_file: 기존 Fluent Bit 파서 파일의 경로입니다. 다음 파서 이름이 예약되어 있습니다: rfc3164, rfc3164-local 및 rfc5424.
중요
인프라 에이전트는 이 문서에 설명된 대로 logging.d/ 디렉터리의 YAML 파일에 간단한 로그 전달 구성을 정의하여 가장 일반적인 사용 사례에 대한 로그 전달을 허용합니다. 이러한 파일은 내부적으로 올바른 형식과 정상적인 구성 기본값을 사용하여 Fluent Bit 구성 파일로 변환됩니다. 뉴렐릭은 생성된 구성 파일이 정확하고 작동하는지 확인하기 때문에 이러한 구성 옵션에 대한 공식 지원을 제공합니다.
그럼에도 불구하고 지원되는 구성 옵션에서 다루지 않는 사용 사례의 경우 fluentbit, config_file 및 parsers_file 옵션을 사용하여 외부에서 생성된 Fluent Bit 구성 및 파서 파일을 사용할 수 있는 가능성을 제공합니다.
제공된 구성이 완전히 임의적이며 에이전트에 의해 생성/검증되지 않는다는 점을 감안할 때, 이 경우 전달된 로그의 올바른 작동을 보장할 수 없습니다. 따라서 뉴렐릭은 이러한 옵션을 통해 지정된 외부 구성에 대한 공식 지원을 제공하지 않습니다.
샘플 구성 파일
다음은 YAML 형식의 logging.d/ 구성 파일의 예입니다. 더 많은 구성 예는 인프라 에이전트 저장소를 참조하십시오.
# Remember to only use spaces for indentation
logs:
# Example of 'file' source
-name: file-with-attributes
file: /var/log/test.log # Path to a single file or pattern
attributes:# You can use custom attributes to enrich your data
logtype: nginx
team: The A Team
pattern: Error # Regular expression to filter log entries
# Example of 'systemd' source (Linux only)
-name: systemd-example
systemd: cupsd
# Examples of 'syslog' source, one per protocol
# TCP network socket
-name: syslog-tcp-test
syslog:
uri: tcp://0.0.0.0:5140# Use the tcp://LISTEN_ADDRESS:PORT format
parser: rfc5424 # Default syslog parser is rfc3164
# UDP network socket
-name: syslog-udp-test
syslog:
uri: udp://0.0.0.0:6140# Use the udp://LISTEN_ADDRESS:PORT format
max_line_kb:35
# Paths for Unix sockets are defined by combining protocol and path:
# unix_udp:// + /path/socket - for example, unix_udp:///tmp/socket
# Unix TCP domain socket
-name: syslog-unix-tcp-test
syslog:
uri: unix_tcp:///var/unix-tcp-socket-test
unix_permissions:0666# Default is 0644. Change at your own risk
# Unix UDP domain socket
-name: syslog-unix-udp-test
syslog:
uri: unix_udp:///var/unix-udp-socket-test
parser: rfc5424
# Examples of 'tcp' source for formats 'none' and 'json'
-name: tcp-simple-test
tcp:
uri: tcp://0.0.0.0:1234# Use the tcp://LISTEN_ADDRESS:PORT format
format: none # Raw text - this is default for 'tcp'
separator: \t # String for separating raw text entries
attributes:# You can add custom attributes to any source of logs
tcpFormat: none
someOtherAttribute: associatedValue
max_line_kb:32
-name: tcp-json-test
tcp:
uri: tcp://0.0.0.0:2345# Use the tcp://LISTEN_ADDRESS:PORT format
format: json
attributes:
tcpFormat: json
yetAnotherAttribute:12345
# Example of Fluent Bit configuration import
-name: fluentbit-import
fluentbit:
config_file: /path/to/fluentbit.config
parsers_file: /path/to/fluentbit/parsers.conf
4단계. 로그 데이터 보기
모든 것이 올바르게 구성되고 데이터가 수집되는 경우 다음 위치에서 로그 및 관련 텔레메트리 데이터를 확인해야 합니다.
인프라 에이전트를 설치하면 가장 널리 사용되는 온-호스트 통합에 대한 자동 로그 구문 분석 및 전달을 한 단계로 활성화할 수 있습니다. 이 기능을 활성화하려면 on-host-log.yml.example 파일의 이름을 on-host-log.yml로 바꿉니다. 완료되면 통합 로그가 자동으로 구문 분석되어 뉴렐릭으로 전송됩니다.
로그 전달 기능을 사용하려면 에이전트에 데이터 소스를 읽을 수 있는 권한이 있어야 합니다. 인프라 에이전트를 특권 또는 비특권 모드로 실행할 때 전달하려는 로그 파일(및 해당 경로의 모든 중간 디렉터리)을 nri-agent를 실행하는 사용자가 읽을 수 있는지 확인합니다.
예: Linux에서 파일 액세스 확인
nri-agent 사용자가 /var/log/restrictedLogs/logFile.log 파일을 모니터링할 수 있는지 확인해 봅니다. Linux에서는 namei 명령을 사용하여 빠르게 확인할 수 있습니다.
인프라 에이전트 구성 가이드라인에 설명된 대로 proxy 매개변수는 HTTP 또는 HTTPS를 사용해야 하며 https://user:password@hostname:port 형식이어야 합니다. 에이전트는 HTTP 또는 HTTPS 없이 매개변수를 구문 분석할 수 있지만 로그 전달자는 불가능합니다. 에이전트 상세 로그에 다음과 같은 오류가 표시됩니다.
[ERROR] building HTTP transport: parse \"hostname:port\":
first path segment in URL cannot contain colon
이 문제를 해결하려면 newrelic-infra.yml 파일을 확인하고 proxy 매개변수가 이 양식을 준수하는지 확인합니다.
인증서를 지정하기 위해 caBundleFile 또는 caBundleDir를 사용하는 경우 각 OS에 대해 아래 규칙을 따르는 것이 좋습니다.
LinuxHTTP 프록시의 경우 인증서를 설정할 필요가 없습니다. 플러그인은 시스템 인증서를 로드하고 뉴렐릭은 로그를 로깅 엔드포인트로 보냅니다. 그러나 caBundleFile 또는 caBundleDir 매개변수를 사용하여 프록시 자체 서명 인증서(PEM 파일)를 지정할 수 있습니다.
Windows
HTTP 프록시의 경우 인증서를 설정할 필요가 없습니다. 플러그인은 시스템 인증서를 로드합니다.
HTTPS의 경우 다음 방법 중 하나로 구성할 수 있습니다.
시스템 풀로 프록시 인증서 가져오기(권장) MMC 툴을 사용하여 프록시 자체 서명 인증서(PEM 파일)를 가져옵니다. 이 링크를 참조하고 2단계에서 Intermediate Certification Authorities 대신 Trusted Root Certification Authorities에서 가져오도록 합니다.
caBundleFile 및 caBundleDir 매개변수 사용하는 Windows에서는 시스템 인증서 풀의 인증서와 caBundleFilecaBundleDir 매개변수로 지정된 인증서를 모두 로드할 수 없습니다. 따라서 caBundleFile 또는 caBundleDir를 사용하는 경우 다음 인증서가 동일한 PEM 파일(caBundleFile 사용 시) 또는 동일한 디렉터리(caBundleDir 사용 시)에 있는지 확인합니다.
이 구성은 에이전트를 문제 해결 모드로 설정하지만 로그 전달자(Fluent Bit 기반)는 non-verbose 모드에서 계속됩니다.
때로는 로그 전달자 자체에 문제가 있을 수 있습니다. 예를 들어, Windows 로그 이벤트를 전달하거나 특정 로그 파일에 액세스할 때 특정 채널에 액세스하는 데 문제가 있을 수 있습니다. 이러한 상황에서는 로그 전달자에 대해 상세 정보 표시(verbose) 모드를 활성화할 수도 있습니다.
중요
트레이스 로깅은 많은 데이터를 매우 빠르게 생성합니다. 디스크 공간 소비 및 데이터 인제스트를 줄이려면, 로그 생성이 완료되었을 때 level: info(또는 그 이하)로 설정해야 합니다.
newrelic-infra.yml 파일을 수정합니다.
다음 구성 스니펫을 추가함으로써 Fluent Bit verbose 로그 활성화
log:
level: trace
forward:true# Enables sending logs to New Relic
format: json # Recommended: Enable agent logging in JSON format
stdout:false# On Windows and systems that don't use `systemd` or where `journald` is inaccessible
include_filters:
traces:
- supervisor # Required to see verbose logs from Fluent Bit
The user limit on the total number of inotify watches was reached or the kernel failed to allocate a needed resource
운영 체제는 할당 가능한 파일 설명자의 최대 양(일반적으로 기본적으로 1024)과 할당 가능한 inotify 감시의 최대 양(일반적으로 기본적으로 8192)을 정의합니다. 이러한 제한을 초과하려는 모든 프로세스는 실패하고 위의 오류 중 하나를 가져옵니다.
로그 전달에 사용되는 기본 기술인 Fluent Bit는 하나의 파일 설명자를 열고 전달하도록 구성한 각 파일에 대해 inotify 감시를 설정합니다. 이외에도, 이 섹션을 작성하는 시점에서 Fluent Bit는 정상 작동을 위해 32개의 추가 파일 디스크립터 세트를 사용하고 종료될 때 또 다른 추가 파일 디스크립터를 사용합니다. 따라서 많은 양의 파일을 캡처하려면 파일 설명자와 inotify 감시 제한이 모두 테일링하려는 로그 파일의 양보다 약간 더 큰지 확인해야 합니다.
다음 지침은 10,000개의 로그 파일을 테일링하려는 경우 이러한 제한을 늘리는 방법을 요약합니다. 또한 인프라 에이전트가 root실행 모드로 설치되어 있다고 가정하므로 root 사용자를 사용하여 실행해야 합니다.
프로세스당 파일 디스크립터의 양에 대한 현재 하드 한도를 확인합니다. 일반적으로 이 한도는 상당히 높아야 하며 수정할 필요가 없습니다.
bash
$
ulimit-Hn
/etc/security/limits.conf에 다음 줄을 추가합니다. Fluent Bit가 작동하는 데 필요할 수 있는 추가 파일 설명자를 할당할 수 있도록 여기에서 10000 대신 10100 한도를 지정했습니다.
bash
$
root soft nofile 10100# replace root by nri-agent for non-root (privileged and unprivileged) installations
다시 시작할 때 이전 제한이 적용되도록 /etc/pam.d/common-session에 다음 줄을 추가합니다.
bash
$
session required pam_limits.so
사용자당 허용되는 inotify 감시자의 양을 늘리려면 다음 줄을 /etc/sysctl.conf에 추가합니다. root 사용자가 여전히 8192 사용 가능한 inotify 감시자(기본값)를 가질 수 있도록 여기에 10000 대신 18192 한도를 지정했습니다.
bash
$
fs.inotify.max_user_watches=18192
시스템을 다시 시작합니다.
다음을 실행하여 새 한도가 적용되었는지 확인합니다.
bash
$
ulimit-Sn# Should return 10100
$
cat /proc/sys/fs/inotify/max_user_watches # Should return 18192
버전 1.19.0 (또는 SLES 12.5의 경우 버전 1.20.3 ) 이전에는 Linux 인프라 에이전트가 Fluent Bit 바이너리와 함께 번들로 제공되었습니다. 이 버전부터 Fluent Bit는 이제 별도의 recommended 패키지 종속성으로 포함됩니다.
즉, 에이전트와 별도로 Fluent Bit를 설치, 업데이트 또는 다운그레이드할 수 있습니다. 사용자의 편의를 위해 인프라가 있는 동일한 리포지토리에 여러 Fluent Bit 패키지가 포함되어 있으므로 Fluent Bit를 업그레이드하기 위해 추가 저장소를 설치할 필요가 없습니다.
에이전트는 사용 가능한 최신 버전을 사용하여 처음 설치할 때 Fluent Bit를 자동으로 설치합니다. 처음 설치한 후에는 일반적으로 Linux 패키지를 사용하는 것처럼 Fluent Bit를 업그레이드할 수 있습니다.
다음을 실행하여 사용 가능한 Fluent Bit 버전을 나열할 수 있습니다.
RPM:
bash
$
sudo yum check-update
$
yum list fluent-bit --showduplicates
DEB:
bash
$
sudoapt update
$
apt-cache showpkg fluent-bit
특정 Fluent Bit 버전으로 업그레이드하려면 다음을 실행하십시오. (다음 예에서는 버전 2.0.8 이 사용됨)
RPM:
bash
$
# Remove command only required when downgrading to a previous version
$
sudo yum remove fluent-bit
$
sudo yum install fluent-bit-2.0.8-1
DEB:
bash
$
sudoaptinstall fluent-bit=2.0.8
아래 배포판들의 경우 td-agent-bit를 사용할 수 없어 롤백이 불가능합니다.
CentOS 9 스트림 (Rocky Linux 및 AlmaLinux 포함)
RedHat 9
Ubuntu 22.04.x
Open Suse (SLES) 15.4
Amazon Linux 2023
td-agent-bit로 되돌리려면 아래 설명된 단계를 따르십시오.
원하는 텍스트 편집기를 사용하여 /etc/newrelic-infra.yml 파일을 엽니다.
파일 끝에 fluent_bit_exe_path: /opt/td-agent-bit/bin/td-agent-bit줄을 추가합니다.
변경 사항을 저장합니다.
sudo systemctl restart newrelic-infra 명령을 실행하여 인프라 에이전트를 다시 시작합니다.
이 단계를 완료하면 인프라 에이전트가 fluent-bit 대신 td-agent-bit를 사용하도록 구성됩니다.