광범위한 로그 데이터는 문제를 해결하는 데 도움이 될 수 있습니다. 그러나 로그의 속성에 수천 개의 문자가 포함되어 있으면 어떻게 될까요? New Relic은 이 데이터를 얼마나 저장할 수 있습니까? 그리고 이 모든 데이터에서 유용한 정보를 어떻게 찾을 수 있습니까?
얼룩이 작동하는 방식
NRDB에 저장할 수 있는 것보다 긴 긴 문자열 값(4,094자)의 경우 긴 문자열을 세 부분으로 저장합니다.
긴 로그 섹션 | 설명 |
---|---|
처음 4,094자 | 처음 4,094자는 같은 이름의 |
다음 128,000 UTF-8 바이트 | 문자열의 다음 128,000 UTF-8 바이트는 이름 앞에 저장된 실제 문자 수는 문자의 UTF-8 표현에 따라 다릅니다. UTF-8은 유니코드 문자를 1-4바이트로 나타내므로 처음 4,094자를 지나 32,000-128,000자를 저장합니다. |
남은 문자 | 4,094자 및 128,000바이트를 초과하는 모든 문자는 삭제되고 저장되지 않습니다. |
쿼리 결과 | Blob 쿼리의 결과는 20개로 제한됩니다. |
따라서 긴 message
필드는 다음과 같이 저장됩니다.
message: <first 4,094 characters as a string>newrelic.ext.message: <next 128,000 bytes as a 'blob'>
팁
문자열 속성의 처음 4,094자를 검색할 수 있습니다. 처음 4,094자에 대한 알림을 생성할 수도 있습니다. 그러나 blob
저장소는 검색할 수 없으므로 처음 4,094자를 초과하는 텍스트는 검색하거나 경고할 수 없습니다.
Blob에 대한 데이터 쿼리
one.newrelic.com > All capabilities > Logs: 로그인에서 확장 Blob 데이터를 쿼리하려면 속성의 Blob 구문에 백틱을 포함해야 합니다.
New Relic에서 로그 데이터를 쿼리하려면 다음 쿼리를 실행합니다.
SELECT * FROM Log
Blob 데이터를 확장하려면 message
또는 다른 속성을 사용하여 다음 쿼리를 실행합니다. blob의 속성을 백틱으로 묶어야 합니다. 예를 들어:
SELECT message, another-attribute, blob(`newrelic.ext.message`), blob(`newrelic.ext.another-attribute`) FROM Log
이렇게 하면 Blob의 데이터가 확장되어 볼 수 있지만 검색할 수는 없습니다. 예를 들어 New Relic은 다음을 반환합니다.
{ "message": <first 4,094 characters> "newrelic.ext.message": <the next 128,000 bytes as Base64> "another-attribute": <first 4,094 characters> "newrelic.ext.another-attribute": <the next 128,000 bytes as Base64>}
로그 UI는 로그 세부 정보 보기를 볼 때 자동으로 원래 값을 다시 결합합니다. NRQL을 직접 사용하여 쿼리하는 경우 다음을 통해 정보를 수동으로 결합해야 합니다.
newrelic.ext.
속성 값의 Base64 디코딩- 결과 UTF-8을 문자열로 변환
- "main" 속성의 처음 4,094자에 해당 문자열 추가
긴 로그에 대한 데이터 보존
NRDB는 한 달 동안 Blob 레코드를 유지합니다. 기존의 긴 로그 메시지가 LogExtendedRecord
으로 저장된 경우 해당 데이터는 NRDB에서 한 달 동안 계속 사용할 수 있습니다.
한 달이 지나면 더 이상 새로운 LogExtendedRecord
속성이 생성되지 않습니다. 그것들은 모두 NRDB에 blob으로 저장됩니다.