API를 사용하여 로그 보내기
수집 API를 사용하여 IBM Cloud Logs 인스턴스로 로그를 보낼 수 있습니다.
무기명 토큰을 사용하여 인증하기
요청을 인증하려면 IBM Cloud® Identity and Access Management (IAM) 액세스 토큰을 받아야 합니다.
IBM Cloud CLI를 사용하여 토큰을 받으려면 다음 단계를 완료하세요:
-
IBM Cloud에 로그인하십시오.
로그인하는 엔티티에 IBM Cloud Logs 서비스에 대한 '
Sender' 역할이 있는지 확인합니다. -
다음 명령을 실행하십시오.
ibmcloud iam oauth-tokens -
이 토큰을 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 객체를 간략하게 설명합니다.
| 특성 이름 | 특성 유형 | 필수 | 자세한 정보 |
|---|---|---|---|
applicationName |
string |
예 | |
subsystemName |
string |
예 | |
text |
string/json |
예 | Ajax나 비슷한 기술을 사용하는 경우 JSON.stringify ()를 사용하여 데이터를 전송해야 할 수도 있습니다. |
severity |
number |
아니오 | 1 – Debug2 – Verbose3 – Info4 – Warn5 – Error6 – 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 옵션은 명령이 성공적으로 완료되었는지, 아니면 인증이나 연결 문제가 있었는지 확인하는 데 도움이 되는 자세한 출력을 제공합니다.