이번 포스트는 datadog(의 기본적인 기능들에 관한 설명들이다. 공부를 하며 필기한 정리되지 않은 내용이라 가독성이 떨어질 수 있기 때문에 Datadog101 클래스 혹은 공식문서를 같이 보면 도움이 될 수 있을 것 같다.
Datadog101 비디오 시리즈:
https://www.youtube.com/watch?v=uI3YN_cnahk&list=PLdh-RwQzDsaOoFo0D8xSEHO0XXOKi1-5J
데이터독 Overview
Datadog는 인프라 모니터링, APM(Application Performance Management)에서 tracing 분석, log management 등의 서비스를 제공하고 이 모든 서비스가 연관 분석이 가능하게 해주는 서비스이다.
event stream
- event stream에서 우리의 환경에서 가장 최근에 무슨 일이 있었는지 모니터링이 가능하다.
dashboard
- dashboard는 즐겨찾기를 통해 중요한 것을 리스트의 맨 위로 올릴 수 있다.
- dashboard는 screen boards, time boards 두 개의 타입이 있다.
- time boards는 troubleshooting(문제해결)과 correlation(상관분석)에 적합하다.
- screen boards는 일반적인 status를 보여주는 보드이다.
Infrastructure
Host map
- Host map은 Infrastructure를 높은 수준으로 시각화 시켜준다.
- 각각의 헥사곤은 호스트를 나타내고, 이 호스트를 그룹화하고 필터링할 수 있다.
- 추가적인 분석이 필요한 호스트는 줌인을 하여 자세한 내용을 살펴볼 수 있다.
Infrastructure List
- 특정 호스트에 대한 좀 더 자세한 내용을 알고 싶다면 lnfrastructure List가 좀 더 빠른 방법일 수 있다.
- 호스트를 이름, integreation 또는 tag로 필터링하여 살펴볼 수 있다.
monitors
- monitors는 일종의 alerts 혹은 notifications로 생각될 수 있지만 문제가 생겼을 때 알림을 주는 것뿐만이 아니라 더욱 많은 기능을 제공하기 때문에 monitors가 좀 더 알맞은 개념이다.
- monitors에서는 존재하는 monitors를 확인하거나 새로운 것을 만들 수 있다.
Metrics
- Metrics는 자신의 environment에 관한 모든 것을 시간의 변화에 따라 수치로 나타내는 값이다. ex) latency, error rates, user signups
- Metrics가 유용한 이유는 Metrics가 자신의 시스템에 대한 전체적인 그림을 보여주기 때문이다.
- Metrics를 이용하면 사용자가 웹 사이트를 로드하는 속도나 서버의 평균 메모리 소비와 같은 환경의 상태를 한눈에 평가할 수 있다.
- 문제를 식별하면 logs나 tracing을 통해 해결을 할 수 있다.
- Metrics는 Datadog app(Metrics Explorer, Dashboards, or Notebooks)을 통해 시각화되고 그래프로 나타날 수 있다.
- Metrics summery는 자신의 환경에서 어떤 metrics가 사용 가능한지 확인할 수 있는 곳이다.
- summary view는 사용가능한 모든 metrics를 알파벳 순서로 리스트 해준다.
- summary view에서 metric을 클릭하면 어떤 host가 그 matric을 reporting 하고 있는지, matirc 태그의 리스트, matric에 대한 일반적인 정보를 요약해서 확인 가능하다.
- Metadata 섹션은 수정이 가능한데 이 부분에서 description, unit 그리고 metric type을 수정/업데이트할 수 있다.
- 위의 예시는 사용자가 경험한 latency를 y축에 나타내고 x축에서는 시간을 나타낸다.
Querying metrics
- 그래프는 graphing editor UI 혹은 바로 raw query string을 편집해서 작성할 수 있다.
- query string을 수정하고 싶다면 우측 상단의 </> 버튼을 눌러 수정할 수 있다.
- Datadog의 metric query는 다음과 같은 모습을 보인다.
- 위의 쿼리의 모습은 몇 개의 단계로 나누어질 수 있다.
- METRIC NAME
먼저 검색 혹은 Metric 옆의 드롭 다운을 통해, 그래프로 그리고 싶은 metric을 선택한다. 만약 무슨 metric을 사용해야 할지 모르겠다면 Metrics Explorer 혹은 notebook을 이용해 보는 것이 좋은 선택이다. 또한 Metricc Summart Page에서 activity reporting metric를 확인할 수 있다.
- FILTER YOUR METRIC
metric을 tag(s)를 기반으로 쿼리를 필터링할 수 있다. 예를 들자면 account:prod를 이용하여 쿼리 번위를 우리의 production hosts로 제한할 수 있다.
- CONFIGURE TIME
다음으로 time rollup을 이용하여 데이터의 세분 성을 고른다. 예를 들자면 6분마다(360초) 하나의 데이터 포인트가 있을 것이라고 정의하는 것이다. 또한 each time bucket마다 어떻게 데이터를 계산해 나갈 것인지를 정할 수도 있다. 디폴트 값으로는 avg 가 적용되어 있지만, 다른 가능한 옵션으로는 sum, min, max 그리고 count가 있다. 만약 max를 적용시키고 싶다면 .rollup(max, 60)를 사용하면 된다.
- CONFIGURE SPACE
Datadong에서 "space"의 의미는 matric이 다른 호스트와 태그에 분포하는 방식을 나타낸다. datadog에는 2가지 다른 space가 있는데, 이는 grouping과 aggregation이다.
grouping은 그래프를 구성하는 line을 정의한다. 예를 들자면 당신이 수백 개의 흩어져 있는 hosts들을 4개의 regions에 가지고 있다고 하자. 이를 region별로 grouping 한다면 각각의 region에 하나의 line을 허용해, number of timeseries를 4개로 줄일 수 있다.
Aggregation은 각각의 group안에 있는 metrics가 어떻게 합쳐져 있는지를 정의한다. Aggregations는 sum, min, max 그리고 avg 총 4가지가 존재한다.
- APPLY FUNCTION(OPTIONAL)
그래프의 값은 수학적 함수를 통해 수정할 수 있다. 이는 하나의 상수와 metric(ex. metric 곱하기 2) 혹은 2개의 metrics(ex. 다음과 같이 메모리 사용률에 대한 새 timeseries를 생성할 수 있다: jvm.heap_memory / jvm.heap_memory_max)
time and space aggregation
time aggregation과 space aggregation은 모든 쿼리들에서 중요한 역할을 하는 컴포넌트들이다. 이 두 aggregation을 잘 이해해야 그래프를 잘못 해석하는 것을 피할 수 있다.
- Time aggregation
Datadog이 저장하는 수많은 datapoints들을 전부 그래프에 디스플레이할 수는 없기 때문에 time aggregation을 활용해 데이터 포인트들을 time buckets안에 넣음으로써 해결할 수 있는데 이를 'rollup'이라고 한다. 쿼리에 대해 정의한 시간 간격(time interval)이 증가하면 데이터의 세분성은 더 거칠어진다.
- Space aggregation
Space aggregation은 하나의 metric을 host, container 그리고 region과 같은 tag들을 활용하여 여러 개의 time series로 나눌 수 있다. 예를 들어 만약 내가 EC2 인스턴스의 latency를 region별로 보고 싶다면 space aggregation을 이용해 각 region의 host들을 combine 할 수 있다.
space aggregation을 사용할 때에는 4가지 aggregations 가 적용될 수 있다: sum, min, max, avg. 위의 예시를 계속해서 이용해 말하자면 max aggregator를 적용시키면 각각의 region별로 가장 큰 latency를 보여주고, avg aggregator를 사용하면 각각의 region의 평균 latency를 보여준다.
Metic types
- count : time interval(시간 간격) 안의 모든 submitted value들을 더한다. 웹사이트의 조회수와 같은 부분을 추적하는데 유용하다.
- rate : 위의 count를 time interval의 길이로 나누는 값
- gauge : interval에서 보고된 가장 마지막 값을 나타낸다. RAM과 CPU 사용량과 같은 부분을 표현하는데 적합하다.
- histogram : summitted value의 5가지 다른 값을 보여준다: 평균, 횟수, 중간, 최대, 95th percentile. 이는 latency 같은 평균값만으로는 정보가 충분하지 않을 때 사용 가능하다.
metrics types documentation에서 더 많은 내용을 확인 가능
custom metrics
custom metircs를 활용하는 부분은 다음 링크 참조:
https://docs.datadoghq.com/metrics/custom_metrics/
datadog API
데이터독은 집계한 데이터들을 API로 제공해주는데 아래 링크에서 postman으로 바로 API를 활용해볼 수 있게 제공해주기 때문에 편리하게 API를 테스트해볼 수 있다.
https://docs.datadoghq.com/api/latest/
API를 호출할 때 필요한 쿼리에 대한 문법은 링크 참조
https://docs.datadoghq.com/tracing/trace_search_and_analytics/query_syntax/
'기타' 카테고리의 다른 글
VSCode 단축키 정리 (0) | 2021.09.07 |
---|