토폴로지 데이터 구조 설명¶
필드 설명
| 매개변수 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
| column_names | list | 값에 해당하는 열 이름 집합, 외부 함수 데이터 소스의 경우 series 데이터에 따라 자동으로 채워짐 |
|
| column_names[#] | str | ||
| series | list | 필수 | 데이터 그룹, 길이는 데이터 그룹 개수를 나타냄(토폴로지 맵에서는 한 그룹만 존재) |
| series[#] | dict | 하나의 데이터 그룹 | |
| series[#].tags | dict | 데이터 관련 속성(데이터 관련 속성 표시, table에서는 열 데이터로 표시, alias 키 값 매핑) | |
| series[#].columns | list | 필수 | 데이터 소스 필드 키 목록, 고정값 ['time', 'data'] |
| series[#].values | list | 필수 | 2차원 배열, 배열의 각 항목은 하나의 데이터를 나타내며, 여기서는 하나의 데이터만 존재 |
| series[#].values[#] | list | [타임스탬프, 데이터 값]으로 구성, 길이는 series[#].columns와 일치해야 함 |
|
| series[#].values[#][0] | str | 'time' 열에 해당하는 값, null일 수 있음 | |
| series[#].values[#][1] | str | 'data' 열에 해당하는 값, 직렬화된 객체이며 ServiceMap, ResourceMap 유형 지원 |
ServiceMap 서비스 관계도¶
토폴로지 맵은 원형 노드 형태로 표시되며, 노드 이름은 고유 식별자로 사용되어 노드 정보 및 노드 연결 관계를 나타냅니다.
{
"services": [
{
"data": {
"__size": 10,
"__fill": 10,
"fieldA": "1.0",
"fieldB": "test"
},
"name": "demo_web",
"type": "web"
},
{
"data": {
"__size": 10,
"__fill": 10,
"fieldA": "1.0",
"fieldB": "test"
},
"name": "demo_framework",
"type": "framework"
}
],
"maps": [
{
"source": "demo_web",
"target": "demo_framework"
}
]
}
필드 설명
| 매개변수 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
| services | list | 필수 | 노드 상세 목록 |
| services[#] | dict | 노드 상세 정보 | |
| services[#].name | string | 필수 | 노드 이름, 노드 하단에 표시 |
| services[#].type | string | 필수 | 노드 유형, 노드 중앙 아이콘 표시에 사용(지원 유형: 'web', 'custom', 'cache', 'db', 'app', 'front', 'aws_lambda'), 범위 외는 'custom'으로 기본값 설정 |
| services[#].data | dict | 노드 속성 | |
| services[#].data.__size | number | 원 크기 필드 값, 범위는 없으며 설정된 크기에 따라 자동으로 표시 | |
| services[#].data.__fill | number | 필수 | 채우기 색상 필드 값, 설정된 그라데이션 색상 계열의 최대값과 최소값 범위 내에 있어야 함 |
| services[#].data.fieldA | string/number | 필수 | 노드 hover 내용 표시, '__size', '__fill' 필드를 제외한 나머지는 모두 사용자 정의 필드로 표시 |
| maps | list | 필수 | 노드 연결 관계 목록 |
| maps[#] | dict | 서비스 연결 관계(방향: source->target) | |
| maps[#].source | string | 필수 | 시작 노드 |
| maps[#].target | string | 필수 | 대상 노드 |
ResourceMap 리소스 관계도¶
토폴로지 맵은 카드 노드 형태로 표시되며, 연결 관계는 하나의 중앙 노드만 존재해야 합니다. serviceResource는 카드 노드 상세 목록입니다(service:resource는 고유성을 유지해야 하며, 카드 노드의 고유 식별자 역할을 함). maps는 중앙 노드와 다른 노드 간의 연결 관계로, 중앙 노드에서 가리키는 노드는 중앙 노드 오른쪽에, 중앙 노드를 가리키는 노드는 중앙 노드 왼쪽에 위치합니다.
{
"serviceResource": [
{
"data": {
"__fill": 10,
"avg_per_second_title": "AAA",
"avg_per_second": 1,
"p99_title": "AAA",
"p99": 1,
"error_rate_title": "AAA",
"error_rate": 1
},
"service": "demo_web",
"resource": "demo_web_resource",
"source_type": "web"
},
{
"data": {
"__fill": 10,
"avg_per_second_title": "AAA",
"avg_per_second": 1,
"p99_title": "AAA",
"p99": 1,
"error_rate_title": "AAA",
"error_rate": 1
},
"service": "demo_framework",
"resource": "demo_framework_resource",
"source_type": "framework"
}
],
"maps": [
{
"source": "demo_web",
"source_resource": "demo_web_resource",
"target": "demo_framework",
"target_resource": "demo_framework_resource"
}
]
}
필드 설명
| 매개변수 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
| serviceResource | list | 필수 | 카드 노드 상세 목록 |
| serviceResource[#] | dict | 카드 상세 정보 | |
| serviceResource[#].service | string | 필수 | 카드 하단 텍스트 표시 내용 |
| serviceResource[#].resource | string | 필수 | 카드 상단 텍스트 표시 내용 |
| serviceResource[#].source_type | string | 필수 | 리소스 유형, 노드 아이콘 표시에 사용(지원 유형: 'web', 'custom', 'cache', 'db', 'app', 'front', 'message'), 범위 외는 'custom'으로 기본값 설정 |
| serviceResource[#].data | dict | 서비스 하위 리소스 데이터 매개변수 | |
| serviceResource[#].data.avg_per_second | number | 중앙 왼쪽 표시 내용 값 | |
| serviceResource[#].data.avg_per_second_title | number | 중앙 왼쪽 hover 표시 내용 | |
| serviceResource[#].data.error_rate | number | 중앙 오른쪽 표시 내용 | |
| serviceResource[#].data.error_rate_title | number | 중앙 오른쪽 hover 표시 내용 | |
| serviceResource[#].data.p99 | number | 중앙 표시 내용 | |
| serviceResource[#].data.p99_title | number | 중앙 오른쪽 hover 표시 내용 | |
| maps | list | 필수 | 카드 노드 연결 관계 목록 |
| maps[#] | dict | 카드 노드 연결 관계(방향 source_resource->target_resource) | |
| maps[#].source | string | 필수 | serviceResource[#].service 이름과 동일 |
| maps[#].source_resource | string | 필수 | serviceResource[#].resource와 동일 |
| maps[#].target | string | 필수 | serviceResource[#].service와 동일 |
| maps[#].target_resource | string | 필수 | serviceResource[#].resource와 동일 |
외부 함수 응답 구조 예시¶
@DFF.API('함수명', category='dataPlatform.dataQueryFunc')
def whytest_topology_test():
now = int(time.time()) * 1000
# 여기서 data는 위의「ServiceMap 서비스 관계도, ResourceMap 리소스 관계도」의 전체 구조입니다
data = {}
return {
"content": [
{
"series": [
{
"columns": ["time", "data"],
"values": [
now, json.dumps(data)
],
"total_hits": 1
}
]
}
]
}