InfluxDB로 메트릭 조회
InfluxDB로 메트릭 조회 (Query metrics with InfluxDB)
Grafana MCP 서버를 사용해 AI 어시스턴트가 Grafana의 InfluxDB 데이터소스에 대해 InfluxDB 쿼리를 실행하도록 할 수 있어요. 서버는 InfluxQL(v1.x)과 Flux(v2.x)를 모두 지원하며, 방언(dialect)은 데이터소스의 구성된 버전에서 추론되거나 명시적으로 설정할 수 있어요.
출처: 문서
본문
달성할 내용
어시스턴트에게 InfluxDB 기반 메트릭을 조회하라고 요청하면, 어시스턴트가 서버의 InfluxDB 쿼리 도구를 사용해 Grafana의 데이터소스 프록시를 통해 쿼리를 보내고 포인트를 반환해요. 서버는 Grafana의 /api/ds/query 엔드포인트에 대한 얇은 셔임(shim)이므로, Grafana가 InfluxDB v1과 v2의 모든 프로토콜 세부 사항을 처리해요.
시작하기 전에
- 서버가 Grafana에 접근하도록 설정되고 구성되어 있어야 해요.
- InfluxDB 도구 범주가 활성화되어 있어야 해요(다른 선택적 데이터소스 도구와 마찬가지로 기본적으로 비활성화). 도구 활성화 및 비활성화 (Enable and disable tools)에 influxdb를 추가해요.
- Grafana에 InfluxDB 데이터소스가 구성되어 있어야 해요. 서비스 계정에
datasources:query와 해당 데이터소스에 대한 범위(예:datasources:uid:<uid>)가 필요해요.
쿼리 실행
MCP 클라이언트에서 어시스턴트에게 InfluxDB를 조회하라고 요청해요. 예를 들어 "지난 1시간 동안 호스트 server1의 평균 CPU 사용률은 얼마였어?" 또는 "이 Flux를 실행해 줘: from(bucket: \"metrics\") |> range(start: -1h) |> filter(fn: (r) => r._measurement == \"cpu\")"라고 할 수 있어요. 어시스턴트는 데이터소스 UID, 쿼리 문자열, 시간 범위와 함께 서버의 query_influxdb 도구를 사용해요.
데이터소스가 InfluxDB v2(Flux)로 구성되어 있다면 Flux 쿼리를 전달해요. v1(InfluxQL)로 구성되어 있다면 InfluxQL 쿼리를 전달해요. dialect를 "flux" 또는 "influxql"로 설정해 방언을 명시적으로 재정의할 수 있어요.
대시보드에서 패널의 쿼리 실행
관심 있는 대시보드에 이미 원하는 InfluxDB 패널이 있다면, 직접 쿼리를 작성하는 대신 run_panel_query를 사용해요. MCP 서버가 대시보드를 가져와 패널의 쿼리와 queryType을 추출하고 템플릿 변수를 치환한 뒤 구성된 데이터소스에 대해 쿼리를 실행해요. 이것이 "이 패널은 무엇을 보여 주지?"에서 실제 데이터까지 가는 가장 빠른 경로예요.
버킷 또는 데이터베이스의 내용 탐색
서버는 전용 측정(measurement) 또는 태그 나열 도구를 제공하지 않아요. 대신 query_influxdb를 통해 탐색 쿼리를 실행해요:
- Flux (v2):
from(bucket: "my-bucket") |> range(start: -1h) |> limit(n: 5)로 최근 포인트에서 사용 가능한 필드와 태그를 확인해요. - InfluxQL (v1):
SHOW MEASUREMENTS,SHOW TAG KEYS FROM "cpu",SHOW FIELD KEYS FROM "cpu".
datasourceType: "influxdb"로 get_query_examples를 사용하면 두 방언 모두에 대한 더 많은 시작 쿼리를 볼 수 있어요.
다음 단계
- PromQL 사용 사례는 Prometheus로 메트릭 조회 (Query metrics with Prometheus)를 참고해요.
- MCP 서버에서 패널의 쿼리를 실행하려면 대시보드 패널 쿼리 실행 (Run a dashboard panel query)을 참고해요.