전체 글

전체 글

    Grafana transform

    Grafana Dashboard의 transform 기능 중 사용해 본 것들 정리 Merge https://grafana.com/docs/grafana/latest/panels-visualizations/query-transform-data/transform-data/#merge 여러 개의 query 결과를 하나로 합치기 위한 기능 time stamp랑 label을 기준으로 합칩니다. 위의 화면처럼, 파드 정보를 하나의 테이블에서 표시하고 싶을 때, 어느 노드에 스케줄링 됐는지 ( kube_pod_info ) cpu 사용량 ( container_cpu_usage_seconds_total ) memory 사용량 ( container_memory_working_set_bytes ) 이런 식으로 여러 개의 m..

    Prometheus에 argoCD metric 연동하기

    Kubernetes 환경에서 pod, node 등에 대한 메트릭 말고도, 특정 어플리케이션에 대한 메트릭이 있습니다. ArgoCD를 예를 들면, 언제 마지막으로 싱크했는지, 현재 등록된 application은 몇개인지, 상태는 어떤지 등 ArgoCD에서 노출시키는 메트릭들이 존재합니다. 이런 식으로 각 어플리케이션에서 개별적으로 노출시키는 메트릭은 ServiceMonitor를 사용하여 prometheus로 수집할 수 있습니다. 이 ServiceMonitor라는 것은 prometheus에서 만든 Custom Resource Definition으로, 이 정의를 기반으로 새로운 ServiceMonitor를 생성하면 prometheus-operator가 이 정보를 prometheus.yml에 추가하고, 이를 p..

    Metric Join

    kubernetes object의 metric은 하나의 metric으로는 단순한 표현만 가능합니다. 하지만 query 할 때 metric을 join시킴으로써 화면에 정보를 더 많이 표시할 수 있습니다. 이를 통해 여러 개의 대시보드를 확인할 필요 없이 하나의 대시보드로 여러 가지 정보를 확인할 수 있도록 할 수도 있습니다. 또한, join을 통해 특정 metric을 일종의 조건문처럼 사용할 수도 있습니다. 예를 들어, workload의 리소스 사용량을 확인할 때, 아래의 query문처럼 container의 memory 사용량 metric과 pod info metric을 join시켜서 container의 memory 사용량 metric에 pod 정보나 workload 정보를 포함되도록 하고 query 결과..

    LGTM 특장점

    LGTM은 Loki + Grafana + Tempo + Mimir를 의미합니다. 모두 Grafana Labs에서 개발한 오픈소스이며, 모니터링을 위한 어플리케이션입니다. Grafana : 모니터링 데이터를 UI로 표시하기 위한 Visualization 어플리케이션입니다. Loki, Tempo, Mimir 이외에도 많은 Datasource를 등록할 수 있으며, 사용자 관리, 대시보드 관리, 알람 관리 등 여러 기능이 구현되어 있습니다. Mimir : Metric 데이터를 수집, 저장, 압축하는 TSDB입니다. prometheus에 고가용성을 추가하기 위해 개발됐으며, 데이터 장기저장, multi tenancy, object storage 등을 지원합니다. Loki : Log 데이터를 수집, 저장, 압축하는..

    Prometheus alertmanager

    Prometheus alert rule 추가 prometheusRules 라는 Custom resource로 정의 할 수 있습니다. Custom resource는 자체적으로 만들어 내거나, helm values에서 additionalPrometheusRulesMap 에 정의하여 prometheus 세팅 시 함께 만들도록 할 수 있습니다. prometheus rules로 alert rule과 recording rule을 정의할 수 있습니다. Alert rule은 말그대로 알람을 위한 룰이고, recording rule은 기존 metric을 이용하여 새로운 metric을 만들어 낼 때 사용하는 것입니다. Custom resource 생성 (예시는 그룹 2개, 룰 4개만 적었고, 실제로 테스트 할 때에는 총 ..

    Prometheus를 push 방식으로 쓰기

    기본적으로 prometheus는 pulling 방식으로 사용합니다. 즉, prometheus에서 scrape target 정보를 가지고 있어서, target에게 메트릭을 요청하고 그에 대해 답변을 받아서 메트릭을 수집하는 방식입니다. 하지만, prometheus도 pushing 방식으로 사용할 수 있습니다. push 방식이란, agent(scrape target)측에서 일방적으로 prometheus에게 메트릭을 보내는 것입니다. prometheus가 굳이 target 정보를 알지 못해도 메트릭을 수집할 수 있는 것입니다. push 방식으로 사용하는 방법은 크게 두 가지입니다. pushgateway라는 component를 사용 remote_write API 사용 pushgateway Metric을 노출시키..

    Grafana-agent for uploading PrometheusRule to mimir

    Grafana-agent를 통해 현재 클러스터에 등록되어 있는 prometheus rule (Custom resource)을 mimir에 등록할 수 있습니다. grafana-agent.yaml (helm value) https://grafana.com/docs/agent/latest/flow/setup/install/kubernetes/ 위 링크를 참조하여 helm chart를 이용한 배포를 준비합니다. 아래 링크를 참조하여 grafana-agent의 content를 설정합니다. https://grafana.com/docs/agent/latest/flow/reference/components/mimir.rules.kubernetes/ agent: mode: 'flow' configMap: content:..

    Grafana mimir overview

    Grafana mimir에 대한 전반적인 자료 수집 내용을 정리해봤습니다. Grafana Labs에서 Cortex 개발을 주도하고 있었지만, Mimir를 출시하면서 Cortex는 더 이상 개발하지 않습니다. https://grafana.com/blog/2020/01/16/how-cortex-is-evolving-to-ingest-1-trillion-samples-a-day/ Mimir는 Time Series DataBase로, 수평적 확장이 가능하여 많은 수의 series를 쉽게 다룰 수 있습니다. 현재는 Prometheus 형식의 메트릭을 저장할 수 있으며, 목표는 모든 time series에 대한 핸들링이므로 InfluxDB나 opentelemetry, Datadog을 포함한 메트릭까지 확장할 계획입..