search
- 印刷する
- PDF
search
- 印刷する
- PDF
記事の要約
この要約は役に立ちましたか?
ご意見ありがとうございます
概要
Effective Log Search & Analyticsのプロジェクト別のログを照会できます。
リクエスト
API URL
POST
https://elsa.apigw.ntruss.com/api/v1/logs/search
リクエストヘッダ
共通の設定に明示されたリクエストヘッダが必要です。
NAVERクラウドプラットフォームの認証キー及び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 検索結果の開始部分でオフセット値を指定できます。0は最初のレコードで開始することを意味します。 例: 「offset」:100 |
limit | No | int | 1 - 1000 | デフォルト値:10 リクエストに対して返すログ数です。オフセット値を基準に指定した値だけのログを返します。 例: 「limit」:500 |
sorts | No | デフォルト値:[{"logTime":"DESC"}] ソート基準と方式を指定できます。 ソート機能を利用する場合にのみ適用する部分があります。ソート基準のフィールドが特定フィールド(projectName、logTime、logLevel、host、projectVersion)以外のStringタイプフィールドの場合、そのフィールドの後ろに「.raw」を入力する必要があります。 ソートが必要なフィールドが「.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
}
この記事は役に立ちましたか?