Logstash 로그 콜렉터
Liberty는 런타임 시에 로그 이벤트, 추적 이벤트, FFDC(First Failure Data Capture) 이벤트, 액세스 로그 이벤트 및 가비지 콜렉션 이벤트 등의 다양한 이벤트를 생성합니다. 특히 많은 서버를 관리 중이거나 다양한 플랫폼(예: 전용 하드웨어 및 Bluemix®)에서 서버를 실행 중인 경우에는 이벤트를 검색, 필터링하고 분석할 수 있도록 모든 서버의 이벤트를 통합하는 게 유용합니다. 또한 문제점 판별 데이터에 대한 지속적 파일 스토리지가 부족한 환경에서 Liberty를 사용하는 경우에는 별도의 서버에 이벤트를 저장하는 게 유용할 수도 있습니다.
Liberty는 이벤트를 원격으로 통합하는 데 도움이 되도록 Logstash 로그 콜렉터 기능을 제공합니다. 콜렉터는 인플라이트 이벤트를 캡처하고 이를 여러 필드로 분리하며 이벤트를 구성된 Logstash 로그 콜렉션 서버로 안전하게 전달합니다. 콜렉터는 다음 데이터 유형 중 하나 이상을 전송하도록 구성할 수 있습니다.
- 메시지 로그 이벤트
- 추적 로그 이벤트
- HTTP 액세스 로그 이벤트(Liberty 서버에서)
- FFDC 로그 이벤트
- 가비지 콜렉션 이벤트(IBM JDK에서만 사용 가능)
Logstash 콜렉터
Logstash 콜렉터 기능(logstashCollector-1.0)은 사용자가 제공하는 Logstash 서버에 이벤트를 전송합니다.
Logstash는 Elasticsearch 검색 서버 및 Kibana 대시보드와 함께 사용할 수 있으며 이들은 모두 엔터프라이즈에서 다른 이벤트 또는 로그의 통합 보기를 제공하기 위해 사용자가 제공하고 설정하고 관리합니다. Logstash 콜렉터가 이벤트를 전달할 수 있도록 Liberty 서버 컴퓨터에서 별도의 프로세스 또는 에이전트를 설정할 필요는 없습니다.
이벤트 구조
콜렉터는 각각의 이벤트를 필드 이름-값 쌍 세트로 전송합니다. 다양한 유형의 이벤트는 각각 자체 필드 세트를 가지고 있습니다. 고유한 Kibana 대시보드를 작성하는 경우 각 이벤트가 가지고 있는 필드를 알고 있으면 도움이 됩니다.
logstashCollector-1.0 필드 이름 | 필드 설명 |
---|---|
type | 이벤트의 유형을 식별하는 문자열 |
datetime | 이벤트가 발생한 시간 |
hostName | 이벤트의 소스인 서버의 호스트 이름 호스트 이름을 설정하는 규칙에 대한 자세한 정보는 Docker에서 실행 중인 Liberty에서 로그 콜렉터 사용의 내용을 참조하십시오. |
wlpUserDir | 이벤트의 소스인 서버의 사용자 디렉토리(예: D:\wlp\usr) |
serverName | 이벤트의 소스인 서버의 서버 이름 서버 이름을 설정하는 규칙에 대한 자세한 정보는 Docker에서 실행 중인 Liberty에서 로그 콜렉터 사용 참조 |
sequence | 이벤트의 순서 번호(시간소인이 동일한 레코드를 정렬하는 경우 유용함) |
![]() |
![]() |
- 메시지 이벤트
표 2. 메시지 이벤트(유형: "liberty_message") logstashCollector-1.0 필드 이름 필드 설명 severity 심각도 표시기(F = Fatal, E = Error, W = Warning, A = Audit, I = Info, O = SystemOut, R = SystemErr) messageId 특정 유형의 오류를 찾는 데 사용할 수 있는 로그 행의 메시지 ID(예: SRVE0250I) methodName 로그 레코드의 메소드 이름 className 로그 레코드의 클래스 이름 loggerName 로그 레코드의 로거 이름 threadId 로그 행의 스레드 ID(예: 00000015). 스레드 ID는 숫자가 아니라 문자열입니다. 메시지 메시지 ID로 시작하는 로그 레코드의 메시지 참고: 기본 로그 및 추적 프레임워크뿐만 아니라 2진 로깅이 사용 가능한 경우 Logstash 콜렉터가 메시지 이벤트를 전달합니다.
- 추적 이벤트
표 3. 추적 이벤트(유형: "liberty_trace") logstashCollector-1.0 필드 이름 필드 설명 severity 심각도 표시기(1 = Fine, 2 = Finer, 3 = Finest, > = Entry, < = Exit) methodName 로그 레코드의 메소드 이름 className 로그 레코드의 클래스 이름 loggerName 로그 레코드의 로거 이름 threadId 로그 행의 스레드 ID(예: 00000015). 스레드 ID는 숫자가 아니라 문자열입니다. 메시지 로그 레코드의 메시지 참고: 기본 로그 및 추적 프레임워크뿐만 아니라 2진 로깅이 사용 가능한 경우 Logstash 콜렉터가 추적 이벤트를 전달합니다.
- HTTP 액세스 로그 이벤트
표 4. HTTP 액세스 로그 이벤트(유형: "liberty_accesslog") logstashCollector-1.0 필드 이름 필드 설명 uriPath 요청된 URL에 대한 경로 정보. 이 경로 정보는 조회 매개변수를 포함하지 않습니다(예: /pushworksserver/ push/apps/tags). requestMethod HTTP verb(예: GET) remoteHost 원격 호스트 IP 주소(예: 127.0.0.1) userAgent 요청의 userAgent 값 requestProtocol 프로토콜 유형(예: HTTP/1.1) queryString HTTP 요청에서 조회 문자열을 나타내는 문자열(예: color=blue&size=large) bytesReceived URL에서 수신된 바이트(예: 94) responseCode HTTP 응답 코드(예: 200) elapsedTime 요청을 제공하는 데 걸린 시간(마이크로초) requestHost 원격 호스트 IP 주소(예: 127.0.0.1) requestPort 요청의 포트 번호 - FFDC 이벤트
표 5. FFDC 이벤트(유형: "liberty_ffdc") logstashCollector-1.0 필드 이름 필드 설명 className FFDC 항목을 생성한 클래스 exceptionName FFDC 항목에서 보고된 예외 probeID 클래스 내에서 FFDC 지점의 고유 ID stackTrace FFDC 인시던트의 스택 추적 objectDetails FFDC 인시던트에 대한 인시던트 세부사항 threadId FFDC 인시던트의 스레드 ID - 가비지 콜렉션 이벤트
표 6. 가비지 콜렉션 이벤트(유형: "liberty_gc") logstashCollector-1.0 필드 이름 필드 설명 heap 현재 사용 가능한 힙의 총계 usedHeap 사용된 힙의 양 maxHeap
JVM이 허용하는 최대 힙
duration 가비지 콜렉션이 실행된 지속 시간(마이크로초) gcType 가비지 콜렉션 이벤트의 유형(예: 신생, 글로벌) reason 가비지 콜렉션의 이유
Docker에서 실행 중인 Liberty에서 로그 콜렉터 사용
기타 가상화된 환경이나 Docker 컨테이너에서 실행 중인 Liberty 서버의 경우, hostName 및 serverName은 다음과 같이 설정됩니다.
- CONTAINER_HOST 환경 변수의 값
- ${defaultHostName} Liberty 구성 변수의 값
- SDK(Software Development Kit)에서 보고하는 정규 호스트 이름
- CONTAINER_NAME 환경 변수의 값
- ${wlp.server.name} Liberty 구성 변수의 값
Liberty 서버가 IBM Cloud 컨테이너 서비스에서 실행되는 경우에는 CONTAINER_HOST 및 CONTAINER_NAME이 이미 사용자를 위해 설정되어 있습니다.
Liberty 서버가 Liberty Docker 집합체에서 실행되는 경우에는 CONTAINER_HOST 및 CONTAINER_NAME이 이미 사용자를 위해 설정되어 있습니다.
docker run -d -e LICENSE=accept -e CONTAINER_NAME=yourContainerName -e CONTAINER_HOST=yourContainerHost --name=yourContainerName yourImageName