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 대시보드를 작성하는 경우 각 이벤트가 가지고 있는 필드를 알고 있으면 도움이 됩니다.

다음과 같은 필드는 모든 이벤트에서 공통으로 존재합니다.
표 1. 공통 이벤트 유형
logstashCollector-1.0 필드 이름 필드 설명
type 이벤트의 유형을 식별하는 문자열
datetime 이벤트가 발생한 시간
hostName 이벤트의 소스인 서버의 호스트 이름

호스트 이름을 설정하는 규칙에 대한 자세한 정보는 Docker에서 실행 중인 Liberty에서 로그 콜렉터 사용의 내용을 참조하십시오.

wlpUserDir 이벤트의 소스인 서버의 사용자 디렉토리(예: D:\wlp\usr)
serverName 이벤트의 소스인 서버의 서버 이름

서버 이름을 설정하는 규칙에 대한 자세한 정보는 Docker에서 실행 중인 Liberty에서 로그 콜렉터 사용 참조

sequence 이벤트의 순서 번호(시간소인이 동일한 레코드를 정렬하는 경우 유용함)
[17.0.0.1 and later]tags [17.0.0.1 and later]이벤트가 발생한 서버와 연관된 태그
공통 필드 외에 각각의 이벤트 유형에는 자체 고유 필드도 있습니다.
  • 메시지 이벤트
    표 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로 시작하는 로그 레코드의 메시지
    [16.0.0.4 and later]참고: 기본 로그 및 추적 프레임워크뿐만 아니라 2진 로깅이 사용 가능한 경우 Logstash 콜렉터가 메시지 이벤트를 전달합니다.
  • 추적 이벤트
    표 3. 추적 이벤트(유형: "liberty_trace")
    logstashCollector-1.0 필드 이름 필드 설명
    severity 심각도 표시기(1 = Fine, 2 = Finer, 3 = Finest, > = Entry, < = Exit)
    methodName 로그 레코드의 메소드 이름
    className 로그 레코드의 클래스 이름
    loggerName 로그 레코드의 로거 이름
    threadId 로그 행의 스레드 ID(예: 00000015). 스레드 ID는 숫자가 아니라 문자열입니다.
    메시지 로그 레코드의 메시지
    [16.0.0.4 and later]참고: 기본 로그 및 추적 프레임워크뿐만 아니라 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 사용된 힙의 양
    [17.0.0.1 and later]maxHeap [17.0.0.1 and later]JVM이 허용하는 최대 힙
    duration 가비지 콜렉션이 실행된 지속 시간(마이크로초)
    gcType 가비지 콜렉션 이벤트의 유형(예: 신생, 글로벌)
    reason 가비지 콜렉션의 이유

Docker에서 실행 중인 Liberty에서 로그 콜렉터 사용

기타 가상화된 환경이나 Docker 컨테이너에서 실행 중인 Liberty 서버의 경우, hostNameserverName은 다음과 같이 설정됩니다.

hostName 필드는 사용 가능한 다음 값의 첫 번째로 설정됩니다.
  • CONTAINER_HOST 환경 변수의 값
  • ${defaultHostName} Liberty 구성 변수의 값
  • SDK(Software Development Kit)에서 보고하는 정규 호스트 이름
serverName 필드는 사용 가능한 다음 값 중에서 첫 번째로 설정됩니다.
  • CONTAINER_NAME 환경 변수의 값
  • ${wlp.server.name} Liberty 구성 변수의 값

Liberty 서버가 IBM Cloud 컨테이너 서비스에서 실행되는 경우에는 CONTAINER_HOST 및 CONTAINER_NAME이 이미 사용자를 위해 설정되어 있습니다.

Liberty 서버가 Liberty Docker 집합체에서 실행되는 경우에는 CONTAINER_HOST 및 CONTAINER_NAME이 이미 사용자를 위해 설정되어 있습니다.

사용자가 관리하는 기타 가상 환경이나 Docker 컨테이너에서 Liberty 서버를 실행하는 경우에는 이미지를 실행할 때 CONTAINER_HOST 및 CONTAINER_NAME 환경 변수를 설정하십시오. 이러한 환경 변수는 로그 콜렉터가 문제점 판별에 도움이 되는 적절한 호스트 및 컨테이너 이름과 함께 전송되는 레코드를 태그 지정하도록 보장합니다. 이러한 환경 변수를 설정하지 않으면 다중 컨테이너에서 이벤트를 표시하는 대시보드를 사용할 때 어떤 컨테이너가 어떤 이벤트를 전송하는지 판별하기 어려울 수도 있습니다. Docker 컨테이너를 시작하는 경우에는 다음과 유사한 명령을 사용하십시오.
docker run -d -e LICENSE=accept -e CONTAINER_NAME=yourContainerName -e CONTAINER_HOST=yourContainerHost --name=yourContainerName yourImageName

주제의 유형을 표시하는 아이콘 개념 주제

파일 이름: cwlp_analytics_collectors.html