로그를 뉴렐릭으로 전달하면 모든 로깅 데이터를 한 위치에서 사용할 수 있으며 애플리케이션과 플랫폼 성능 데이터 모두에 대한 더 깊은 가시성을 확보할 수 있습니다. 로그를 한 곳에서 수집, 처리, 탐색, 쿼리하고 로그 데이터에서 발견된 오류 또는 이상에 대해 알림을 제공할 수 있습니다.
호스트의 UI에서, 선택된 기간 동안의 이벤트의 로그가 문맥으로 표시됩니다. 강조 표시된 속성에 대한 데이터를 세부적으로 검토할 수 있습니다.
인프라 에이전트가 로그 전달 기능을 활성화하므로, 로그를 전달하는 방법은 인프라 에이전트를 설치한 방법에 따라 다를 수 있습니다. 다음을 통해 인프라 에이전트를 설치할 수 있습니다.
- 안내 설치(대부분의 사용자에게 권장됨)
- 수동 설치
- Linux tarball
- 인프라 에이전트 버전 1.11.4 이상
- Fluent Bit. 인프라 에이전트는 이미 최신 버전을 설치합니다. 특정 버전으로 업데이트하거나 다운그레이드하려면 Fluent Bit 설치 절차를 참조하십시오.
- OpenSSL library 1.1.0 이상
- Linux 시스템의 ARM64 아키텍처(예: AWS Graviton 아키텍처)에 대한 내장 지원이 인프라 에이전트 1.20.6에 추가되었습니다.
- Amazon Linux 2
- CentOS 버전 7 이상
- Debian 버전 9("Stretch") 또는 이상. 버전 11은 지원되지 않음
- SUSE Linux Enterprise Server (SLES) 버전 12
- Ubuntu 버전 16.04.x, 18.04.x 및 20.04.x(LTS 버전)
- Windows Server 2012, 2016, 2019, 2022 및 해당 서비스 팩
- Windows 10
안내 설치를 통해 자동으로 로그 전달
안내 설치를 사용해 인프라 에이전트를 설치하면 설치 프로세스 중에 로그 전달 기능이 자동으로 설정됩니다.
설치를 시작하려면 배포 방법을 선택합니다.
수동으로 설치된 에이전트에서 로그 전달을 활성화하는 방법
인프라 에이전트를 수동으로 설치하려면 튜토리얼에 따라 패키지 관리자를 설치하거나 MSI 설치 프로그램 (Windows)을 확인합니다.
1단계. 인프라 에이전트 구성
구성 파일은 뉴렐릭에 표시하려는 로그 소스를 전달하도록 시스템에 지시합니다. 원하는 만큼 구성 파일을 추가할 수 있습니다. 인프라 에이전트는 .yml
파일을 사용하여 로깅을 구성합니다. UI에서 Add data를 통해 인프라 에이전트를 설치하면 logging.yml
파일이 자동으로 생성됩니다.
로그 전달 기능에 대한 새 구성 파일을 추가하려면:
로그 전달자 구성 폴더로 이동합니다.
- Linux:
/etc/newrelic-infra/logging.d/
- Windows:
C:\Program Files\New Relic\newrelic-infra\logging.d\
- Linux:
logging.yml
구성 파일을 만들고 필요한 매개변수를 추가합니다.logging.d
디렉터리에는 참조 또는 시작점으로 사용할 수 있는 다양한.yml.example
파일이 있습니다.
에이전트는 인프라 모니터링 서비스를 다시 시작할 필요 없이 새 구성 파일을 자동으로 처리합니다. 이에 대한 유일한 예외는 커스텀 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
- TCP/UDP 네트워크 소켓:
parser:
Syslog 파서. 기본값은rfc3164
입니다. 메시지에 소수 자릿수 초가 포함된 경우rfc5424
를 사용합니다. 참고:rfc3164
는 현재 SuSE에서 작동하지 않습니다.unix_permissions:
기본값은 도메인 소켓의 경우0644
입니다. 이것은 루트로 실행되는 프로세스로 항목을 제한합니다.0666
을 사용하여 자신의 책임하에 루트가 아닌 프로세스를 수신할 수 있습니다.권한 있는 모드에서 에이전트를 실행할 때 다른 프로세스가 소켓에 로그를 쓸 수 있도록 포트와 소켓을 사용할 수 있거나
0666
파일 권한이 있는nri-agent
에서 소유해야 합니다.logs:# TCP network socket- name: syslog-tcp-testsyslog:uri: tcp://0.0.0.0:5140 # Use the tcp://LISTEN_ADDRESS:PORT formatparser: rfc5424 # Default syslog parser is rfc3164# UDP network socket- name: syslog-udp-testsyslog:uri: udp://0.0.0.0:6140 # Use the udp://LISTEN_ADDRESS:PORT formatmax_line_kb: 35# Unix TCP domain socket- name: syslog-unix-tcp-testsyslog:uri: unix_tcp:///var/unix-tcp-socket-testunix_permissions: 0666 # Default is 0644. Change at your own risk# Unix UDP domain socket- name: syslog-unix-udp-testsyslog:uri: unix_udp:///var/unix-udp-socket-testparser: rfc5424
TCP 연결을 통해 검색된 로그입니다.
매개변수:
uri:
들어오는 데이터를 수신 대기하는 TCP/IP 소켓입니다. URI 형식은tcp://LISTEN_ADDRESS:PORT
format:
데이터 형식.json
또는none
일 수 있습니다.separator:
format: none
을 사용하는 경우 레코드 분할을 위한 구분자 문자열을 정의할 수 있습니다. (기본값:\n
)logs:- name: tcp-simple-testtcp:uri: tcp://0.0.0.0:1234 # Use the tcp://LISTEN_ADDRESS:PORT formatformat: none # Raw text - this is default for 'tcp'separator: \t # String for separating raw text entriesmax_line_kb: 32- name: tcp-json-testtcp:uri: tcp://0.0.0.0:2345 # Use the tcp://LISTEN_ADDRESS:PORT formatformat: json
중요
인프라 에이전트 v.1.24.3부터 사용 가능
winevtlog Fluent Bit 플러그인을 사용하여 새로운 Windows 이벤트 로그 API를 사용하여 Windows 로그 채널에서 이벤트를 수집합니다.
매개변수:
channel:
채널 로그의 이름이 수집됩니다.collect-eventids:
수집하여 뉴렐릭에 전달할 Windows 이벤트 ID 목록입니다. 이벤트 ID 범위가 지원됩니다.exclude-eventids:
컬렉션에서 제외할 Windows 이벤트 ID 목록입니다. 이벤트 ID 범위가 지원됩니다.모든 이벤트는 기본적으로 지정된 채널에서 수집됩니다. 뉴렐릭 계정에 원치 않는 로그가 전송되지 않도록
collect-eventids
및exclude-eventids
섹션을 구성합니다.이벤트 ID 또는 범위를
collect-eventids
또는exclude-eventids
에 추가하여 특정 이벤트를 전달하거나 삭제합니다. 동일한 이벤트 ID가 두 섹션에 모두 있는 경우exclude-eventids
가collect-eventids
보다 우선합니다.예:
logs:# Winevtlog log ingestion with eventId filters.- name: windows-securitywinevtlog:channel: Securitycollect-eventids:- 4624- 4265- 4700-4800exclude-eventids:- 4735# entries for the application, system, powershell, and SCOM channels- name: windows-applicationwinevtlog:channel: Application- name: windows-systemwinevtlog:channel: System- name: windows-pshellwinevtlog:channel: Windows Powershell- name: scomwinevtlog:channel: Operations Manager# Entry for Windows Defender Logs- name: windows-defenderwinevtlog:channel: Microsoft-Windows-Windows Defender/Operational# Entry for Windows Clustering Logs- name: windows-clusteringwinevtlog:channel: Microsoft-Windows-FailoverClustering/Operational# Entry for IIS logs with logtype attribute for automatic parsing- name: iis-logfile: C:\inetpub\logs\LogFiles\w3svc.logattributes:logtype: iis_w3c
중요
Winlog는 클래식 이벤트 로그만 수집할 수 있습니다. 다른 로그를 캡처하려고 하면 애플리케이션 로그가 자동으로 수집됩니다.
Windows 로그 채널에서 이벤트를 수집합니다.
매개변수:
channel:
채널 로그의 이름이 수집됩니다. 커스텀 채널에서는 작동하지 않습니다.collect-eventids:
수집하여 뉴렐릭에 전달할 Windows 이벤트 ID 목록입니다. 이벤트 ID 범위가 지원됩니다.exclude-eventids:
컬렉션에서 제외할 Windows 이벤트 ID 목록입니다. 이벤트 ID 범위가 지원됩니다.모든 이벤트는 기본적으로 지정된 채널에서 수집됩니다. 뉴렐릭 계정에 원치 않는 로그가 전송되지 않도록
collect-eventids
및exclude-eventids
섹션을 구성합니다.이벤트 ID 또는 범위를
collect-eventids
또는exclude-eventids
에 추가하여 특정 이벤트를 전달하거나 삭제합니다. 동일한 이벤트 ID가 두 섹션에 모두 있는 경우exclude-eventids
가collect-eventids
보다 우선합니다.예:
logs:# Winlog log ingestion with eventId filters.- name: windows-securitywinlog:channel: Securitycollect-eventids:- 4624- 4265- 4700-4800exclude-eventids:- 4735# entries for the application, system, powershell, and SCOM channels- name: windows-applicationwinlog:channel: Application- name: windows-systemwinlog:channel: System- name: windows-pshellwinlog:channel: Windows Powershell- name: scomwinlog:channel: Operations Manager# Entry for Windows Defender Logs- name: windows-defenderwinlog:channel: Microsoft-Windows-Windows Defender/Operational# Entry for Windows Clustering Logs- name: windows-clusteringwinlog:channel: Microsoft-Windows-FailoverClustering/Operational# Entry for IIS logs with logtype attribute for automatic parsing- name: iis-logfile: C:\inetpub\logs\LogFiles\w3svc.logattributes:logtype: iis_w3c
3단계. 키 속성 정의
이러한 구성 파라미터는 필수는 아니지만 로그 전달을 최대한 활용할 수 있도록 이러한 구성을 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 GUID를 삽입합니다. 참고: 캡처된 로그가 APM을 사용하여 계측된 애플리케이션에 속하는 경우 |
| 항상 삽입됩니다. 로그를 캡처하는 데 사용되는 기본 Fluent Bit 입력 플러그인 유형입니다. 현재 값은 |
|
모니터링 중인 파일의 절대 파일 경로입니다. |
| 항상 삽입됩니다. 인프라 에이전트를 실행하는 머신/VM/컨테이너의 호스트 이름입니다. |
| 항상 삽입됩니다. 로그를 캡처하는 데 사용되는 유틸리티를 나타냅니다. 이 경우 인프라 에이전트 자체이므로 이 속성의 값은 항상 |
레코드 필터링을 위한 정규식입니다. 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단계. 로그 데이터 보기
모든 것이 올바르게 구성되고 데이터가 수집되는 경우 다음 위치에서 로그 및 관련 텔레메트리 데이터를 확인해야 합니다.
- 뉴렐릭 UI에서 선택한 호스트의 Summary 페이지: one.newrelic.com > Explorer 또는 Infrastructure > Hosts > (엔티티 선택) > Logs로 이동합니다.
- 뉴렐릭의 로그 UI
- NRQL 쿼리를 실행하기 위한 뉴렐릭의 툴. 예를 들어 다음과 같은 쿼리를 실행할 수 있습니다.
SELECT * FROM Log
온-호스트 통합의 로깅 활성화
인프라 에이전트를 설치하면 가장 널리 사용되는 온-호스트 통합에 대한 자동 로그 구문 분석 및 전달을 한 단계로 활성화할 수 있습니다. 이 기능을 활성화하려면 on-host-log.yml.example
파일의 이름을 on-host-log.yml
로 바꿉니다. 완료되면 통합 로그가 자동으로 구문 분석되어 뉴렐릭으로 전송됩니다.
이 옵션은 지원되는 Linux 플랫폼에서 사용할 수 있습니다.
호스트 내 통합 로그 전달 기능을 활성화하려면:
elasticsearch-log.yml.example
파일을 elasticsearch-log.yml
에 복사(또는 이름 변경)하여 자동 Elasticsearch JSON 형식 로그 구문 분석 및 뉴렐릭으로 전달을 활성화합니다. 에이전트를 다시 시작할 필요가 없습니다.
예:
sudo cp /etc/newrelic-infra/logging.d/elasticsearch-log.yml.example /etc/newrelic-infra/logging.d/elasticsearch-log.yml
자동 MySQL 오류 로그 구문 분석 및 뉴렐릭으로 전달을 활성화하려면 mysql-log.yml.example
파일을 mysql-log.yml
에 복사(또는 이름 변경)합니다. 에이전트를 다시 시작할 필요가 없습니다.
예:
sudo cp /etc/newrelic-infra/logging.d/mysql-log.yml.example /etc/newrelic-infra/logging.d/mysql-log.yml
nginx-log.yml.example
파일을 nginx-log.yml
에 복사(또는 이름 변경)하여 자동 NGINX 액세스 및 오류 로그 구문 분석 및 뉴렐릭으로 전달을 활성화합니다. 에이전트를 다시 시작할 필요가 없습니다.
예:
sudo cp /etc/newrelic-infra/logging.d/nginx-log.yml.example /etc/newrelic-infra/logging.d/nginx-log.yml
rabbitmq-log.yml.example
파일을 rabbitmq-log.yml
에 복사(또는 이름 변경)하여 자동 Rabbitmq 오류 로그 구문 분석 및 뉴렐릭으로 전달을 활성화합니다. 에이전트를 다시 시작할 필요가 없습니다.
예:
sudo cp /etc/newrelic-infra/logging.d/rabbitmq-log.yml.example /etc/newrelic-infra/logging.d/rabbitmq-log.yml
자동 Redis 오류 로그 구문 분석 및 뉴렐릭으로 전달을 활성화하려면 redis-log.yml.example
파일을 redis-log.yml
에 복사(또는 이름 변경)합니다. 에이전트를 다시 시작할 필요가 없습니다.
예:
sudo cp /etc/newrelic-infra/logging.d/redis-log.yml.example /etc/newrelic-infra/logging.d/redis-log.yml
Linux tarball을 사용하여 설치된 에이전트에서 로그 전달 활성화
인프라 모니터링을 위한 맞춤형 Linux 설치 프로세스를 통해 설치 프로세스의 모든 측면을 조정하고 시스템에 파일과 폴더를 배치할 수 있습니다. 지원 또는 수동 tarball 설치 프로세스를 선택한 경우, 다음 단계에 따라 로그 전달자 기능을 구현합니다.
- 다음 디렉터리를 만듭니다.
/var/db/newrelic-infra/newrelic-integrations/logging
/etc/newrelic-infra/logging.d
다음과 유사한 명령을 실행하여 뉴렐릭의 fluent-bit-package(RPM)를 다운로드하고 설치합니다.
bash$yum localinstall td-agent-bit-<some-version>.rpm`뉴렐릭의 fluentbit 플러그인을 다운로드하고
/var/db/newrelic-infra/newrelic-integrations/logging/out_newrelic.so
로 저장합니다.이 Github 저장소에서
parsers.conf
파일을 다운로드하거나 복사하고/var/db/newrelic-infra/newrelic-integrations/logging/parsers.conf
에 저장합니다.
이 문서가 설치하는데 도움이 되셨나요?
문제 해결
로그 전달자를 구성하는 데 문제가 발생하면 다음 문제 해결 팁을 시도하십시오.
로그 관리 기능을 활성화한 후에도 데이터가 나타나지 않으면 표준 로그 문제 해결 절차를 따르십시오.
로그 전달 기능을 사용하려면 에이전트에 데이터 소스를 읽을 수 있는 권한이 있어야 합니다. 인프라 에이전트를 특권 또는 비특권 모드로 실행할 때 전달하려는 로그 파일(및 해당 경로의 모든 중간 디렉터리)을 nri-agent
를 실행하는 사용자가 읽을 수 있는지 확인합니다.
예: Linux에서 파일 액세스 확인
nri-agent
사용자가 /var/log/restrictedLogs/logFile.log
파일을 모니터링할 수 있는지 확인해 봅니다. Linux에서는 namei
명령을 사용하여 빠르게 확인할 수 있습니다.
sudo -u nri-agent namei -ml /var/log/restrictedLogs/logFile.logf: /var/log/restrictedLogs/logFile.logdrwxr-xr-x root root /drwxr-xr-x root root vardrwxrwxr-x root syslog logdrwxr--r-- root root restrictedLogslogFile.log - No such file or directory
파일이 nri-agent
사용자에게 표시되지 않기 때문에 이 명령이 실패했습니다. 이전 출력을 검사하여 restrictedLogs
디렉터리에 others
에 대한 실행 플래그가 없음을 감지할 수 있습니다.
이 문제를 해결하려면 다음을 실행하십시오.
sudo chmod 755 /var/log/restrictedLogs
그런 다음 파일 액세스를 다시 확인합니다.
# sudo -u nri-agent namei -ml /var/log/restrictedLogs/logFile.logf: /var/log/restrictedLogs/logFile.logdrwxr-xr-x root root /drwxr-xr-x root root vardrwxrwxr-x root syslog logdrwxr-xr-x root root restrictedLogs-rw-r----- vagrant vagrant logFile.log
이제 파일이 nri-agent
사용자에게 표시됩니다. nri-agent
사용자도 파일을 읽을 수 있는지 확인해야 합니다. 이를 확인하려면 다음을 사용합니다.
# sudo -u nri-agent head /var/log/restrictedLogs/logFile.loghead: cannot open '/var/log/restrictedLogs/logFile.log' for reading: Permission denied
이 예에서 파일에는 others
그룹(vagrant
및 vagrant
사용자 그룹 이외의 사용자)에 대한 읽기 권한이 없습니다. others
에 읽기 권한을 부여하여 이 문제를 해결할 수 있지만 애플리케이션은 다시 시작할 때 이러한 권한을 변경할 수 있습니다.
이를 방지하려면 nri-agent
사용자를 vagrant
사용자 그룹에 추가하는 것이 더 좋습니다.
로그 전달 기능을 사용하려면 에이전트에 데이터 소스를 읽을 수 있는 권한이 있어야 합니다. 특권 또는 비특권 모드에서 인프라 에이전트를 실행할 때:
Unix 도메인 소켓 파일을 사용하는 경우
nri-agent
사용자가 이 파일에 액세스할 수 있고(이전 섹션 참조) 읽기 및 쓰기 권한(666
)이 있는지 확인하여 다른 사용자들이nri-agent
쓰기를 할 수 있도록 합니다.IP 소켓을 사용하는 경우 사용 중인 포트가 시스템 예약 포트가 아닌지 확인합니다. (예: 포트
80
)로그 관리를 활성화한 후 데이터가 나타나지 않으면 표준 로그 관리 문제 해결 절차를 따릅니다.
인프라 에이전트 구성 가이드라인에 설명된 대로 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에 대해 아래 규칙을 따르는 것이 좋습니다.
Linux HTTP
프록시의 경우 인증서를 설정할 필요가 없습니다. 플러그인은 시스템 인증서를 로드하고 뉴렐릭은 로그를 로깅 엔드포인트로 보냅니다. 그러나 caBundleFile
또는 caBundleDir
매개변수를 사용하여 프록시 자체 서명 인증서(PEM 파일)를 지정할 수 있습니다.
Windows
HTTP
프록시의 경우 인증서를 설정할 필요가 없습니다. 플러그인은 시스템 인증서를 로드합니다.HTTPS
의 경우 다음 방법 중 하나로 구성할 수 있습니다.시스템 풀로 프록시 인증서 가져오기(권장) MMC 툴을 사용하여 프록시 자체 서명 인증서(PEM 파일)를 가져옵니다. 이 링크를 참조하고 2단계에서
Intermediate Certification Authorities
대신Trusted Root Certification Authorities
에서 가져오도록 합니다.caBundleFile
및caBundleDir
매개변수 사용하는 Windows에서는 시스템 인증서 풀의 인증서와caBundleFile
caBundleDir
매개변수로 지정된 인증서를 모두 로드할 수 없습니다. 따라서caBundleFile
또는caBundleDir
를 사용하는 경우 다음 인증서가 동일한 PEM 파일(caBundleFile
사용 시) 또는 동일한 디렉터리(caBundleDir
사용 시)에 있는지 확인합니다.프록시 인증서(
HTTPS
프록시이기 때문에)로깅 엔드포인트 인증서(예:
https://log-api.newrelic.com/log/v1
)인프라 에이전트 인증서(예:
https://infra-api.newrelic.com
)다음을 실행하여 인증서를 확인할 수 있습니다.
# openssl s_client -connect log-api.newrelic.com:443 -servername log-api.newrelic.com
자체 로그를 뉴렐릭에 보내도록 인프라 에이전트를 구성할 수 있습니다. 이는 로그 전달, 에이전트 문제를 해결하거나 지원 팀에 문의할 때 유용합니다.
중요
트레이스 로깅은 많은 데이터를 매우 빠르게 생성합니다. 디스크 공간 소비 및 데이터 인제스트를 줄이려면, 로그 생성이 완료되었을 때 level: info
(또는 그 이하)로 설정해야 합니다.
인프라 에이전트 로그를 뉴렐릭에 전달하려면:
newrelic-infra.yml
파일을 수정합니다.다음 구성 스니펫을 추가하여 뉴렐릭으로의 로그 전달을 활성화합니다.
log:level: trace # Recommended: Helps with troubleshootingforward: true # Enables sending logs to New Relicformat: json # Recommended: Enable agent logging in JSON formatstdout: false # On Windows and systems that don't use `systemd` or where `journald` is inaccessible에이전트를 다시 시작하여 새 설정을 로드합니다.
이 구성은 에이전트를 문제 해결 모드로 설정하지만 로그 전달자(Fluent Bit 기반)는 non-verbose 모드에서 계속됩니다.
때로는 로그 전달자 자체에 문제가 있을 수 있습니다. 예를 들어, Windows 로그 이벤트를 전달하거나 특정 로그 파일에 액세스할 때 특정 채널에 액세스하는 데 문제가 있을 수 있습니다. 이러한 상황에서는 로그 전달자에 대해 상세 정보 표시(verbose) 모드를 활성화할 수도 있습니다.
중요
트레이스 로깅은 많은 데이터를 매우 빠르게 생성합니다. 디스크 공간 소비 및 데이터 인제스트를 줄이려면, 로그 생성이 완료되었을 때 level: info
(또는 그 이하)로 설정해야 합니다.
newrelic-infra.yml
파일을 수정합니다.다음 구성 스니펫을 추가함으로써 Fluent Bit verbose 로그 활성화
log:level: traceforward: true # Enables sending logs to New Relicformat: json # Recommended: Enable agent logging in JSON formatstdout: false # On Windows and systems that don't use `systemd` or where `journald` is inaccessibleinclude_filters:traces:- supervisor # Required to see verbose logs from Fluent Bit에이전트를 다시 시작하여 새 설정을 로드합니다.
중요
Fluent Bit의 tail 플러그인은 네트워크 드라이브를 지원하지 않습니다.
2016년 이전 Linux 버전의 경우 OpenSSL 라이브러리를 1.1.0(또는 그 이상)으로 업데이트해야 할 수 있습니다. 이 문제가 있는지 확인해 보세요:
다음을 실행하여
infra-agent
가 Fluent Bit를 시작했는지 확인합니다.ps -aux | grep td-agent-bit실행 중이 아니면
/var/db/newrelic-infra/newrelic-integrations/logging
으로 이동하여 다음을 실행합니다../fluent-bit -i systemd -o stdout다음 오류가 발생하면 OpenSSL을 1.1.0 이상으로 업데이트하십시오.
error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory
Windows에서 로그 전달을 활성화할 때 다음 오류 메시지 중 하나가 나타날 수 있습니다.
The code execution cannot proceed because VCRUNTIME140.dll was not found.
또는
error="exit status 3221225781" process=log-forwarder
이것은 누락된 DLL로 인해 발생합니다.
이 문제를 해결하려면 해당하는 경우 Microsoft Visual C++ 재배포 가능 패키지를 설치합니다.
많은 양의 파일을 테일링하려고 할 때 보통 다음 오류 메시지 중 하나에 직면하게 됩니다.
Too many open files
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
사용자를 사용하여 실행해야 합니다.
프로세스당 파일 디스크립터의 양에 대한 현재 하드 한도를 확인합니다. 일반적으로 이 한도는 상당히 높아야 하며 수정할 필요가 없습니다.
ulimit -Hn/etc/security/limits.conf
에 다음 줄을 추가합니다. Fluent Bit가 작동하는 데 필요할 수 있는 추가 파일 설명자를 할당할 수 있도록 여기에서10000
대신10100
한도를 지정했습니다.root soft nofile 10100 # replace root by nri-agent for non-root (privileged and unprivileged) installations다시 시작할 때 이전 제한이 적용되도록
/etc/pam.d/common-session
에 다음 줄을 추가합니다.session required pam_limits.so사용자당 허용되는 inotify 감시자의 양을 늘리려면 다음 줄을
/etc/sysctl.conf
에 추가합니다.root
사용자가 여전히8192
사용 가능한 inotify 감시자(기본값)를 가질 수 있도록 여기에10000
대신18192
한도를 지정했습니다.fs.inotify.max_user_watches=18192시스템을 다시 시작합니다.
다음을 실행하여 새 한도가 적용되었는지 확인합니다.
ulimit -Sn # Should return 10100cat /proc/sys/fs/inotify/max_user_watches # Should return 18192파일 열기 한도를 늘리는 방법이나 inotify 감시를 늘리는 방법에 대해 자세히 알아보십시오.
버전 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:
sudo yum check-updateyum list td-agent-bit --showduplicates
DEB:
sudo apt updateapt-cache showpkg td-agent-bit
특정 Fluent Bit 버전으로 업그레이드하려면 다음을 실행하십시오. (다음 예에서는 버전 1.8.12
이 사용됨)
RPM:
# Remove command only required when downgrading to a previous versionsudo yum remove td-agent-bitsudo yum install td-agent-bit-1.8.12-1
DEB:
sudo apt install td-agent-bit=1.8.12
다음 단계는?
로그 UI를 사용하여 플랫폼 전반에 걸쳐 로깅 데이터를 탐색합니다.
- 문맥적 로그 기능으로 로그를 전달하여 애플리케이션과 플랫폼 성능 데이터에 대한 더 깊은 가시성을 얻을 수 있습니다.
- 알림을 설정합니다.
- 데이터를 쿼리하고 대시보드를 만듭니다.
로그 전달 비활성화
로그 전달 기능을 비활성화하려면 logging.d
디렉터리로 이동하여 구성 프로세스 중에 원래 추가된 확장명이 .yml
인 파일을 제거합니다.
- Linux:
/etc/newrelic-infra/logging.d/
- Windows:
C:\Program Files\New Relic\newrelic-infra\logging.d\