API를 사용하여 로그 보내기

수집 API를 사용하여 IBM Cloud Logs 인스턴스로 로그를 보낼 수 있습니다.

무기명 토큰을 사용하여 인증하기

요청을 인증하려면 IBM Cloud® Identity and Access Management (IAM) 액세스 토큰을 받아야 합니다.

IBM Cloud CLI를 사용하여 토큰을 받으려면 다음 단계를 완료하세요:

  1. IBM Cloud에 로그인하십시오.

    로그인하는 엔티티에 IBM Cloud Logs 서비스에 대한 ' Sender ' 역할이 있는지 확인합니다.

  2. 다음 명령을 실행하십시오.

    ibmcloud iam oauth-tokens
    
  3. 이 토큰을 HTTP 요청의 Authorization 헤더에 무기명 형식으로 배치합니다 .

예를 들어, 다음 CLI 명령을 실행하여 IAM 전달자 토큰을 검색하여 환경 변수로 내보낼 수 있습니다.

export IAM_TOKEN=`ibmcloud iam oauth-tokens --output json | jq -r '.iam_token'`

cURL 사용하여 로그 보내기

다음 표는 엔드포인트 세부 정보를 간략하게 설명합니다.

싱글 수집 엔드포인트 세부 정보
세부사항
URL <INSTANCE_ID>.ingress.<REGION>.logs.cloud.ibm.com/logs/v1/singles
HTTP Method POST
헤더 Content-Type application/json
헤더 Authorization Bearer $IAM_TOKEN

여기서,

  • INSTANCE_ID : 로그를 보내려는 IBM Cloud Logs 인스턴스의 GUID입니다.
  • REGION: IBM Cloud Logs 인스턴스가 위치한 지역입니다.
  • IAM_TOKEN : 로그에 대한 전송 권한을 요청하는 데 사용되는 IAM 전달자 토큰입니다. logs.data.send 권한이 필요합니다.

다음 cURL 명령을 사용하여 로그 행을 전송합니다:

curl -v --location "<INSTANCE_ID>.ingress.<REGION>.logs.cloud.ibm.com/logs/v1/singles" \
--header "Content-Type: application/json" \
--header "Authorization: $IAM_TOKEN" \
--data '[{
      "applicationName": "ENTER_APPLICATION_NAME",
      "subsystemName": "ENTER_SUBSYSTEM_NAME",
      "severity": "ENTER_SEVERITY",
      "computerName": "ENTER_VALUE",
      "text": ENTER_LOG_LINE,
      "category": "ENTER_VALUE",
      "className": "ENTER_VALUE",
      "methodName": "ENTER_VALUE",
      "threadId": "ENTER_VALUE"
    }]'

다음 표에서는 요청의 로그 줄에 포함할 수 있는 JSON 객체를 간략하게 설명합니다.

JSON 오브젝트의 배열
특성 이름 특성 유형 필수 자세한 정보
applicationName string
subsystemName string
text string/json Ajax나 비슷한 기술을 사용하는 경우 JSON.stringify ()를 사용하여 데이터를 전송해야 할 수도 있습니다.
severity number 아니오 1 – Debug
2 – Verbose
3 – Info
4 – Warn
5 – Error
6 – Critical
지정하지 않으면 1 – Debug 사용됩니다.
timestamp number 아니오 UTC 밀리초. 지정하지 않으면 로그가 게이트웨이에 도달하는 시간이 사용됩니다.
computerName string 아니오
category string 아니오
className string 아니오
methodName string 아니오
threadId string 아니오
hiResTimestamp string 아니오 UTC 나노초

severity 지정하지 않으면 로그에 1 – Debug 의 심각도가 지정됩니다.

요청당 최대 2MB, 즉 약 3,000개의 중간 크기 로그를 보낼 수 있습니다.

예를 들어, 다음 명령을 실행하여 eu-es 지역의 인스턴스로 로그를 보낼 수 있습니다.

curl -v --location "https://90d208cc-e1dd-4fb2-a938-358e5996f056.ingress.eu-es.logs.cloud.ibm.com/logs/v1/singles" \
--header "Content-Type: application/json" \
--header "Authorization: $IAM_TOKEN" \
--data '[{
      "applicationName": "cs-rest-test3",
      "subsystemName": "cs-rest-test3",
      "computerName": "computer test3",
      "text": {"key":"value","message":"148.145.31.214 - user [24/Oct/2023:15:54:46 +0000] \"PATCH /maximized/Triple-buffered_Managed/core.hmtl HTTP/1.1\" 400 7074 1.666 \"-\" \"Mozilla/5.0 (Macintosh; PPC Mac OS X 10_6_4 rv:6.0) Gecko/1929-02-10 Firefox/37.0\" \"-\"","countryme":"Italy"},
      "category": "cat-1",
      "className": "class-1",
      "methodName": "method-1",
      "threadId": "thread-1"
    }]'

-v 옵션은 명령이 성공적으로 완료되었는지, 아니면 인증이나 연결 문제가 있었는지 확인하는 데 도움이 되는 자세한 출력을 제공합니다.