시스템 문제 파악 및 해결을 위한 애플리케이션 로그 분석

2024. 8. 25. 15:34·QA성장하기/테스팅 전문 지식 쌓기
  1. 애플리케이션 로그란? 
    1. 시스템 상태, 애플리케이션의 동작, 문제 발생 원인 등을 파악하는 데 중요한 정보를 제공한다.
    2. 애플리케이션의 내부 동작 추적 및 문제 발생 원인을 분석하며, 전반적인 상태 모니터링에 도움을 준다.
  2. 애플리케이션 로그 확인 방법
    1. 리눅스/유닉스 시스템
      • /var/log/app_name/ 또는 /opt/app_name/logs/와 같은 경로에 저장된다.
      • `cat 경로` 또는 `tail -f 경로` 로 파일을 열 수 있다.
    2. 윈도우
      • C:\Program Files\AppName\logs\ 또는 C:\AppName\logs\와 같은 경로에 저장된다.
      • 텍스트 편집기를 사용하여 해당 파일을 열 수 있다.
    3. MacOS
      • /var/log/ 경로에 system.log 또는 install.log 파일로 저장된다.
      • Finder 또는 터미널을 통해 직접 접근할 수 있다. 
  3. 일반적인 로그 파일 형식과 분석 방법
    1. 로그 파일 형식
      • 타임스탬프 : 로그가 기록된 시간과 날짜를 나타낸다.
      • 로그 레벨 : 로그의 심각도 수준을 나타낸다. INFO, DEBUG, WARNING, ERROR, CRITICAL 등이 있다.
      • 메시지 : 이벤트에 대한 설명이나 작업의 세부 정보를 제공한다.
      • 모듈/파일명 : 로그 생성 코드의 파일명이나 모듈명이 포함된다.
      • 라인 번호 : 로그가 생성된 코드의 줄 번호를 의미한다.
      • 스레드 ID : 로그가 기록된 스레드의 ID 가 포함된다.
      • 스택 트레이스 : 예외나 오류가 발생 시, 문제가 발생 코드의 위치나 함수 호출 경로를 보여주는 디버깅 종류
        • 예외 타입과 메시지 : 예외의 종류와 관련된 에러 메시지가 노출된다.
        • 메서드 호출 순서 : 예외 발생까지의 호출 경로를 보여준다. (마지막 메서드가 스택의 가장 위에 있음)
        • 파일 이름 및 라인 : 문제 발생 코드의 파이라 이름과 라인 번호가 표시된다.
    2. 로그 분석 방법
      • 타임스탬프를 기준으로 로그를 정렬한다.
      • 로그 레벨을 필터링하여 중요한 문제를 우선적으로 식별한다.
      • 특정 키워드나, 에러 코드, 사용자 ID 등을 검색하여 관련 로그를 필터링한다.
      • 예외 로그의 스택 트레이스를 통해 문제의 원인이 되는 코드 라인을 식별하고 검토한다.
      • 특정한 이벤트나 오류가 얼마나 자주 발생하는 지 파악하여 반복적인 문제를 식별한다.
    3. 로그 예시를 통한 정보 파악.
      • 정보 로그 (INFO로그)
        2024-08-25 14:32:01,123 INFO [main] com.example.MyApp - Application started successfully.
        • 타임스탬프 : 2024-08-25 14:32:01,123
        • 로그 레벨 : INFO
        • 스레드 이름 : [main]
        • 클래스명 : com.example.MyApp
        • 메시지 : Application started successfully
      • 디버그 로그 (DEBUG 로그)
        2024-08-25 14:32:02,456 DEBUG [main] com.example.MyApp - Initializing configuration settings: { "setting1": "value1", "setting2": "value2" }

        • 타임스탬프 : 2024-08-25 14:32:02,456
        • 로그 레벨 : DEBUG
        • 스레드 이름 : [main]
        • 클래스명 : com.example.MyApp
        • 메시지 : Initializing configuration settings: { "setting1": "value1", "setting2": "value2" }
      • 경고 로그 (WARNING 로그)
        2024-08-25 14:33:05,789 WARN [main] com.example.MyApp - The configuration file is missing some optional settings.

        • 타임스탬프 : 2024-08-25 14:33:05,789
        • 로그 레벨 : WARN
        • 스레드 이름 : [main]
        • 클래스명 :  com.example.MyApp
        • 메시지 : The configuration file is missing some optional settings.
      • 오류 로그 (ERROR 로그)
        2024-08-25 14:34:12,987 ERROR [main] com.example.MyApp - Failed to connect to database: Connection timeout.

        • 타임스탬프 : 2024-08-25 14:34:12,987
        • 로그 레벨 : ERROR
        • 스레드 이름 : [main]
        • 클래스명 : com.example.MyApp
        • 메시지 : Failed to connect to database: Connection timeout.
      • 예외 로그 (EXCEPTION 로그)
        2024-08-25 14:35:23,654 ERROR [main] com.example.MyApp - Exception occurred while processing request
        java.lang.NullPointerException: Cannot invoke "String.length()" because "str" is null
            at com.example.MyApp.processRequest(MyApp.java:123)
            at com.example.MyApp.main(MyApp.java:45)

        • 타임스탬프 : 2024-08-25 14:35:23,654
        • 로그 레벨 : ERROR
        • 스레드 이름 : [main]
        • 클래스명 : com.example.MyApp
        • 메시지 : Exception occurred while processing request
        • 예외 정보 : java.lang.NullPointerException: Cannot invoke "String.length()" because "str" is null
        • 스택 트레이스
          - at com.example.MyApp.processRequest(MyApp.java:123)
          - at com.example.MyApp.main(MyApp.java:45)
  4. 로그 분석 도구
    1. 로그 분석 도구 사용하는 이유
      • 로그 파일이 크거나 분석이 복잡한 경우, 분석 도구를 사용하는 것이 유용할 수 있다.
    2. 로그 분석 도구 예시
      • ELK Stack : 로그 데이터를 수집, 분석, 시각화하는 데 사용되는 강력한 오픈 소스 도구 모음이다.
      • Splunk : 실시간 로그 분석과 모니터링을 위한 상용 도구이다
      • Graylog : 오픈 소스 로그 관리 도구로, 실시간 로그 분석 및 알림 기능을 제공한다.
      • Pappertrail, Loggly, Datadog : 클라우드 기반 로그 관리 분석 서비스 도구로, 로그 수집 및 모니터링을 지원한다.
  5. 로그를 통한 오류 발견 및 해결.
    1. 로그 레벨 설정 
      • 로그의 세부 수준을 설정한다.
      • 보통 DEBUG, INFO, WARNING, ERROR, CRITICAL 수준이 있다.
      • 일반적으로 개발 및 테스트 환경에서는 DEBUG수준까지 포함한 세부 로그를 수집한다.
      • 일반적으로 운영 환경에서 INFO 이상만 수집한다. 
    2. 로그 분석 및 모니터링
      • 로그 파일에서 'ERROR' 또는 'WARNING'수준의 로그를 필터링하여 문제를 확인한다.
        • grep -E "ERROR | WARNING" /path/to/logfile.log
      • 로그에서 반복적으로 발생하는 패턴을 찾고, 반복되는 원인의 코드 부분을 집중적으로 분석한다.
      • 모니터링 도구를 통해 실시간으로 로그를 감시하고, 특정 조건에 맞춰 알림을 설정한다.
    3. 오류 분석 및 원인 파악
      • 로그에 스택 트레이더스 포함된 경우, 가장 위 예외부터 읽음으로써 문제의 근본 원인을 파악한다.
      • 오류 발생 시점과 시스템 이벤트를 비교하여 관련성을 파악한다.
      • 동일 시간대의 다른 로그 메시지를 검색하여 관련 이벤트나 경고를 확인한다.
    4. 문제 해결 및 검증
      • 로그에 발견된 문제를 바탕으로 코드를 검토하여 문제의 원인을 수정한다.
      • 문제 수정 후 테스트 환경에서 동일한 시나리오를 실행하여 문제가 해결되었는지 검증한다.
      • 발견된 문제애 대해 자세한 로깅을 추가하여 더 명확한 정보를 제공하도록 개선한다.
    5. 주기적인 로그 검토
      • 주기적으로 로그 파일을 검토하여 새 문제느 패턴을 발견한다.
      • 로그 파일이 너무 커지지 않도록 로그 회전 설정을 하고, 오래된 로그는 보관하거나 삭제한다.
    6. 문서화 및 보고
      • 발생한 오류와 해결방법을 문서화하여 유사 문제 발생 시, 빠르게 대처할 수 있다.
      • 팀원들과 문제 해결 과정을 공유하여 유사 문제를 빠르게 해결할 수 있도록 한다.

