분할 그래프 위젯
분할 그래프 위젯 (Split Graph Widget)
출처: 문서
본문
분할 그래프(split graph)를 사용하면 쿼리를 여러 태그 값으로 나눠서 이상값과 패턴을 식별할 수 있어요. 이 기능을 사용해서 여러 페이셋(facet)에서 메트릭 성능을 조사하고, 여러 태그에 걸친 이벤트를 비교하거나, 동적인 시각화를 만들 수 있어요.
참고: 분할 그래프 위젯은 스크린보드와 공유 대시보드에서 지원되지 않아요.
개요 (Overview)
분할 그래프를 사용하면 쿼리를 여러 태그 값으로 나눠서 이상값과 패턴을 식별할 수 있어요. 이 기능을 사용해서 여러 페이셋에서 메트릭 성능을 조사하고, 여러 태그에 걸친 이벤트를 비교하거나, 동적인 시각화를 만들 수 있어요.
설정 (Setup)
분할 그래프 위젯 만들기 (Create a split graph widget)
위젯 트레이의 그룹(group) 섹션에서 분할 그래프 위젯을 찾아 대시보드로 드래그해서 처음부터 분할 그래프를 만들어요. 이렇게 하면 쿼리와 분할 차원을 동시에 정의할 수 있어요. 구성 옵션에 대한 자세한 내용은 구성(Configuration) 섹션을 참고하세요.
기존 위젯에서 분할 그래프 만들기 (Create a split graph from an existing widget)
기존 위젯을 Split Graph 탭을 사용해서 태그 값으로 분할해 분할 그래프를 만들 수도 있어요. Split Graph 탭을 열려면:
- 대시보드에 새 위젯을 추가하고 쿼리 편집기 상단의 Split Graph 탭을 클릭해요.
- 위젯 컨트롤 옵션에서 편집(edit) 또는 확장(expand) 아이콘을 선택해 위젯을 전체 화면 모드로 연 다음 Split Graph 탭을 클릭해요.
- 대시보드에서 위젯의 컨텍스트 메뉴를 열고 분할 그래프(Split Graph)를 선택해요.
Split Graph 탭에서 그래프를 분할하는 방식을 구성하고, 그래프 수의 제한을 설정하고, 순서를 구성할 수 있어요.
- 분할 차원, 표시되는 그래프 수를 편집하거나 표시 옵션을 편집해서 분할에 구성 변경을 적용해요. 구성 옵션에 대한 자세한 내용은 구성(Configuration) 섹션을 참고하세요.
- 대시보드로 저장(Save to Dashboard)을 클릭해서 대시보드 하단에 새 분할 그래프 위젯을 만들어요. 원래 위젯은 대시보드에서 그대로 유지돼요.
Datadog의 다른 곳에서 분할 그래프 만들기 (Create a split graph from elsewhere in Datadog)
앱에서 여러 값에 걸친 분할이 표시될 때마다 위젯으로 내보내 대시보드에 추가할 수 있어요.
- 대시보드로 내보내기(Export to Dashboard)를 클릭해요.
- 내보낼 기존 대시보드를 검색하거나 이 위젯이 포함된 새 대시보드를 만들 수 있는 내보내기 모달이 열려요.
구성 (Configuration)
처음부터 분할 그래프를 만들거나 대시보드에서 기존 분할 그래프를 편집하면, 그래프와 분할을 모두 구성할 수 있어요.
분할 그래프 편집기는 두 개의 별도 섹션(Edit Graph와 Split Graph)으로 구성돼요. 위젯 제목을 추가하려면 편집기 상단의 텍스트 입력을 업데이트하세요.
참고: 위젯에서 분할 그래프를 만든 경우 Split Graph 탭에서만 분할을 구성할 수 있어요. 쿼리를 편집하려면 언제든지 편집(Edit) 탭을 클릭하면 돼요.
그래프 편집 (Edit graph)
분할하기 전에 그래프 쿼리를 구성해요. 분할을 지원하는 모든 시각화 유형을 선택하고 그래프 표시 방식을 변경할 수 있어요. 표준 쿼리 편집기 환경처럼 쿼리를 처음부터 만들 수도 있어요.
이 시각화에 대한 개별 구성에 대한 자세한 내용은 위젯(Widgets) 페이지에서 지원 위젯의 각 문서를 참고하세요.
변경 사항은 분할 그래프 편집기 모달 하단의 분할 그래프에 즉시 반영돼요.
분할 편집 (Edit split)
그래프를 분할하는 방식과 분할별 표시 옵션을 구성할 수 있는 여러 입력이 있어요.
| 구성 입력 | 설명 |
|---|---|
| 그래프당 하나 (One graph per) | 이 드롭다운은 원래 그래프를 분할할 차원을 정의해요. |
| 다음으로 제한 (Limit to) | 표시할 그래프 수와 선택할 값을 지정하는 옵션. 기본적으로 분할 그래프 위젯은 평균 값이 가장 높은 값을 동적으로 선택해요. |
| 정렬 기준 (Sort by) | 그래프를 정렬할 메트릭 또는 속성/페이셋을 선택해요. 사용자 지정(custom)을 선택하면 표시할 태그를 수동으로 선택할 수 있어요. |
| 컨트롤 표시 (Show Controls) | 사용 가능한 모든 태그 값을 가진 사이드바를 표시할지 전환해요. 태그 값을 수동으로 선택해 분할을 동적에서 정적으로 바꾸고 선택한 값만 표시할 수 있어요. 동적 동작으로 돌아가려면 선택을 지우거나 사용자 지정(Custom) 버튼을 클릭하고 상단(Top) 또는 하단(Bottom)을 선택해서 정렬을 다시 활성화해요. |
| 그래프 설정 (Graph Setting) | 분할 그래프에 특화된 표시 옵션. 그래프 크기(Graph Size): 분할 그래프 위젯 내 개별 그래프에 대해 4가지 크기 중 하나를 선택. 균일한 Y축(Uniform Y-Axes): 위젯의 그래프가 일관된 y축을 표시할지, 아니면 최대 가독성을 위해 각각 독립적으로 조정할지 선택. |
API
이 위젯은 **대시보드 API**와 함께 사용할 수 있어요. 위젯 JSON 스키마 정의에 대해서는 다음 표를 참고하세요.
분할 그래프 위젯의 최상위 필드에는 다음이 있어요.
| 필드 | 타입 | 설명 |
|---|---|---|
| has_uniform_y_axes | boolean | 그래프 전반의 y축을 정규화할지 여부. |
| size [필수] | enum | 분할에서 개별 그래프의 크기. 허용 enum 값: xs,sm,md,lg |
| source_widget_definition [필수] | object | 분할 대상인 원래 위젯. |
| title | string | 위젯 제목. |
| type [필수] | enum | 분할 그래프 위젯 유형. 허용 enum 값: split_graph |
source_widget_definition은 막대 차트(bar_chart), 변경(change), 지오맵(geomap), 쿼리 값(query_value), 산점도(scatterplot), 파이 차트/선버스트(sunburst), 테이블(query_table), 시계열(timeseries), 탑 리스트(toplist), 트리맵(treemap) 등 분할을 지원하는 위젯 유형 중 하나가 될 수 있어요. 전체 예시는 다음과 같아요.
{
"has_uniform_y_axes": false,
"size": "sm",
"source_widget_definition": {
"custom_links": [
{
"is_hidden": false,
"label": "Search logs for {{host}}",
"link": "https://app.datadoghq.com/logs?query={{host}}",
"override_label": "logs"
}
],
"description": "string",
"requests": [
{
"apm_query": {
"compute": {
"aggregation": "avg",
"facet": "@duration",
"interval": 5000
},
"group_by": [
{
"facet": "resource_name",
"limit": 50,
"sort": {
"aggregation": "avg",
"facet": "@string_query.interval",
"order": "desc"
}
}
],
"index": "days-3,days-7",
"multi_compute": [
{
"aggregation": "avg",
"facet": "@duration",
"interval": 5000
}
],
"search": {
"query": ""
}
},
"audit_query": {
"compute": {
"aggregation": "avg",
"facet": "@duration",
"interval": 5000
},
"group_by": [
{
"facet": "resource_name",
"limit": 50,
"sort": {
"aggregation": "avg",
"facet": "@string_query.interval",
"order": "desc"
}
}
],
"index": "days-3,days-7",
"multi_compute": [
{
"aggregation": "avg",
"facet": "@duration",
"interval": 5000
}
],
"search": {
"query": ""
}
},
"conditional_formats": [
{
"comparator": ">",
"custom_bg_color": "string",
"custom_fg_color": "string",
"hide_value": false,
"image_url": "string",
"metric": "string",
"palette": "blue",
"timeframe": "string",
"value": 0
}
],
"event_query": {
"compute": {
"aggregation": "avg",
"facet": "@duration",
"interval": 5000
},
"group_by": [
{
"facet": "resource_name",
"limit": 50,
"sort": {
"aggregation": "avg",
"facet": "@string_query.interval",
"order": "desc"
}
}
],
"index": "days-3,days-7",
"multi_compute": [
{
"aggregation": "avg",
"facet": "@duration",
"interval": 5000
}
],
"search": {
"query": ""
}
},
"formulas": [
{
"alias": "string",
"cell_display_mode": "number",
"cell_display_mode_options": {
"trend_type": "area",
"y_scale": "shared"
},
"conditional_formats": [
{
"comparator": ">",
"custom_bg_color": "string",
"custom_fg_color": "string",
"hide_value": false,
"image_url": "string",
"metric": "string",
"palette": "blue",
"timeframe": "string",
"value": 0
}
],
"formula": "func(a) + b",
"limit": {
"count": "integer",
"order": "asc"
},
"number_format": {
"unit": {
"per_unit_name": "bytes",
"type": "canonical_unit",
"unit_name": "bytes"
},
"unit_scale": {
"type": "canonical_unit",
"unit_name": "bytes"
}
},
"style": {
"palette": "classic",
"palette_index": 1
}
}
],
"log_query": {
"compute": {
"aggregation": "avg",
"facet": "@duration",
"interval": 5000
},
"group_by": [
{
"facet": "resource_name",
"limit": 50,
"sort": {
"aggregation": "avg",
"facet": "@string_query.interval",
"order": "desc"
}
}
],
"index": "days-3,days-7",
"multi_compute": [
{
"aggregation": "avg",
"facet": "@duration",
"interval": 5000
}
],
"search": {
"query": ""
}
},
"network_query": {
"compute": {
"aggregation": "avg",
"facet": "@duration",
"interval": 5000
},
"group_by": [
{
"facet": "resource_name",
"limit": 50,
"sort": {
"aggregation": "avg",
"facet": "@string_query.interval",
"order": "desc"
}
}
],
"index": "days-3,days-7",
"multi_compute": [
{
"aggregation": "avg",
"facet": "@duration",
"interval": 5000
}
],
"search": {
"query": ""
}
},
"process_query": {
"filter_by": [],
"limit": "integer",
"metric": "system.load.1",
"search_by": "string"
},
"profile_metrics_query": {
"compute": {
"aggregation": "avg",
"facet": "@duration",
"interval": 5000
},
"group_by": [
{
"facet": "resource_name",
"limit": 50,
"sort": {
"aggregation": "avg",
"facet": "@string_query.interval",
"order": "desc"
}
}
],
"index": "days-3,days-7",
"multi_compute": [
{
"aggregation": "avg",
"facet": "@duration",
"interval": 5000
}
],
"search": {
"query": ""
}
},
"q": "system.load.1",
"queries": [],
"response_format": "timeseries",
"rum_query": {
"compute": {
"aggregation": "avg",
"facet": "@duration",
"interval": 5000
},
"group_by": [
{
"facet": "resource_name",
"limit": 50,
"sort": {
"aggregation": "avg",
"facet": "@string_query.interval",
"order": "desc"
}
}
],
"index": "days-3,days-7",
"multi_compute": [
{
"aggregation": "avg",
"facet": "@duration",
"interval": 5000
}
],
"search": {
"query": ""
}
},
"security_query": {
"compute": {
"aggregation": "avg",
"facet": "@duration",
"interval": 5000
},
"group_by": [
{
"facet": "resource_name",
"limit": 50,
"sort": {
"aggregation": "avg",
"facet": "@string_query.interval",
"order": "desc"
}
}
],
"index": "days-3,days-7",
"multi_compute": [
{
"aggregation": "avg",
"facet": "@duration",
"interval": 5000
}
],
"search": {
"query": ""
}
},
"sort": {
"count": "integer",
"order_by": [
{
"index": 0,
"order": "desc",
"type": "formula"
}
]
},
"style": {
"line_type": "string",
"line_width": "string",
"order_by": "string",
"palette": "string"
}
}
],
"style": {
"display": {
"legend": "automatic",
"type": "stacked"
},
"palette": "string",
"scaling": "string"
},
"time": {
"hide_incomplete_cost_data": false,
"live_span": "5m"
},
"title": "string",
"title_align": "string",
"title_size": "string",
"type": "bar_chart"
},
"split_config": {
"limit": 24,
"sort": {
"compute": {
"aggregation": "sum",
"metric": "system.cpu.user"
},
"order": "desc"
},
"split_dimensions": [
{
"one_graph_per": "service"
}
],
"static_splits": [
[]
]
},
"time": {
"hide_incomplete_cost_data": false,
"live_span": "5m"
},
"title": "string",
"type": "split_group"
}