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

시계열 위젯

원문 보기 위키 갱신

시계열 위젯 (Timeseries Widget)

출처: 문서

본문

시계열(timeseries) 시각화를 사용하면 하나 이상의 메트릭, 로그 이벤트, 또는 인덱스 스팬(Indexed Spans)의 변화를 시간에 따라 표시할 수 있어요. 시간 창은 타임보드 또는 스크린보드에서 선택한 내용에 따라 달라져요.

설정 (Setup)

구성 (Configuration)

  1. 그래프로 그릴 데이터를 선택해요.

    • 메트릭: 메트릭 쿼리를 구성하려면 쿼리 문서를 참고하세요.
    • 인덱스 스팬(Indexed Spans): 인덱스 스팬 쿼리를 구성하려면 트레이스 검색 문서를 참고하세요.
    • 로그 이벤트: 로그 이벤트 쿼리를 구성하려면 로그 검색 문서를 참고하세요.
  2. 사용 가능한 옵션으로 그래프를 사용자화해요.

표시 옵션 (Display options)

그래프는 선(line), 영역(area), 막대(bar)로 표시할 수 있어요. Datadog 그래프는 간격(intervals)을 기준으로 데이터를 집계해요 (예: 매 시간 합계). 기본적으로 시계열 그래프에서 마지막 불완전한 시간 간격은 음영 처리되고 "부분 데이터(partial data)"로 라벨링돼요.

선 그래프에는 추가 파라미터가 있어요.

파라미터 옵션
스타일 (Style) 실선(solid), 점선(dashed), 또는 점(dotted)
굵기 (Stroke) 보통(normal), 가늘게(thin), 두껍게(thick)

자동 라벨 (Automatic labels)

선 그래프는 최고점과 최저점 같은 주목할 만한 데이터 포인트에 라벨을 표시해서, 그래프 위에 마우스를 올리지 않고도 핵심 값을 읽을 수 있게 해줘요. 자동 라벨은 기본적으로 켜져 있어요. 끄려면 그래프 편집기에서 라벨 표시(Show labels)를 전환하세요.

쿼리가 태그로 그룹화되거나 별칭이 있으면 Datadog은 각 선의 마지막 포인트에 일련 이름을 라벨로 붙여, 최고점/최저점 대신 표시해요.

그래프를 읽기 좋게 유지하기 위해 Datadog은 계열당 최대 3개의 라벨을 표시하며, 그래프에 6개 이상의 계열이 있으면 라벨을 전혀 표시하지 않아요.

색상 (Color)

모든 그래프 유형에 대해 Datadog은 같은 그래프에 표시되는 여러 메트릭을 구분하기 위해 다양한 색상 옵션을 제공해요.

팔레트 설명
클래식 (Classic) 연한 파랑, 진한 파랑, 연한 보라, 보라, 연한 노랑, 노랑의 단순한 색상(색상이 반복됨).
일관된 (Consistent) 16가지 색상 세트를 사용해서 각 태그 그룹의 데이터 계열에 대해 모든 위젯에서 일관된 색상을 적용.

선 그래프의 경우 JSON에서 쿼리를 분리해서 서로 다른 메트릭에 특정 팔레트를 지정할 수 있어요. 자세한 내용은 그래프에 적합한 색상 선택 가이드를 참고하세요.

정렬 (Sorting)

시계열 범례와 누적 그래프를 정렬하려면 태그(Tags) 또는 값(Values)별로 그래프를 정렬해요. 이는 그래프 시각화만 정렬하며 쿼리에는 영향을 주지 않아요. 역순(Reverse) 옵션을 전환해서 역순 알파벳 순서 또는 내림차순 값으로 정렬할 수 있어요.

메트릭 별칭 (Metric aliasing)

각 쿼리 또는 공식은 필터링 태그와 함께 별칭을 지정할 수 있어요. 별칭은 그래프와 범례의 표시를 덮어쓰며, 긴 메트릭 이름이나 긴 필터 목록에 유용해요. 쿼리 또는 공식 끝에서 as…를 클릭하고 메트릭 별칭을 입력하세요.

이벤트 오버레이 (Event overlay)

이벤트 오버레이는 모든 데이터 소스를 지원해요. 이를 통해 비즈니스 이벤트와 어떤 Datadog 서비스의 데이터 사이를 더 쉽게 상호 연결할 수 있어요.

