AZ-204 Certified: 9-Day App Service Enable Diagnostic Logging

App Service 로깅 알아 보기

Azure App Service는 앱을 디버깅하기 위해 필요한 다양한 종류의 로깅을 제공한다. 로그는 앱의 작동 방식을 기록하고, 문제를 파악하는데 큰 도움을 준다.

App Service 로그 유형

https://learn.microsoft.com/en-us/training/modules/configure-web-app-settings/5-enable-diagnostic-logging

Application

앱 로그는 Application code 에서 발생하는 메시지를 기록한다.

예) 앱에서 오류가 발생하거나 중요한 정보를 기록할 때 사용된다.

Tip. Windows, Linux 모두 지원

App Service File systemAzure Storage Blob 에 저장된다.

Tip. 각 메시지에는 Critical , Error , Warning , Info , Debug 및 Trace 범주 중 하나가 할당

Windows
Linux

Web Server

웹 서버(Web Server)1가 처리하는 HTTP 요청의 세부사항을 기록한다.

예) 어떤 웹 페이지가 요청되었는지, 요청한 사용자의 IP Address 등의 정보 등

App Service File system 또는 Azure Storage Blob 에 저장된다.

Tip. HTTP 메서드, 리소스 URI, 클라이언트 IP, 클라이언트 포트, 사용자 에이전트, 응답 코드 등과 같은 데이터가 포함

Windows

Detailed Error

관리자가 문제를 진단하고 해결할 수 있도록 HTTP status code 400 (잘못된 요청) 2이상의 오류가 발생할 때마다 에러 페이지(.html)를 자동으로 저장한다. 관리자는 저장된 에러 페이지를 확인하고 어떤 문제가 발생했는지 파악하고 수정할 수 있다.

Tip. Linux 시스템은 사용 불가

Windows

Failed Request Tracing

웹 서버가 요청을 처리하는 과정에서 발생한 에러의 세부 사항을 추적할 수 있다.

Tip. Linux 시스템은 사용 불가

  • 문제 발생 지점
  • 소요 시간

Tip. 실패한 각 요청에 대해 XML 로그 파일과 로그 파일을 보는 데 사용할 XSL스타일시트가 포함된 폴더가 하나씩 생성된다.

Windows

Deployment

앱을 Azure 에 배포할 때 발생한 문제를 기록한다. App Service File system자동으로 저장된다.

Tip. Windows, Linux 모두 지원

Application 로깅 설정 하기

Windows Application

Azure Portal 에서 Windows 앱의 로깅을 활성화하려면 App Service Log 페이지로 이동한다.

Application logging(File system) 혹은 Application logging(Blob) 또는 둘 다 On 으로 설정한다.

Tip. File System 옵션은 임시 디버깅 목적이며 12시간 후에 자동으로 Off 로 설정된다.

Windows

Blob 옵션은 로그의 장기 보존이 필요한 경우 사용되며, Blob Storage container가 필요하다.

Storage Account for Blob Storage Container
Blob Storage Container

Caution

Storage account의 Access Key를 다시 생성한 경우 새로운 키를 사용하려면 해당 로깅 구성을 재설정해야 한다.

Tip. 해당 로깅 설정을 Off, Save, On 한다.

Linux or Container Application

로깅 옵션을 File System 으로 설정한다.

Quota(MB) 값에 앱 로그에 할당할 디스크 용량(기본값: 35MB)을 기입한다.

로그 보존 기간(일)을 설정한다.

Linux

스트림(Stream) 로그

로그를 실시간으로 스트리밍하는 것도 가능하다. 이 경우에는 사전에 원하는 로그 유형을 활성화해야 한다.

확장자가.txt, .log, .htm 인 파일에 기록된 모든 정보는 App Service에 의해 스트리밍 된다. 이 파일들은 /LogFiles 디렉토리(d:/home/logfiles)에 저장된다.

Tip. 일부 로깅 유형은 로그 파일에 기입할 때 버퍼링(Buffering)3한다. 그 영향으로 스트림의 이벤트 기록 순서가 바뀔 수 있다.

로그 확인

File system 로그 확인

App Service의 파일 시스템에 저장된 로그의 경우 URL에서 ZIP 파일을 다운로드 할 수 있다.

