본문 바로가기
WIKI 기술 지식 베이스

분할 그래프 위젯

원문 보기 위키 갱신

분할 그래프 위젯 (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 탭에서 그래프를 분할하는 방식을 구성하고, 그래프 수의 제한을 설정하고, 순서를 구성할 수 있어요.

  1. 분할 차원, 표시되는 그래프 수를 편집하거나 표시 옵션을 편집해서 분할에 구성 변경을 적용해요. 구성 옵션에 대한 자세한 내용은 구성(Configuration) 섹션을 참고하세요.
  2. 대시보드로 저장(Save to Dashboard)을 클릭해서 대시보드 하단에 새 분할 그래프 위젯을 만들어요. 원래 위젯은 대시보드에서 그대로 유지돼요.

Datadog의 다른 곳에서 분할 그래프 만들기 (Create a split graph from elsewhere in Datadog)

앱에서 여러 값에 걸친 분할이 표시될 때마다 위젯으로 내보내 대시보드에 추가할 수 있어요.

  1. 대시보드로 내보내기(Export to Dashboard)를 클릭해요.
  2. 내보낼 기존 대시보드를 검색하거나 이 위젯이 포함된 새 대시보드를 만들 수 있는 내보내기 모달이 열려요.

구성 (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"
}

더 알아보기 (Learn more)