New Relic의 인프라 에이전트는 자체 데이터와 통합 로그를 수집하여 단일 소스에 통합합니다. 기본적으로 로그는 standard-output
에 나타나며 로그 파일 에 추가됩니다. 표준 출력에서 로그를 비활성화하려면 에이전트의 구성 옵션을 참조하십시오 .
기본 구성
다음 예는 Linux 시스템의 에이전트 로그에 대한 일반적인 구성을 보여줍니다(Windows 또는 기타 플랫폼을 실행할 때 파일 경로 변경).
log: level: info file: '/var/log/newrelic-infra/newrelic-infra.log' rotate: max_size_mb: 100 max_files: 5 compression_enabled: true file_pattern: YYYY-MM-DD_hh-mm-ss.log
로깅 심각도 수준
인프라는 표준 Syslog 심각도 수준 의 하위 집합을 사용합니다.
ERROR
: 오류 조건 충족WARN
: 경고 조건 충족INFO
: 정보 메시지DEBUG
: 디버그 수준 메시지 포함(문제 해결 시 유용)
로그 포맷
인프라 에이전트 v1.4.9 이상의 경우 로그 메시지는 컨텍스트 값으로 인라인됩니다. 이것은 더 나은 그룹화 및 필터링을 제공합니다. 예를 들어:
containerized agent found in container containerID: VALUE
기본적으로 인프라 로그는 텍스트 형식으로 지정됩니다.
전경 모드에서 로그 출력은 타임스탬프 없이 색상이 지정됩니다.
DEBUG Sending deltas divided in blocks component=PatchSender mentityKey=ohaimaci mnumberOfBlocks=1백그라운드 모드에서 로그는 타임스탬프가 찍힌 출력으로, 서비스로 실행하거나 로그를 파일에 덤프할 때 사용됩니다.
time="2019-07-12T09:54:15+02:00" level=info msg="Agent service manager shutdown completed successfully." component=AgentService service=newrelic-infra
또는 로그를 JSON 파일로 형식화할 수 있습니다.
{"context":{},"level":"info","msg":"upstart_interval_sec: 0","timestamp":"2019-07-11T18:24:03+02:00"}{"context":{},"level":"info","msg":"plugin_dir: ","timestamp":"2019-07-11T18:24:03+02:00"}
로그 형식을 변경하려면 에이전트 구성 설정 을 참조하십시오.
내장 로그 회전
인프라 에이전트 v1.28.0 이상의 경우 에이전트 에서 기본 제공 로그 회전 및 압축 메커니즘을 사용할 수 있습니다.
스마트 자세한 정보 표시 모드
인프라 에이전트 버전 1.9.0 이상의 경우 로그에 대해 스마트 상세 정보 표시 모드를 활성화할 수 있습니다.
스마트 상세 정보 표시 모드는 오류 메시지가 감지될 때까지 디버그 메시지가 기록되는 것을 방지합니다. 오류가 감지되면 오류가 발생하기 전에 디버그 메시지가 로그 파일에 기록됩니다. 가장 최근에 구성된 디버그 메시지 수만 기록됩니다. 예를 들어, 구성된 제한이 10인 경우 오류가 감지되면 오류가 감지되기 전의 가장 최근 디버그 메시지 10개가 기록됩니다.
스마트 상세 정보 표시 모드 및 디버그 메시지 제한을 활성화하는 방법에 대한 자세한 내용은 인프라 구성 설정 을 참조하십시오.
통합 로그 관리
통합은 JSON 페이로드를 STDOUT
에 쓰고 일반 텍스트(향후 JSON 구조) 로그를 STDERR
에 씁니다.
인프라 에이전트는 통합 STDERR
줄을 처리하고 이 출력을 에이전트 로그로 전달합니다.
에이전트는 각 STDERR
줄을 다음과 같이 처리합니다.
- When agent runs in verbose mode:
STDERR
줄 전체를 DEBUG 에이전트 로그 항목으로 전달하고msg
필드에 통합 줄 컨텍스트를 배치합니다. - Otherwise: 예상 형식에 따라 줄을 구문 분석하고
fatal
또는error
심각도 수준을 가진 통합으로 생성된 항목만 대리점 ERROR 수준으로 로그합니다. 이 경우 필드는 구조화된 방식으로 추출되어 전달됩니다. 따라서 에이전트 필드에 JSON 출력이 활성화되면 해당 필드를 쿼리할 수 있게 됩니다.
기본적으로 인프라 에이전트는 통합 실행을 방해하지 않는 통합 오류를 필터링합니다. 로그인 레벨이 DEBUG로 설정되어 있거나 통합이 로그 구성에 구체적으로 나열되어 있는 경우에만 통합의 모든 오류가 표시됩니다. 예를 들어 이 설정에서는 로그 레벨이 INFO인 경우에도 nri-mssql
에서 발생하는 모든 오류가 표시됩니다.
log: include_filters: integration_name: - nri-mssql
통합 STDERR 예상 형식
줄은 동일한 문자로 구분된 키-값 쌍의 목록이어야 합니다. 키는 모든 문자를 포함할 수 있지만 값은 세 가지 형식을 가질 수 있습니다.
- string: <quote>이스케이프된 따옴표를 포함한 모든 문자 \"<quote>
- 지도: &{any character}
- 단어: 공백을 제외한 모든 문자
내부적으로 에이전트는 이 정규식을 사용하여 필드를 추출했습니다.
([^\s]*?)=(".*?[^\\]"|&{.*?}|[^\s]*)
예를 들어 이 줄은 다음과 같습니다.
time="2015-03-26T01:27:38-04:00" level=error msg="Foo bar baz" foo=bar
다음 필드가 있는 구조화된 상담원 로그 줄을 생성합니다.
- "time": "2015-03-26T01:27:38-04:00"- "level": "error"- "msg": "Foo bar baz"- "foo": "bar"