search
- 인쇄
- PDF
search
- 인쇄
- PDF
기사 요약
이 요약이 도움이 되었나요?
의견을 보내 주셔서 감사합니다.
개요
Effective Log Search & Analytics의 프로젝트 별 로그를 조회할 수 있습니다.
요청
API URL
POST
https://elsa.apigw.ntruss.com/api/v1/logs/search
요청 헤더
공통설정에 명시된 요청헤더가 필요합니다.
NAVER Cloud Platform 인증키 및 Signature 생성 가이드 바로가기
x-ncp-apigw-timestamp: {current timestamp}
x-ncp-iam-access-key: {your iam access key}
x-ncp-apigw-signature-v2: {generated signature}
요청 파라미터
파라미터명 | 필수여부 | 타입 | 제약사항 | 설명 |
---|---|---|---|---|
projectKey | Yes | string | 1-53 | 프로젝트 키 예시: “projectKey”:“Pbxxxxx_elsa-test” |
projectId | Yes | int | Project Id 예시: “projectId”:8171 | |
from | Yes | int | 검색을 시작할 타임스탬프(UTC milliseconds). 예시: “from”:1381190400000 | |
to | Yes | int | 검색을 종료할 타임스탬프(UTC milliseconds). 예시: “to”:1381190400000 | |
offset | No | int | offset+limit<=10000 | 기본값: 0 검색 결과의 시작 부분에서 offset 값을 지정할 수 있습니다. 0은 첫 번째 레코드에서 시작함을 의미합니다 예시: “offset”: 100 |
limit | No | int | 1 - 1000 | 기본값: 10 요청에 대한 반환할 로그 수입니다. offset 값을 기준으로 지정한 값만큼의 로그를 반환합니다 예시: “limit”: 500 |
sorts | No | 기본값: [{"logTime":"DESC"}] 정렬 기준과 방식을 지정할 수 있습니다 sorts 기능 이용 시에만 적용하는 부분이 있습니다 만약 정결 기준의 필드가 특정 필드(projectName, logTime, logLevel, host, projectVersion)외의 String 유형 필드면, 해당 필드 뒤에 ‘.raw’를 붙여야 합니다 만약 sorts 필요한 필드가 ‘.raw’ 붙이는 대상 여부를 모르시다면 /api/v1/fields API 통해 확인을 할 수 있습니다 예시: “sorts”: [{"logType.raw":"DESC"}] “sorts”: [{"projectVersion":"ASC"},{"logType.raw":"DESC"}] | ||
query | No | string | 부울 연산자 AND OR NOT + - 추가 사용 방법은 Query String Syntax / Lucene Query Syntax 참조 부탁드립니다. JSON특수 문자 다음과 같은 JSON 특수 문자를 검색하기 위해서는 문자 앞에 \를 이용합니다 " \ 예시: 원본: "query": "NOT logLevel:"FATAL" AND projectName:"elsa-test" AND (agent:"iPhone" OR agent:"iPod")" 이스케이프 문자 변경 후: "query": "NOT logLevel:\"FATAL\" AND projectName:\"elsa-test\" AND (agent:\"iPhone\" OR agent:\"iPod\")" | |
includeFields | No | [string] | 로그를 조회할 때 필요한 필드 이름의 리스트입니다. 예시: “includeFields”: [“logSource”,” logType”,”body”] | |
excludeFields | No | [string] | 로그를 조회할 때 불필요한 필드 이름의 리스트입니다. 예시: “excludeFields”: [“DmpReport”,” logType”] |
요청 바디
{
"projectId": 8171,
"projectKey": "Pbxxxxx_elsa-test",
"from": 1381190400000,
"to": 1381190400000,
"offset": 0,
"limit": 1000,
"query": "NOT logLevel:\"FATAL\" AND projectName:\" elsa-test\" AND (agent:\"iPhone\" OR agent:\"iPod\")",
"includeFields": [
"logSource",
"logType",
"body"
],
"sorts": [
{
"projectVersion": "ASC"
},
{
"logType.raw": "DESC"
}
]
}
요청 예시
import hashlib
import hmac
import base64
import time
import requests
def make_signature(access_key, secret_key, timestamp, url):
timestamp = str(timestamp)
secret_key = bytes(secret_key, 'UTF-8')
method = "POST"
message = method + " " + url + "\n" + timestamp + "\n" + access_key
message = bytes(message, 'UTF-8')
signingKey = base64.b64encode(hmac.new(secret_key, message, digestmod=hashlib.sha256).digest())
return signingKey.decode('UTF-8')
def log_search():
baseurl = "https://elsa.apigw.ntruss.com" #{OpenAPI endpoint}
url = "/api/v1/logs/search"
access_key = "accessKey" #{Main / Sub Account Access Key}
secret_key = "secretKey" #{Main / Sub Account Secret Key}
timestamp = int(time.time() * 1000)
signature = make_signature(access_key, secret_key, timestamp, url)
url = baseurl + url
payload = {
"projectId": 8171,
"projectKey": "Pbxxxxx_elsa-test",
"from": 1381190400000,
"to": 1381190400000,
"offset": 0,
"limit": 1000,
"query": "NOT logLevel:\"FATAL\" AND projectName:\" elsa-test\" AND (agent:\"iPhone\" OR agent:\"iPod\")",
"includeFields": ["logSource","logType","body"],
"sorts":[{"projectVersion":"ASC"},{"logType.raw":"DESC"}]
}
headers = {
"x-ncp-apigw-timestamp": str(timestamp),
"x-ncp-iam-access-key": access_key,
"x-ncp-apigw-signature-v2": str(signature)
}
response = requests.post(url=url,
json=payload,
verify=True,
headers=headers
)
응답
응답 바디
{
"data": {
"total": 2,
"logs": [
{
"sort": [
"9.9.9",
"elsa-log"
],
"id": "27mt7eQqk9xILgiLdJcgxxxx",
"existDmp": false,
"source": {
"logType": "elsa-log",
"logSource": "json",
"body": "Hello, I am [ xxx ], Nice to meet you !"
}
},
{
"sort": [
"9.9.9",
"nelo2-log"
],
"id": "55mt7eQqk9xILgiLdJcgxxxx",
"existDmp": false,
"source": {
"logType": " elsa-log ",
"logSource": "json",
"body": "Hello, I am [ xxx ], Nice to meet you !"
}
}
]
},
"status": 200
}
이 문서가 도움이 되었습니까?