이벤트 오버레이를 사용하면 조직 내 액션(동작)이 애플리케이션과 인프라스트럭처 성능에 어떻게 영향을 주는지 볼 수 있어요. 예시 사용 사례:

  • 배포 이벤트가 오버레이된 RUM 오류율
  • 추가 서버 프로비저닝 관련 이벤트와 CPU 사용량 상호 연결
  • 의심스러운 로그인 활동과 이그레스 트래픽 상호 연결
  • 모든 시계열 데이터를 모니터 알림과 상호 연결해서 Datadog에 적절한 알림이 구성되어 있는지 확인

관련 시스템의 이벤트를 추가해서 그래프에 더 많은 맥락을 더할 수 있어요. 예를 들어 GitHub 커밋, Jenkins 배포, Docker 생성 이벤트. 이벤트 오버레이(Event Overlays) 섹션에서 이벤트 오버레이 추가(Add Event Overlay)를 클릭하고 해당 이벤트를 표시할 쿼리를 입력하세요.

이벤트 탐색기(Event Explorer)와 같은 쿼리 형식을 사용하세요. 예를 들어:

쿼리 설명
sources:jenkins Jenkins 소스의 모든 이벤트를 표시.
tag:role:web role:web 태그가 있는 모든 이벤트를 표시.
tags:$<TEMPLATE_VARIABLE> 선택한 템플릿 변수의 모든 이벤트를 표시.

마커 (Markers)

추가 데이터셋에 대한 마커를 추가하려면 마커(Markers) 섹션에서 마커 추가(Add Marker)를 클릭해요.

  1. 선(Line) 또는 범위(Range)를 선택하고 값 또는 값 범위를 입력해요.
  2. 표시 방법(Show as) 필드에서 알림 상태/색상을 선택하고 실선, 굵은 선, 점선 중 하나를 선택해요.
  3. 시계열 위젯 왼쪽 아래에 표시될 라벨을 추가하려면 라벨(Label) 체크박스를 클릭하고 y축 값을 정의해요.

이중 Y축 (Dual y-axis)

같은 그래프에 두 개 이상의 Y축을 표시하려면 그래프 추가(Add Graph) 를 클릭해요. Y축 드롭다운을 사용해서 요청의 데이터를 왼쪽 또는 오른쪽 축에 연결해요. 각 측면에 원하는 수만큼 요청을 지정할 수 있어요.

Y축 컨트롤 (Y-axis controls)

Y축 컨트롤은 UI와 JSON 편집기에서 사용할 수 있어요. Y축의 값과 유형을 다음과 같이 설정할 수 있어요.

  • 특정 범위로 Y축을 클리핑.
  • 절대값 임계값을 기준으로 Y축 경계를 자동으로 변경. 이 임계값은 그래프의 한쪽 또는 양쪽(하한과 상한)에 적용해서 "이상값" 계열을 제거할 수 있어요.
  • Y축 배율을 선형에서 log, pow, sqrt로 변경.

사용 가능한 구성 옵션:

옵션 필수 설명
Min 아니요 Y축에 표시할 최솟값을 지정. 숫자 또는 기본값 Auto를 사용.
Max 아니요 Y축에 표시할 최댓값을 지정. 숫자 또는 기본값 Auto를 사용.
Scale 아니요 배율 유형 지정. 가능한 값: - linear: 선형 배율(기본값). - log: 로그 배율. - pow: 2의 거듭제곱 배율(기본 2, JSON에서 수정). - sqrt: 제곱근 배율.
Always include zero 아니요 항상 0을 포함하거나 데이터 범위에 맞게 Y축을 조정. 기본값은 항상 0 포함.

참고: 수학적 로그 함수는 음수 값을 받지 않으므로 Datadog 로그 배율은 값이 같은 부호일 때(모두 > 0 또는 모두 < 0)만 작동해요. 그렇지 않으면 Datadog은 빈 그래프를 반환해요.

범례 구성 (Legend configuration)

범례(Legend) 섹션에서 다음 옵션을 선택해서 스크린보드에 구성 가능한 범례를 추가할 수 있어요.

  • 자동 (Automatic, 기본값)
  • 컴팩트 (Compact)
  • 확장 (Expanded): 값, 평균(avg), 합계(sum), 최소(min), 최대(max)에 대한 구성 가능한 열
  • 없음 (None)

타임보드의 경우 대시보드가 L 또는 XL로 설정되면 범례가 자동으로 표시돼요.

대시보드 위젯을 클릭할 때 나타나는 드롭다운 메뉴에 컨텍스트 링크를 추가하려면 컨텍스트 링크(Context Links) 섹션에서 컨텍스트 링크 추가(Add a Context Link)를 클릭해요.

컨텍스트 링크 편집 및 삭제에 대한 자세한 내용은 컨텍스트 링크를 참고하세요.

전체 화면 (Full screen)

