전체 글 1330

[Grafana] 대시보드 변수 사용

개요2025.09.26-[Grafana] 대시보드 변수 생성에서 대시보드 변수를 생성해 보았다. 이번 글에서는 대시보드 변수를 사용하는 방법을 간단하게 정리해 둔다. 데이터 필터링대시보드 변수를 사용하면 변수의 값으로 데이터를 필터링함으로써 동적인 대시보드를 구성할 수 있다.먼저 대시보드 변수는 '$변수명' 형식으로 참조할 수 있다. 예로 들어 직전 글에서 생성한 변수는 status라는 이름이었다. 이 경우에는 $status라는 형식으로 변수를 참조할 수 있다. 이 값을 이용해 기존에 만들었던 테이블 패널의 데이터를 필터링해 보자.WITH raw AS (SELECT date '2025-08-01' + (n || 'day')::interval AS time , array ..

Grafana 2025.10.02

[Grafana] 대시보드 변수 생성

개요대시보드 변수를 설정하면 아래와 같은 드롭다운을 통해 대시보드를 보다 동적으로 구성할 수 있다.이번 글에서는 대시보드 변수를 구성하고 사용하는 방법을 적어둔다. 예시 패널예시로 아래와 같은 테이블 패널이 있다고 하자. (데이터 쿼리는 접은글로 남겨둔다.)더보기데이터 (PostgreSQL)WITH base AS (SELECT date '2025-08-01' + (n || 'day')::interval AS time , array ['성공','실패','보류'] AS arr , trunc(random() * 3 + 1) AS random FROM g..

Grafana 2025.10.01

[Grafana] 범례 색상 변경하기

개요어떤 데이터 수집기의 실행 결과의 비율을 나타내는 파이 차트가 있다고 하자.성공, 실패, 보류 상태로 구분되어 있는데, 가시성을 위해 실패를 나타내는 색상을 다른 색으로 바꾸고 싶다. 방법을 알아보자. 참고 - 예시 데이터참고로 예시 차트를 만들기 위한 데이터는 아래와 같다. PostgreSQL에서 사용한 쿼리다.-- 랜덤으로 데이터 생성WITH base AS (SELECT array ['성공','실패','보류'] AS arr , trunc(random() * 3 + 1) AS random FROM generate_series(1, 100))SELECT arr[random] AS fruit , COUNT(*)FROM baseGROUP..

Grafana 2025.09.30

[Grafana] 시간 선택기에 따른 반응형 패널 만들기

개요날짜 데이터가 포함된 데이터를 시각화한다면 자연스럽게 시간 선택기를 변경할 때마다 결과가 바뀌는 것을 기대할 것이다. 그러기 위해서는 데이터를 시간 선택기에 맞게 필터링한 후 시각화할 수 있어야 한다.이 글에서는 데이터를 시간 선택기와 연동하는 방법을 적어둔다. 매크로Grafana는 쿼리를 단순화할 수 있는 매크로를 몇 가지 지원하고 있는데, 대개 시간과 관련된 매크로이다. 그 중 시간 선택기와 관련이 있는 매크로는 다음과 같다.매크로설명$__timeFilter(dateColumn)지정된 열을 기준으로 시간 범위 필터를 적용한다.예 ) dateColumn BETWEEN FROM_UNIXTIME(1494410783) AND FROM_UNIXTIME(1494410983)$__timeFrom()현재 활..

Grafana 2025.09.29

[Grafana] 대시보드/패널 추가

개요데이터 소스를 추가했으면 이제 Grafana 대시보드를 구성할 준비는 완료되었다고 할 수 있다. 이 글에서는 대시보드를 생성해 보자. 대시보드 생성1. 대시보드 페이지 이동왼쪽 메뉴 > Dashboards로 이동한 뒤, 화면에 보이는 + Create dasboard 버튼을 클릭한다. 2. 대시보드 저장화면에서 Save dashboard를 클릭하면 바로 빈 대시보드가 저장된다. 다만 빈 대시보드는 의미가 없으니 다른 패널이나 대시보드를 임포트 하던지, 직접 시각화 패널을 구성하는지 등의 작업이 필요하겠다. 패널 추가대시보드 추가 방법만 덜렁 적기 민망하니 패널도 한 가지 정도 만들어본다. 1. 대시보드 화면에서 + Add visualization 클릭 2. 사용 데이터 소스 선택패널에서 사용할 ..

Grafana 2025.09.26

[Grafana] PostgreSQL 데이터 소스 추가

개요Grafana를 통해 데이터를 시각화하기 위해서는 시각화할 데이터가 필요하다. Grafana에서는 데이터 소스(Data Source)를 통해 시각화할 데이터에 접근할 수 있다. 여기서 데이터 소스란 시각화할 데이터를 저장하고 있는 외부 데이터 저장소 또는 시스템을 뜻하며, Grafana는 Prometheus, PostgreSQL, InfluxDB, MySQL 등 다양한 유형의 데이터 소스를 지원하고 있다.이번 글에서는 PostgreSQL 데이터 소스를 추가하는 방법을 적어둔다. 지원 데이터 소스 유형 확인하기먼저 사용하려는 유형의 데이터 소스를 Grafana가 지원하는지 확인할 필요가 있다.왼쪽 메뉴 > Connections > Add new connection으로 이동한다. Grafana는 플러..

Grafana 2025.09.25

[Grafana] 설치 및 실행 (via Docker Compose)

개요업무에서 Grafana 대시보드 구성 업무를 담당하게 되어, Grafana 실행 환경을 구성할 필요가 생겼다. 테스트 환경이므로 간단하게 Docker Compose를 사용해 구성해보고자 한다. 방법을 적어둔다. 참고로 테스트 환경의 OS는 Ubuntu 24.04 LTS이며, 구성에 필요한 Docker나 Docker Compose는 이미 설치되어 있다고 가정한다. DockerCompose 프로젝트 구성먼저 적당한 경로에 데이터 저장을 위한 경로를 생성한다.mkdir /mnt/d/opt/grafanacd /mnt/d/opt/grafanamkdir /mnt/d/opt/grafana/data생성한 경로는 컨테이너에 마운트 해서 유지가 필요한 데이터를 저장하도록 할 것이다. 그리고 아래처럼 DockerCo..

Grafana 2025.09.24

[PostgreSQL] EXPLAIN - 2

개요2025.09.19-[PostgreSQL] EXPLAIN - 1에서 EXPLAIN에 대한 기초적인 부분을 살펴봤다. 이어서 이번 글에서는 다른 절이 추가됨에 따라 달라지는 실행 계획을 살펴보려고 한다. LIMITLIMIT을 추가하면 플래너는 모든 행을 검색할 필요가 없도록 수행할 작업을 변경한다. Index Scan 노드가 완료될 때까지 실행되는 것처럼 표시되지만 Limit 노드는 해당 행 중 3개 행만 검색한 후에 중지될 것이라 예상한다. 때문에 총비용도 그만큼 감소하게 된다.EXPLAINSELECT *FROM license_integratedWHERE collect_status = 'DONE'ORDER BY license_idLIMIT 3; JOIN - Nested LoopJoin의 경우에는..

Database 2025.09.23

[PostgreSQL] EXPLAIN - 1

개요데이터베이스에 쿼리를 실행할 때 기대하는 성능이 나오지 않는 경우가 있다. 대표적으로 데이터 조회에 너무 오랜 시간을 소모하는 상황인데, PostgreSQL의 경우 쿼리 실행 계획을 수립하고, 실행한다. 쿼리 구조와 데이터 속성에 맞는 계획을 선택해야 하기 때문에 데이터베이스는 좋은 계획을 선택하기 위한 플래너를 포함하고 있는데, EXPLAIN 명령을 사용하면 플래너가 생성한 쿼리 계 획을 확인할 수 있다. 필요시 이 계획을 바탕으로 쿼리 성능 개선을 시도해보아야 한다. EXPLAINEXPLAIN은 실행 계획을 확인할 쿼리문 맨 앞에 추가함으로써 사용한다. 기본적으로 텍스트로 결과를 반환한다.EXPLAIN [ ( option [, ...] ) ] statement쿼리 계획은 트리 구조로 되어 있고,..

Database 2025.09.22

[Airflow] PythonDecoratorOperator 적용 함수 직접 실행

개요Airflow 2부터는 TaskFlow API가 도입되어 데코레이터를 사용하면 Python 함수가 Airflow Task로 기능하게 된다. 다만 단점이라면 기존에는 테스트를 위해 Task가 호출하는 함수를 직접 실행할 수 있던 반면, 테코레이터를 사용하면 함수를 호출해도 동작을 확인할 수 없다.이번 글에서는 데코레이터를 적용한 함수를 직접 실행하는 방법을 적어둔다. 현상예로 들어 다음과 같이 데코레이터를 활용한 Dag 정의 파일이 있다고 하자.from datetime import datetime, timedeltafrom airflow.decorators import dag, taskdag_args = { "owner": "airflow", "retries": 1, "retry_de..

Apache Airflow 2025.09.19