대시보드 차트에 대한 일반 API 조회 작성을 위한 팁
일반 API 조회 및 대시보드 차트를 보다 쉽게 만드는 데 도움이 되는 팁은 특정 차트 유형에 대한 데이터 요구사항, 리턴된 JSON이 배열이 아닌 경우에 대한 결과 맵핑 및 동적 제목을 다룹니다.
데이터 형식
호출되는 API는 대시보드 가 데이터를 읽을 수 있도록 특정 JSON 형식으로 데이터를 리턴해야 합니다. API는 JSON 배열 (여러 결과가 있는 경우) 또는 JSON 오브젝트 (하나의 결과만 있는 경우) 를 리턴합니다. 리턴된 JSON 오브젝트는 하나의 요소를 포함하는 JSON 배열로 변환됩니다.
대부분의 IBM QRadar API는 대시보드 가 처리할 수 있는 형식으로 데이터를 리턴합니다. 앱 API와 같은 기타 API에서는 대시보드 결과 맵핑을 사용하여 리턴된 JSON 오브젝트의 특정 키를 추출해야 할 수 있습니다.
테이블형 차트의 데이터 요구사항
표 형식 차트의 경우 API는 JSON 오브젝트 (하나의 결과만 있는 경우) 또는 표 형식 데이터를 나타내는 요소의 JSON 배열을 리턴해야 합니다. 예를 들어, 다음과 같습니다.
[{
"rowstring": "Thanksgiving eCard Emails Distributing Malware",
"category": "Threat Activity",
"relevance": "25%",
"href": "/app/href"
}, {
"title": "PyXie - RAT Written In Python",
"category": "Threat Activity",
"relevance": "25%",
"href": "/app/href"
}, ...
원형 차트 및 단일 시리즈 막대 차트에 대한 데이터 요구사항
[{
"Country": "Europe",
"Count": 97
}, {
"Country": "Middle East",
"Count": 85
}, {
"Country": "North America",
"Count": 83
}, ...
시계열 차트에 대한 데이터 요구사항
시계열 차트의 경우 API는 JSON 오브젝트 (하나의 결과만 있는 경우) 또는 올바른 날짜 또는 밀리초 형식을 사용하는 하나 이상의 시간 기반 메트릭을 포함하는 JSON 배열과 Y축에 구성할 하나 이상의 숫자 메트릭을 리턴해야 합니다. 데이터는 시간별로 정렬되어야 합니다. 예를 들어, 다음과 같습니다.
[{
"date": "2020-02-18",
"Phishing": 7.21,
"C2": 82.67,
"Malware": 272.05,
"EarlyWarning": 448.32
}, {
"date": "2020-02-19",
"Phishing": 7.47,
"C2": 94.14,
"Malware": 121.84,
"EarlyWarning": 665.33
}, {
"date": "2020-02-20",
"Phishing": 8.05,
"C2": 92.35,
"Malware": 120.71,
"EarlyWarning": 736.9
}, ...
분산형 지리적 차트에 대한 데이터 요구사항
분산형 지리적 차트에는 좌표와 하나의 숫자 메트릭이 있는 geo_json
키를 포함하는 문자열화된 JSON 오브젝트 (즉, JSON.stringify()
JavaScript 함수를 사용하여 변환되는 오브젝트) 가 필요합니다. 예를 들어, 다음과 같습니다.
[{
"sourceIP": "81.12.213.121",
"geoSource": "{\"geo_json\":{\"coordinates\":[44.4354,26.1033],\"type\":\"Point\"}}",
"geoDest": "{\"geo_json\":{\"coordinates\":[1.0,38.0],\"type\":\"Point\"}}",
"eventCount": 50
}, {
"sourceIP": "59.154.60.0",
"geoSource": "{\"geo_json\":{\"coordinates\":[-33.494,143.2104],\"type\":\"Point\"}}",
"geoDest": "{\"geo_json\":{\"coordinates\":[53.3472,-6.2439],\"type\":\"Point\"}}",
"eventCount": 60
}, { ...
등치 지리적 차트에 대한 데이터 요구사항
코로플레스 지리적 차트에는 국가/지역 이름 또는 국가/지역의 ISO-3 코드와 하나의 숫자 메트릭이 있는 country
키를 포함하는 문자열화된 JSON 오브젝트 (즉, JSON.stringify()
JavaScript 함수를 사용하여 변환되는 오브젝트) 가 필요합니다. 예를 들어, 다음과 같습니다.
[{
"sourceIP": "81.12.213.121",
"geoCountry": "{\"country\":{\"confidence\":null,\"name\":\"Romania\",\"iso_code\":\"ROU\",\"geo_id\":798549}}",
"eventCount": 50
}, {
"sourceIP": "59.154.60.0",
"geoCountry": "{\"country\":{\"confidence\":null,\"name\":\"Australia\",\"iso_code\":\"AUS\",\"geo_id\":2077456}}",
"eventCount": 60
}, { ...
결과 맵핑
리턴된 JSON의 루트 오브젝트가 플로팅하려는 배열이 아닌 경우 결과 맵핑 필드를 사용하여 플로팅하려는 관련 데이터가 포함된 키를 정의하십시오.
결과 맵핑은 JSON dot(.) 오퍼레이터를 사용하여 루트 노드부터 문서를 순회합니다. 예를 들어 다음 JSON 오브젝트에서 관련 데이터는 table
루트 노드 아래에 있는 items
키 아래에 있습니다. 대시보드 가 items
배열을 읽고 다른 모든 키를 무시하려면 table.items
맵핑이 필요합니다.
{
"table": {
"title": "Top 5 most relevant threats",
"columns": [{
"title": "Threat",
"key": "title",
"subkey": "category",
"width": 75
}, {
"title": "X-Force Threat Score",
"key": "relevance",
"width": 0
}],
"items": [{
"title": "Thanksgiving eCard Emails Distributing Malware",
"category": "Threat Activity",
"relevance": "25%",
"href": "/app/href"
}, {
"title": "PyXie - RAT Written In Python",
"category": "Threat Activity",
"relevance": "25%",
"href": "/app/href"
}, { ...
리턴된 JSON 오브젝트 자체가 대부분의 기본 QRadar API의 경우와 같이 배열인 경우에는 맵핑이 필요하지 않습니다. 그러나 QRadar 앱을 사용하면 리턴된 JSON의 형식이 다를 수 있습니다.
동적 제목
데이터의 현재 상태를 설명하는 동적 제목을 사용하여 보기 이름을 대체할 수 있습니다. 예를 들어, 차트의 제목은 "World 악성 활동: < threat _name>" 입니다. 여기서 위협 이름은 시간이 경과함에 따라 변경됩니다. 다음 예와 같이 동적 제목에는 동적 제목 이름이 있는 title
키가 필요합니다.
{
"title": "Worldwide Malicious Activity: emotet",
"items": [{
"sourceIP": "81.12.213.121",
"geoSource": "{\"geo_json\":{\"coordinates\":[44.4354,26.1033],\"type\":\"Point\"}}",
"geoDest": "{\"geo_json\":{\"coordinates\":[1.0,38.0],\"type\":\"Point\"}}",
"geoCountry": "{\"country\":{\"confidence\":null,\"name\":\"Romania\",\"iso_code\":\"ROU\",\"geo_id\":798549}}",
"eventCount": 50
}, { ...
title
키가 루트 노드 아래에 있으면 제목 맵핑필드를 사용하십시오. 제목 맵핑은 JSON 점(.) 오퍼레이터를 사용하여 루트 노드에서 시작하여 문서를 순회합니다. 예를 들어 title
키가 table
루트 노드 아래에 있는 경우 table.title
맵핑을 지정하십시오.