토폴로지 뷰 데이터 구조 설명¶
필드 설명
| 매개변수 | 유형 | 필수 | 설명 |
|---|---|---|---|
| column_names | list | 값에 해당하는 열 이름 목록, 외부 함수 데이터 소스의 경우 series 데이터에 따라 자동으로 채워짐 |
|
| column_names[#] | str | ||
| series | list | 필수 | 데이터 그룹, 길이는 데이터 그룹 수를 의미 (토폴로지 뷰에서는 한 그룹만 존재) |
| series[#] | dict | 데이터 그룹 집합 | |
| series[#].tags | dict | 데이터 연결 속성 (데이터의 관련 속성 표시에 사용, table에서는 열 데이터로 표시, key 값의 별칭 매핑) | |
| series[#].columns | list | 필수 | 데이터 소스 필드 key 목록, 고정값 ['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
}
]
}
]
}