카우치베이스 서버는 오류를 생성하는 시스템의 구성 요소와 보고되는 문제의 수준 및 문제에 따라 다양한 로그 파일을 생성합니다. 이러한 개별 로그 파일을 사용하면 문제의 근본 원인을 훨씬 더 빨리 좁힐 수 있습니다. 이 블로그에서는 Couchbase Server 로그와 이러한 로그를 사용하여 Couchbase 클러스터에 대한 더 많은 인사이트를 얻는 방법에 대해 설명합니다. 플랫폼(Linux, Windows 또는 Mac OSX)에 따라 로그 파일의 위치는 다를 수 있습니다.
카우치베이스 서버에는 데이터베이스의 여러 구성 요소에 대해 서로 다른 로그 파일이 있습니다. 각 노드, 각 로그 파일 위치에는 서로 다른 로그 파일 목록이 포함되어 있습니다.
개별 로그 파일은 자동으로 번호가 매겨지며 새 로그마다 숫자 접미사가 붙습니다. 로그당 최대 20개의 로그 파일이 있으며 기본적으로 각 로그 파일의 최대 파일 크기는 10MB입니다. 최대 로그 파일 수에 도달하면 가장 오래된 로그 파일이 새 파일 콘텐츠로 덮어씌워집니다.
이제 Couchbase Server 로그가 유용할 수 있는 두 가지 예시 시나리오를 살펴보겠습니다.
1. 자바스크립트 맵 축소 함수가 결과를 출력하지 않는 경우
뷰로 작업할 때 정의되지 않은 필드가 있는 뷰를 정의하면 결과가 표시되지 않습니다. 특히 속성을 내보내지만 부모가 존재하지 않는 경우에 이러한 문제가 발생할 수 있습니다. 예를 들어 emit(doc.foo.bar, null) 속성을 포함하지 않도록 문서에 "foo". 다음은 더 간단한 예입니다.
emit(doc1.foo, null);
}
아래 그림 1에서 자바스크립트 필드 "doc1" 가 존재하지 않습니다. 뷰를 저장할 수는 있지만 결과를 찾을 수 없습니다.
그림 1 : 정의되지 않은 객체가 있는 자바스크립트의 맵 함수 예제 doc1
그러나 문제를 진단하기 위해 다음을 살펴볼 수 있습니다. mapreduce_errors.1 로그 파일을 확인합니다. 참조 오류가 기록되는 것을 확인할 수 있습니다.
그림 2: mapreduce_errors 파일에 표시된 정의되지 않은 참조 오류
현재 뷰를 작성할 때 위와 같이 런타임 오류로 인해 문서가 건너뛰는 경우 해당 디자인 문서의 모든 뷰에서 건너뛰게 됩니다. 로그 파일을 자세히 살펴볼 수 있는 또 다른 시나리오입니다.
일반적으로 뷰를 작성할 때 따라야 하는 모범 사례 중 하나는 참조 해제되는 상위 필드가 존재하는지 테스트하는 것입니다. 이 예제에서는 맵 함수를 다음과 같이 다시 작성할 수 있습니다:
함수 (문서, 메타) {
만약(doc.foo)
{
emit(doc1.foo, null);
}
}
2. 대상 버킷이 갑자기 삭제될 때 발생하는 XDCR 오류
Couchbase Server 2.0의 데이터센터 간 복제는 두 개의 Couchbase Server 클러스터 간에 단방향 및 양방향 활성-활성 복제를 지원합니다. 단방향 데이터센터 간 복제가 다음에서 설정되었다고 가정해 보겠습니다. 맥주 샘플 버킷을 소스 클러스터의 testBucket 버킷을 대상 클러스터에 추가합니다.
만약 testBucket 버킷이 대상 클러스터에 있는 경우, XDCR이 진행 중일 때 대상 클러스터가 갑자기 삭제되면, 아래 그림 4와 같이 소스 클러스터 노드의 xdcr_error 로그 파일에 오류가 기록되어 XDCR을 계속할 수 없습니다. 카우치베이스 서버 관리자 콘솔(그림 5)에도 최근 10개의 XDCR 관련 오류가 표시됩니다.
그림 3 : xdcr_error 파일에서 버킷을 찾을 수 없음
그림 4 : Couchbase 관리 콘솔 UI에 표시되는 최근 10개의 오류
버그를 발견하셨나요?
오픈 소스 제품인 만큼 Couchbase Server를 사용하면서 여러분의 피드백을 기다립니다. 예기치 않은 동작이 발생하면 버그를 기록해 주세요.
다행히도 개발팀이 조사하는 데 필요한 모든 로그를 압축하는 도구가 있습니다. cbcollect_info Linux의 /opt/couchbase/bin 및 /Applications/Couchbase의 도구
Server.app/Contents/Resources/couchbase-core/bin에 있습니다. 이 도구는 특정 Couchbase 서버 노드에 대한 모든 로그를 수집하여 파일로 압축합니다.
버그 리포트에 이 파일을 첨부하는 것을 잊지 마세요.
행복한 해킹!
—
첫 번째 섹션의 올바른 예는 다음과 같아야 합니다.
함수 (문서, 메타) {
if(doc.foo)
{
emit(doc.foo.bar, null);
}
}
로그 위치 링크가 다음과 같이 변경되었습니다. http://docs.couchbase.com/couc…
[...] Couchbase는 단일 클러스터 아키텍처의 분산형 고성능 캐시 및 NoSQL 데이터베이스입니다. 비슷한 이름과 공유된 유산에도 불구하고 Couchbase는 CouchDB나 다른 어떤 NoSQL 제품과는 매우 다른 제품입니다. 애플리케이션 메트릭과 함께 Couchbase 성능을 모니터링하고 프로파일링할 수 있는 것은 매우 중요합니다. 시간이 지남에 따라 모니터링은 모든 미션 크리티컬 시스템의 성공적인 배포를 위한 필수 요소입니다. 이는 일반적으로 그렇지만 특히 분산 컴퓨팅 환경에서는 더욱 중요합니다. 장기적인 성공을 보장하는 유일한 방법이기 때문입니다. 이 논의에서는 모니터링에 초점을 맞추고자 하지만, 애플리케이션 문제 해결을 용이하게 하기 위해 자세한 Couchbase 로깅을 제공한다는 점을 알아두는 것이 중요합니다. 이러한 로그는 '/opt/couchbase/var/lib/couchbase/logs'에 저장됩니다. 이러한 로그에 대한 자세한 내용은 Couchbase 비행 기록기(https://www.couchbase.com/couchbase-server-recorder). […]