'QA성장하기 > 테스팅 전문 지식 쌓기' 카테고리의 다른 글

데이터 품질 테스트의 중요성과 테스트 프로세스  (0) 2024.08.16
어뷰징의 의미와 테스트 사례에 따른 대응 방법  (0) 2024.08.15
디바이스 기능 연동 테스트와 인터럽트 테스트의 중요성 및 고려사항.  (0) 2024.08.14
앱 공존성 테스트의 의미와 테스트 방법  (0) 2024.08.13
호환성 테스트를 위한 고려사항과 전략  (0) 2024.08.12
'QA성장하기/테스팅 전문 지식 쌓기' 카테고리의 다른 글
  • 데이터 품질 테스트의 중요성과 테스트 프로세스
  • 어뷰징의 의미와 테스트 사례에 따른 대응 방법
  • 디바이스 기능 연동 테스트와 인터럽트 테스트의 중요성 및 고려사항.
  • 앱 공존성 테스트의 의미와 테스트 방법
몽자비루
몽자비루
코딩공부 정리용 블로그입니다.
  • 몽자비루
    공부하는 블로그
    몽자비루
  • 전체
    오늘
    어제
    • 분류 전체보기 (177)
      • python (30)
        • python_selenium (16)
        • python_pygame (3)
      • appium (0)
      • 쿠버네티스 (60)
        • linux (8)
        • shell programming (8)
        • docker (18)
        • cka (23)
      • postman&API (16)
      • QA성장하기 (33)
        • 개발자에서 아키텍트로 스터디 (6)
        • 소프트웨어 공학 이해도 높이기 (6)
        • 테스팅 전문 지식 쌓기 (18)
        • 제4회 QA conference (3)
      • 에러일기 (1)
      • Server&load (35)
        • AWS (27)
        • load test (5)
        • CI CD (3)
        • Jmeter (0)
      • RAG 을 활용하여 LLM 만들어보기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    애플리케이션로그
    테스트 결과보고서
    공존성테스트
    cka
    vi에디터
    API
    개발자에서아키텍트로
    포스트맨
    k8s
    쿠버네티스
    qa conference
    application log
    qa
    e2c
    .cpu
    linux
    스터디
    네트워크 테스트
    사드웨어리소스
    테스트스크립트
    qa 컨퍼런스
    postman
    로스트아크
    앱공존성
    도커
    로스트아크api
    리눅스
    LOSTARK
    python
    QAKOREA
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
몽자비루
시스템 문제 파악 및 해결을 위한 애플리케이션 로그 분석
상단으로

티스토리툴바