개요

HTTP 테스트를 사용하면 애플리케이션의 API 엔드포인트에 HTTP 요청을 보내 응답 및 전체 응답 시간, 예상 상태 코드, 헤더 또는 본문 콘텐츠와 같은 정의된 조건을 확인할 수 있습니다.

HTTP 테스트는 네트워크 외부 또는 내부에서 테스트를 실행하려는 기본 설정에 따라 관리비공개 위치에서 실행할 수 있습니다. HTTP 테스트는 일정에 따라, 온디맨드로 또는 CI/CD 파이프라인 내에서 직접 실행할 수 있습니다.

설정

다음 옵션 중 하나를 사용하여 테스트를 생성할 수 있습니다.

  • 템플릿에서 테스트 생성하기:

    1. 사전에 채워진 템플릿 중 하나에 마우스를 올리고 템플릿 보기를 클릭합니다. 테스트 세부 정보, 요청 세부 정보, 어설션, 알림 조건 및 모니터링 설정이 포함된, 사전에 채워진 설정 정보가 표시되는 사이드 패널이 열립니다.

    2. +테스트 생성하기를 클릭하면 사전 입력된 설정 옵션을 검토하고 편집할 수 있는 요청 정의 페이지가 열립니다. 표시되는 필드는 테스트 초기 생성 시사용할 수 있는 필드와 동일합니다.

    3. 세부 정보 저장을 클릭하여 API 테스트를 제출합니다.

  • 테스트 처음부터 빌드하기:

    1. 테스트를 처음부터 빌드하려면 +처음부터 시작 템플릿을 클릭한 다음 HTTP 요청 유형을 선택하고 쿼리할 URL을 지정합니다. 사용 가능한 메소드는 GET, POST, PATCH, PUT, HEAD, DELETE, OPTIONS입니다. httphttps URL이 모두 지원됩니다.

      더 많은 옵션은 고급 옵션에서 확인하세요.
    2. HTTP 테스트의 이름을 지정합니다.

    3. HTTP 테스트에 환경 태그 및 기타 태그를 추가합니다. 이러한 태그를 사용하여 신서틱 모니터링 & 지속적인 테스트 페이지에서 신서틱 테스트를 필터링할 수 있습니다.

    4. 전송을 클릭하여 요청 설정을 테스트합니다. 화면 오른쪽에 응답 미리보기가 표시됩니다.

    HTTP 요청 정의
    1. 테스트 생성하기를 클릭하여 API 테스트를 제출합니다.

Snippets

When setting up a new Synthetic Monitoring API test, use snippets to automatically fill in basic auth, performance, and regions, rather than selecting these options manually. The following snippets are available:

  • Basic Auth: Automatically test your APIs using pre-populated basic auth headers, JavaScript, bearer token, and API/app key auth variables.

  • Performance: Automatically configure a test with the shortest frequency (one minute), perform a gRPC health check, and test for overall response time latency with a breakdown of network timing.

  • Regions: Automatically test your API endpoint against a location in each of the three primary geographic regions (AMER, APAC and EMEA).

    Screenshot of the left hand side of an API test creation, showing the snippets example