표준 전체 화면 옵션에 더해 빠른 함수 적용, Y축 배율 조정, 변경 사항 저장, 새 그래프로 저장을 할 수 있어요.

자세한 내용은 전체 화면 그래프 모드에서 데이터 탐색하기를 참고하세요.

시간 비교 (Compare time)

Compare Time 탭을 사용하면 현재 메트릭 성능을 이전 기간과 비교해서 변화를 한눈에 볼 수 있어요. 시스템 부하 급증을 조사하거나 배포의 영향을 검증할 때 사용하세요.

Compare Time 탭을 열려면 위젯 컨트롤 옵션에서 확장 아이콘을 클릭해 위젯을 검사 모드로 연 다음, 시간 비교(Compare Time)를 클릭하세요.

이 탭은 두 개의 그래프를 표시해요.

  • 현재(Current): 활성 시간 창의 메트릭 데이터. 시간 범위 드롭다운과 재생 컨트롤로 창을 조정할 수 있어요.
  • 이전(Previous): 비교 기간. 오프셋을 설정하려면 기간(Period), 일(Day), 주(Week), 월(Month), 사용자 지정(Custom)을 선택해요.

두 기간을 같은 그래프에서 보려면 오버레이(Overlay)를 클릭해요. 나란히 보기로 돌아가려면 그리드(Grid)를 클릭해요.

메트릭 정보 (Metrics info)

메트릭 그래프에서 컨텍스트 메뉴(세로 점 3개)를 클릭하면 메트릭 정보(Metrics Info) 옵션을 찾을 수 있어요. 이 옵션은 메트릭에 대한 설명이 있는 패널을 열어요. 이 패널에서 메트릭 이름을 클릭하면 추가 분석이나 편집을 위해 메트릭 요약 페이지에서 메트릭이 열려요.

API

이 위젯은 **대시보드 API**와 함께 사용할 수 있어요. 위젯 JSON 스키마 정의에 대해서는 다음 표를 참고하세요.

시계열 위젯의 최상위 필드에는 다음이 있어요.

필드 타입 설명
custom_links object[] 사용자 지정 링크 목록.
description string 위젯의 설명.
events object[] DEPRECATED (더 이상 사용되지 않음): 위젯 이벤트 목록. overlay 요청 유형을 대신 사용하세요.
legend_columns string[] 범례에 표시되는 열.
legend_layout enum 범례 레이아웃. 허용 enum 값: auto,horizontal,vertical
legend_size string 위젯에 사용 가능한 범례 크기. "0", "2", "4", "8", "16" 또는 "auto" 중 하나여야 해요.
markers object[] 마커 목록.
requests [필수] object[] 시계열 위젯 요청 목록.
show_legend boolean 범례 표시 여부.
time object 위젯의 시간 설정.
title string 위젯 제목.
type [필수] enum 시계열 위젯 유형. 허용 enum 값: timeseries
yaxis object 축 컨트롤.

각 requests 항목은 display_type, formulas, queries, query, response_format, style(선 유형, 너비, 팔레트)을 포함할 수 있어요. 전체 예시는 다음과 같아요.

{
  "custom_links": [
    {
      "is_hidden": false,
      "label": "Search logs for {{host}}",
      "link": "https://app.datadoghq.com/logs?query={{host}}",
      "override_label": "logs"
    }
  ],
  "description": "string",
  "events": [
    {
      "q": "",
      "tags_execution": "string"
    }
  ],
  "legend_columns": [],
  "legend_layout": "string",
  "legend_size": "string",
  "markers": [
    {
      "display_type": "error dashed",
      "label": "Error threshold",
      "time": "string",
      "value": "y = 15"
    }
  ],
  "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": ""
        }
      },
      "display_type": "string",
      "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": ""
        }
      },
      "metadata": [
        {
          "alias_name": "string",
          "expression": ""
        }
      ],
      "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": ""
        }
      },
      "on_right_yaxis": false,
      "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": "string",
      "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": ""
        }
      },
      "style": {
        "has_value_labels": false,
        "line_type": "string",
        "line_width": "string",
        "order_by": "string",
        "palette": "string"
      }
    }
  ],
  "right_yaxis": {
    "include_zero": false,
    "label": "string",
    "max": "string",
    "min": "string",
    "scale": "string"
  },
  "show_legend": false,
  "time": {
    "hide_incomplete_cost_data": false,
    "live_span": "5m"
  },
  "title": "string",
  "title_align": "string",
  "title_size": "string",
  "type": "timeseries",
  "yaxis": {
    "include_zero": false,
    "label": "string",
    "max": "string",
    "min": "string",
    "scale": "string"
  }
}

더 알아보기 (Learn more)