Tip. 이곳의 로그 파일은 /home/LogFiles 디렉토리의 내용이다.

Windows 앱의 경우

https://<app-name>.scm.azurewebsites.net/api/dump

Linux or Container 앱의 경우

https://<app-name>.scm.azurewebsites.net/api/logs/docker/zip
Linux logs download url

Blob storage conationer 로그 확인

Tip. Azure Storage와 함께 동작하는 클라이언트 도구가 필요하다.

LEarning note

  1. Web Server 란?

    웹 서버는 인터넷을 통해 웹 페이지나 파일을 유저에게 전달하는 서버 및 소프트웨어를 뜻한다.

    Wen Server 5 Features

    1. HTTP 프로토콜 사용: 웹 서버는 HTTP(Hypertext Transfer Protocol)을 사용하여 클라이언트(주로 웹 브라우저)와 통신한다.
    클라이언트가 웹 페이지를 요청하면, 웹 서버는 해당 요청을 처리하고 적절한 응답을 보낸다.

    2.웹 페이지 호스틍: HTML, CSS, JavaScript 등으로 작성된 웹 페이지(Code)를 저장하고, 이를 유저에게 제공한다.

    3.정적 및 동적 컨텐츠 제공:
    -정적(Static) 컨텐츠란 변경되지 않는 컨텐츠을 뜻한다. 예를 들어, 파일, 이미지 및 텍스트 등이 있다.
    -동적(Dynamic) 컨텐츠란 유저의 요청에 따라 실시간으로 생성되는 컨텐츠를 뜻한다.

    4.보안: SSL/TLS와 같은 보안 프로토콜을 사용하여 데이터를 암호화하고 , 안전하게 데이터를 전송한다.

    5.스케일링 및 관리: 대규모 트래픽을 처리하기 위해서 로드 밸런싱(Load balancing), 클러스터링(Clustering) 등의 기술을 사용하여 확장성과 신뢰성을 제공한다.
    ↩︎
  2. HTTP 잘못된 요청이란?

    HTTP 상태 코드 400 이상은 클라이언트의 요청에 문제가 있거나 서버가 요청을 처리할 수 없을 때 발생하는 오류 코드이다.
    이러한 오류 코드들은 두 가지 범주로 나뉜다.

    1. 4xx 클라이언트 오류(400-499)
    Tip.주로 클라이언트 측의 문제를 나타낸다.

    400 Bad Request서버가 요청을 이해할 수 없음
    401 Unauthorized인증이 필요한 페이지 및 리소스에 대한 접근 시도
    403 Forbidden클라이언트가 접근할 권한이 없음
    404 Not Found요청한 페이지 및 리소스를 서버에서 찾을 수 없음
    405 Method Not Allowed허용되지 않은 HTTP 메서드를 사용함

    2. 5xx 서버 오류(500-599)
    Tip. 주로 서버 측의 문제를 나타낸다. 유효한 클라이언트의 요청을 처리하는데 실패했음을 뜻한다.

    500 Internal Server Error 서버 내부에 일반적인 오류가 발생함
    501 Not Implemented 서버가 요청을 처리할 수 있는 기능을 지원하지 않음
    502 Bad Gateway Gateway 혹은 Proxy 서버가 잘못된 응답(Response)을 받음
    503 Service Unavailable 서버가 일시적으로 요청을 처리할 수 없음
    Tip. 주로 과부화 혹은 유지보수 작업에 의한 경우가 많음
    504 Gateway Timeout Gateway 혹은 Proxy 서버가 상위 서버로부터 응답을 받지 못함


    ↩︎
  3. 로그 기입 버퍼링(Write Buffering)이란?

    여기서 버퍼링Buffering 이란 로그 데이터가 즉시 파일에 쓰이지(Write) 않고 일시적으로 메모리에 저장되었다가 나중에 한꺼번에 파일에 기록되는 과정을 의미한다.

    예) 유저가 웹 페이지를 방문했을때 발생하는 로그Application Log 와 그 방문에 대한 서버의 HTTP Log 사이에 시간 차이가 발생하여 순서가 바뀔 수도 있다. ↩︎