고급 옵션

  • HTTP 버전: HTTP/1.1 only, HTTP/2 only,HTTP/2 fallback to HTTP/1.1 중 선택합니다.
  • Follow redirects: 선택하면 요청을 수행할 때 HTTP 테스트에서 최대 10개의 리디렉션을 팔로우합니다.
  • Ignore server certificate error: 선택하면 SSL 인증서를 확인할 때 오류가 발생하더라도 HTTP 테스트가 연결을 계속합니다.
  • 타임아웃: 테스트 시간 초과로 간주하기까지의 시간을 초단위로 지정합니다(옵션).
  • 요청 헤더: HTTP 요청에 추가할 헤더를 정의합니다. 기본 헤더(예: user-agent 헤더)를 재정의할 수도 있습니다.
  • Cookies: HTTP 요청에 추가할 쿠키를 정의합니다. <COOKIE_NAME1>=<COOKIE_VALUE1>; <COOKIE_NAME2>=<COOKIE_VALUE2> 형식을 사용하여 여러 쿠키를 설정합니다.
  • Client Certificate: 클라이언트 인증서(.crt) 및 관련 개인 키(.key)를 PEM 형식으로 업로드하여 mTLS를 통해 인증합니다. openssl 라이브러리를 사용하여 인증서를 변환할 수 있습니다. 예를 들어 PKCS12 인증서를 PEM 형식의 개인 키 및 인증서로 변환합니다.

    openssl pkcs12 -in <CERT>.p12 -out <CERT_KEY>.key -nodes -nocerts
    openssl pkcs12 -in <CERT>.p12 -out <CERT>.cert -nokeys
    
  • HTTP 기본 인증: HTTP 기본 인증 자격 증명을 추가합니다.

  • Digest 인증: Digest 인증 자격 증명을 추가합니다.

  • NTLM: NTLM 인증 자격 증명을 추가합니다. NTLMv2와 NTLMv1을 모두 지원합니다.

  • AWS Signature v4: Access Key ID와 Secret Access Key를 입력합니다. Datadog은 요청에 대한 서명을 생성합니다. 이 옵션은 SigV4의 기본 구현을 사용합니다. Amazon S3와 같은 특정 서명은 기본적으로 지원되지 않습니다. Amazon S3 버킷에 대한 “Single Chunk” 전송 요청의 경우 sha256으로 인코딩된 요청 본문을 헤더로 포함하는 x-amz-content-sha256을 추가합니다(빈 본문의 경우: x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855).

  • OAuth 2.0: 클라이언트 자격 증명 또는 리소스 소유자 비밀번호 부여 중에서 선택하고 액세스 토큰 URL을 입력합니다. 선택에 따라 클라이언트 ID와 비밀번호 또는 사용자 이름과 비밀번호를 입력합니다. 드롭다운 메뉴에서 API 토큰을 기본 인증 헤더로 보낼지, 아니면 본문에 클라이언트 자격 증명을 보낼지 옵션을 선택합니다. 선택 사항으로 대상, 리소스 및 범위와 같은 추가 정보를 제공할 수 있습니다(Resource Owner Password를 선택한 경우 클라이언트 ID 및 비밀번호도 함께).

  • 인코딩 파라미터: 인코딩이 필요한 쿼리 파라미터의 이름과 값을 추가합니다.
  • Body type: HTTP 요청에 추가하려는 요청 본문 유형 (application/json, application/octet-stream, application/x-www-form-urlencoded, multipart/form-data, text/html, text/plain, text/xml, GraphQL, None)을 선택합니다.
  • Request body: HTTP 요청 본문의 콘텐츠를 추가합니다.
    • 요청 본문은 application/json, application/x-www-form-urlencoded, text/html, text/plain, text/xml, GraphQL에 대해 최대 50KB로 제한됩니다.
    • 요청 본문은 application/octet-stream에 대해 3MB의 파일 1개로 제한됩니다.
    • 요청 본문은 multipart/form-data에 대해 3MB의 파일 3개로 제한됩니다.
  • Proxy URL: HTTP 요청이 통과해야 하는 프록시의 URL을 지정합니다(http://<YOUR_USER>:<YOUR_PWD>@<YOUR_IP>:<YOUR_PORT>).
  • Proxy header: 프록시에 대한 HTTP 요청에 포함할 헤더를 추가합니다.
  • Do not save response body: 런타임 시 응답 본문이 저장되지 않도록 하려면 이 옵션을 선택합니다. 이는 테스트 결과에 민감한 데이터가 포함되지 않도록 하는 데 도움이 될 수 있습니다. 하지만 오류 발생시 문제 해결이 더 어려워질 수 있으므로 주의해서 사용하세요. 자세한 보안 권장 사항은 Synthetic Monitoring Security을 참조하세요.

JavaScript를 사용하여 HTTP API 테스트에 대한 변수를 정의합니다.

<div class="shortcode-wrapper shortcode-img expand"><figure class="text-center"><a href="https://datadog-docs-staging.imgix.net/images/synthetics/api_tests/http_javascript.66fe410698cb2c156ee0634db040393e.png?fit=max&amp;auto=format" class="pop" data-bs-toggle="modal" data-bs-target="#popupImageModal"><picture class=""  style="width:90%;"  >
        <img 
            class="img-fluid" 
            srcset="https://datadog-docs-staging.imgix.net/images/synthetics/api_tests/http_javascript.66fe410698cb2c156ee0634db040393e.png?auto=format" 
            style="width:90%;"  alt="Javascript로 HTTP API 테스트 정의"  />
      </picture></a></figure>
</div>

어설션 정의

어설션은 예상되는 테스트 결과를 정의합니다. Test URL을 클릭하면 얻은 응답을 기반으로 response time, status code, header, content-type에 대한 기본 어설션이 추가됩니다. 모니터링할 테스트에 대한 어설션을 하나 이상 정의해야 합니다.

유형연산자값 유형
본문contains, does not contain, is, is not,
matches, does not match,
jsonpath, xpath
문자열
정규식
헤더contains, does not contain, is, is not,
matches, does not match
문자열
정규식
응답 시간is less than정수 (ms)
상태 코드is, is not,
matches, does not match
정수
정규식

HTTP 테스트는 다음 content-encoding 헤더가 있는 본문의 압축을 풀 수 있습니다: br, deflate, gzip, identity.

신규 어서션을 클릭하거나 응답 미리보기를 클릭하여 API 테스트당 최대 20개의 어서션을 생성할 수 있습니다.

HTTP 테스트의 성공 또는 실패에 대한 어설션을 정의합니다.

어설션에서 OR 로직을 수행하려면 matches regex 비교기를 사용하여 (200|302)와 같은 여러 예상 값이 있는 정규식을 정의합니다. 예를 들어, 서버가 200 또는 302 상태 코드로 응답해야 할 때 HTTP 테스트가 성공하기를 원할 수 있습니다. 상태 코드가 200 또는 302이면 status code 어설션은 성공합니다. body 또는 header 어설션에 OR 로직을 추가할 수도 있습니다.

테스트에 응답 본문 어설션이 포함되어 있지 않으면 본문 페이로드가 삭제되고 Synthetics Worker가 설정한 제한 시간 내에서 요청 관련 응답 시간을 반환합니다.

테스트에 응답 본문에 대한 어서션이 포함되어 있고 제한 시간에 도달하면, Assertions on the body/response cannot be run beyond this limit 오류가 나타납니다.

위치 선택

HTTP 테스트를 실행할 **위치(Locations)**를 선택합니다. HTTP 테스트는 네트워크 외부 또는 내부에서 테스트를 실행하려는 사용자의 선호도에 따라 관리형 위치와 프라이빗 위치 모두에서 실행될 수 있습니다.

Datadog’s out-of-the-box managed locations allow you to test public-facing websites and endpoints from regions where your customers are located.

AmericasAPACEMEA
Canada Central (AWS)Hong Kong (AWS)Cape Town (AWS)
Northern California (AWS)Mumbai (AWS)Frankfurt (AWS)
Northern Virginia (AWS)Seoul (AWS)Ireland (AWS)
Ohio (AWS)Singapore (AWS)London (AWS)
Oregon (AWS)Sydney (AWS)Paris (AWS)
São Paulo (AWS)Tokyo (AWS)Stockholm (AWS)
Virginia (Azure)Osaka (AWS)Milan (AWS)
Jakarta (AWS)Bahrain (AWS)

The Datadog for Government site (US1-FED) uses the following managed location:

Americas
US-West

테스트 빈도 지정

HTTP 테스트는 다음과 같이 실행할 수 있습니다.

  • 일정에 따라 가장 중요한 엔드포인트에 사용자가 항상 액세스할 수 있도록 합니다. Datadog이 HTTP 테스트를 실행할 빈도를 선택합니다.
  • CI/CD 파이프라인 내에서 결함이 있는 코드가 고객 경험에 영향을 미칠 지에 대한 염려 없이 발송을 시작할 수 있습니다.
  • 온디맨드로 실행하면 팀에 가장 적합한 시간에 테스트를 실행할 수 있습니다.

경고 조건 정의

알림 조건을 설정해 테스트 실패 시 알림을 트리거할 상황을 정의하세요.

알림 규칙

알림 조건을 An alert is triggered if any assertion fails for X minutes from any n of N locations으로 설정하면 해당 두 조건이 참인 경우에만 알림이 트리거됩니다.

  • 최소 하나의 위치가 지난 X분 동안 실패 상태여야 합니다(최소 하나의 어서션 실패).
  • 지난 X분 중 어느 시점 최소 n개의 위치가 실패해야 합니다.

빠른 재시도

결과가 테스트 실패인 경우 Y밀리초 후 X회 재시도를 트리거할 수 있습니다. 알림 중요도에 맞게 재시도 간격을 커스터마이즈할 수 있습니다.

위치 가동 시간은 각 평가 기준으로 계산됩니다(평가 전 마지막 테스트 결과가 상승 또는 감소했는지 여부). 총 가동 시간은 설정된 알림 조건에 따라 계산됩니다. 전송된 알림은 총 가동 시간을 기준으로 합니다.

테스트 모니터 설정

알림은 이전에 정의된 알림 조건 기준 테스트에서 전송됩니다. 이 섹션을 통해 팀에 메시지를 전달하는 방법과 해당 메시지의 내용을 정의하세요.

  1. 모니터 설정 방법과 유사하게 알림을 받아야 하는 사용자 및/또는 서비스를 선택합니다. @notification를 메시지에 추가하거나, 드롭다운 메뉴를 사용해 팀 구성원과 연결된 통합을 검색할 수 있습니다.

  2. 테스트에 대한 알림 메시지를 입력합니다. 이 필드는 표준 마크다운 형식을 허용하며 다음 조건부 변수를 지원합니다.

    조건 변수설명
    {{ #is_alert }}테스트가 알림을 전송하면 표시합니다.
    {{ ^is_alert }}테스트가 알림을 전송하지 않으면 표시합니다.
    {{ #is_recovery }}테스트에서 알림을 복원하면 표시합니다.
    {{ ^is_recovery }}테스트가 일림을 복원하지 않으면 표시합니다.
    {{ #is_renotify }}모니터가 알림을 다시 알리면 표시합니다.
    {{ ^is_renotify }}모니터가 알림을 다시 알리면 표시합니다.
    {{ #is_priority }}모니터가 우선순위(P1~P5)와 일치하면 표시합니다.
    {{ ^is_priority }}모니터가 우선순위와 일치하지 않으면 표시됩니다(P1~P5).
  3. 테스트 실패 시 테스트에서 알림 메시지를 재전송할 빈도를 지정합니다. 테스트 실패에 대해 알림이 다시 전송되는 것을 방지하려면 옵션을 Never renotify if the monitor has not been resolved로 남겨둡니다.

  4. 생성을 클릭해 테스트 설정 및 모니터를 저장합니다.

자세한 정보는 신서틱(Synthetic) 테스트 모니터를 참조하세요.

원클릭

API 테스트 생성은 API 카탈로그 및 기존 API 테스트에서 엔드포인트를 제안하여 테스트 양식을 관련 옵션으로 미리 채웁니다. 애플리케이션 성능 모니터링(APM) 트레이스, API 카탈로그 엔드포인트 검색 및 사용자가 생성한 유사한 기존 신서틱(Synthetic) 테스트와 같은 기존 Datadog 데이터 소스를 사용합니다.

API 테스트 URL 인풋값을 입력하여 신서틱(Synthetic) 모니터링에서 엔드포인트 제안 또는 유사한 테스트를 얻습니다.

기존 API 테스트에 대한 GET 검색을 표시하는 HTTP API 테스트

그런 다음 테스트 미리 채우기 제안을 선택하여 설정 (요청 옵션 및 헤더, 인증 및 변수)을 작성합니다.

선택

Create local variables

To create a local variable, click Create a Local Variable. You can select one of the following available builtins to add to your variable string:

{{ numeric(n) }}
Generates a numeric string with n digits.
{{ alphabetic(n) }}
Generates an alphabetic string with n letters.
{{ alphanumeric(n) }}
Generates an alphanumeric string with n characters.
{{ date(n unit, format) }}
Generates a date in one of Datadog’s accepted formats with a value corresponding to the UTC date the test is initiated at + or - n units.
{{ timestamp(n, unit) }}
Generates a timestamp in one of Datadog’s accepted units with a value corresponding to the UTC timestamp the test is initiated at +/- n units.
{{ uuid }}
Generates a version 4 universally unique identifier (UUID).
{{ public-id }}
Injects the Public ID of your test.
{{ result-id }}
Injects the Result ID of your test run.

To obfuscate local variable values in test results, select Hide and obfuscate variable value. Once you have defined the variable string, click Add Variable.

변수 사용

HTTP 테스트의 URL, 고급 옵션 및 어설션에서 Settings 페이지에 정의된 전역 변수를 사용할 수 있습니다.

변수 목록을 표시하려면 원하는 필드에서 {{을 입력하세요.

테스트 실패

하나 이상의 어서션을 충족하지 않거나 요청이 초기에 실패한 경우 테스트는 FAILED로 간주됩니다. 경우에 따라서는 엔드포인트 어서션 테스트 없이 해당 테스트가 실패할 수 있습니다.

가장 일반적인 오류는 다음과 같습니다.

AUTHENTICATION_ERROR
신서틱(Synthetic) 모니터링은 인증이 실패하면 자동으로 테스트 재시도를 비활성화합니다. 해당 안전 조치는 유효한 자격 증명으로 테스트를 업데이트할 때까지 유효합니다. 잘못된 알림을 생성하고 비용이 청구되는 사용량을 증가시키는 불필요한 테스트 실행을 방지할 수 있습니다.
CONNREFUSED
대상 머신이 적극적으로 거부했기 때문에 연결할 수 없습니다.
CONNRESET
원격 서버에 의해 연결이 갑자기 종료되었습니다. 가능한 원인으로는 웹 서버가 응답 도중 오류 또는 충돌이 발생하였거나 웹 서버의 연결이 끊어졌기 때문일 수 있습니다.
DNS
테스트 URL의 DNS 항목을 찾을 수 없는 경우입니다. 가능한 원인으로는 테스트 URL이 잘못 설정되었거나 DNS 엔티티 설정이 잘못되었기 때문일 수 있습니다.
Error performing HTTP/2 request
요청을 수행할 수 없습니다. 자세한 내용은 전용 오류 페이지를 참조하세요.
INVALID_REQUEST
테스트 설정이 유효하지 않습니다(예: URL 오타).
SSL
SSL 연결을 수행할 수 없습니다. 자세한 내용은 전용 오류 페이지를 참조하세요.
TIMEOUT
요청을 적절한 시간 내에 완료할 수 없습니다. 두 가지 유형의 TIMEOUT이 발생할 수 있습니다:
  • TIMEOUT: The request couldn't be completed in a reasonable time.는 요청 기간이 테스트에 정의된 시간 제한에 도달했음을 나타냅니다(기본값은 60초로 설정됨). 각 요청에 대해 완료된 요청 단계만 네트워크 폭포에 표시됩니다. 예를 들어, Total response time만 표시되는 경우 DNS 확인 중에 시간 초과가 발생했습니다.
  • TIMEOUT: Overall test execution couldn't be completed in a reasonable time.은 요청 및 어서션 실행 시간이 최대 실행 시간(60.5초)에 도달했음을 나타냅니다.
MALFORMED_RESPONSE
원격 서버가 HTTP 사양을 준수하지 않는 페이로드로 응답했습니다.

권한

기본적으로 Datadog Admin 및 Datadog Standard 역할을 가진 사용자만 Synthetic HTTP 테스트를 생성, 편집 및 삭제할 수 있습니다. Synthetic HTTP 테스트에 대한 생성, 편집 및 삭제 액세스 권한을 얻으려면 사용자를 두 가지 기본 역할 중 하나로 업그레이드하세요.

사용자 정의 역할 기능을 사용하는 경우 synthetics_readsynthetics_write 권한이 포함된 사용자 정의 역할에 사용자를 추가합니다.

액세스 제한

Use granular access control to limit who has access to your test based on roles, teams, or individual users:

  1. Open the permissions section of the form.
  2. Click Edit Access.
Set permissions for your test from Private Locations configuration form
  1. Click Restrict Access.
  2. Select teams, roles, or users.
  3. Click Add.
  4. Select the level of access you want to associate with each of them.
  5. Click Done.
Note: You can view results from a Private Location even without Viewer access to that Private Location.
Access levelView test configurationEdit test configurationView test resultsRun test
No access
ViewerYesYes
EditorYesYesYesYes

참고 자료

PREVIEWING: sadhbh-a/gcp_guide