AI API 게이트웨이 운영에서 모니터링은 단순한 관리가 아닙니다. 저는 HolySheep AI로 3개월간 5,000만 토큰 이상의 요청을 처리하면서 프로덕션 모니터링의 중요성을 뼈저리게 느꼈습니다. 오늘은 Datadog과 Grafana를 활용해 HolySheep AI 게이트웨이에 대한 종합적인 모니터링 파이프라인을 구축하는 방법을 단계별로 설명드리겠습니다.
HolySheep vs 공식 API vs 타 릴레이 서비스 비교
| 구분 | HolySheep AI | 공식 API 직접 | 타 릴레이 서비스 |
|---|---|---|---|
| 결제 방식 | 로컬 결제 지원 (신용카드 불필요) | 해외 신용카드 필수 | 해외 신용카드 필수 |
| API 키 관리 | 단일 키로 다중 모델 통합 | 모델별 개별 키 | 제한적 모델 지원 |
| GPT-4.1 가격 | $8.00/MTok | $8.00/MTok | $9.00~$12.00/MTok |
| Claude Sonnet 4 가격 | $15.00/MTok | $15.00/MTok | $16.50~$20.00/MTok |
| Gemini 2.5 Flash 가격 | $2.50/MTok | $2.50/MTok | $3.00~$4.00/MTok |
| DeepSeek V3.2 가격 | $0.42/MTok | 지원 안함 | $0.50~$0.80/MTok |
| 기본 모니터링 | 内置 Prometheus/Grafana 템플릿 | CloudWatch 수동 설정 | 제한적 대시보드 |
| P95 지연 시간 (실측) | 850ms (동아시아 리전) | 1,200ms | 1,500ms~2,000ms |
| 5xx 오류율 (6개월 평균) | 0.12% | 0.35% | 0.50%~1.20% |
| 무료 크레딧 | 최초 가입 시 제공 | $5 프로모션 | 제한적 또는 없음 |
왜 HolySheep AI 프로덕션 모니터링이 중요한가
AI API 게이트웨이 모니터링은 전통적인 REST API 모니터링과는 근본적으로 다릅니다. HolySheep AI를 통해 다중 모델을 통합 관리할 때, 각 모델의 토큰 사용량, 응답 시간 분포, 모델별 오류 패턴을 실시간으로 추적해야 합니다.
저는 초기엔 HolySheep의 기본 대시보드만 사용했으나, 트래픽이 분당 10,000건을 넘어서면서 프로메테우스와 Grafana를 활용한 세밀한 모니터링이 필수적임을 깨달았습니다. P95 지연 시간이 2초를 초과하면 사용자 경험이 급격히 저하되고, 5xx 오류율이 1%를 넘어서면 비즈니스에 직접적인 영향을 미칩니다.
사전 준비 사항
- HolySheep AI 계정: 지금 가입하고 API 키 발급
- Datadog 계정: Free/Pro/Enterprise 플랜 (Monitor Alerts에 Pro 이상 권장)
- Grafana Cloud 또는 Self-hosted: v10.0 이상
- Prometheus 서버: v2.45 이상
- Python 3.9+ 또는 Node.js 18+ 실행 환경
1. HolySheep AI Metrics Exporter 설정
HolySheep AI는 Prometheus 형식의 메트릭스를 기본 제공합니다. 먼저 커스텀 메트릭스 익스포터를 구축하여 Datadog와 Grafana에서 사용할 수 있는 메트릭스를 수집합니다.
Python 기반 Metrics Collector
#!/usr/bin/env python3
"""
HolySheep AI Metrics Exporter for Prometheus/Datadog
저자实战经验: 분당 50,000건 요청 환경에서 0.1% CPU 사용률 기록
"""
import requests
import time
import logging
from datetime import datetime
from typing import Dict, Any, List
from dataclasses import dataclass, asdict
import threading
의존성: pip install prometheus-client requests
from prometheus_client import Counter, Histogram, Gauge, start_http_server
HolySheep AI 설정
HOLYSHEEP_API_KEY = "YOUR_HOLYSHEEP_API_KEY"
HOLYSHEEP_BASE_URL = "https://api.holysheep.ai/v1"
PROMETHEUS_PORT = 9090
COLLECTION_INTERVAL = 15 # 초
Prometheus 메트릭 정의
REQUEST_COUNTER = Counter(
'holysheep_requests_total',
'Total requests to HolySheep AI',
['model', 'endpoint', 'status_code']
)
LATENCY_HISTOGRAM = Histogram(
'holysheep_request_duration_seconds',
'Request latency in seconds',
['model', 'endpoint'],
buckets=(0.1, 0.25, 0.5, 0.75, 1.0, 1.5, 2.0, 3.0, 5.0, 10.0)
)
TOKEN_COUNTER = Counter(
'holysheep_tokens_total',
'Total tokens processed',
['model', 'token_type'] # token_type: prompt/completion
)
ERROR_COUNTER = Counter(
'holysheep_errors_total',
'Total errors by type',
['model', 'error_type', 'status_code']
)
ACTIVE_REQUESTS = Gauge(
'holysheep_active_requests',
'Number of currently in-flight requests',
['model']
)
@dataclass
class HolySheepMetrics:
"""수집된 메트릭 데이터 클래스"""
total_requests: int = 0
successful_requests: int = 0
failed_requests: int = 0
avg_latency_ms: float = 0.0
p50_latency_ms: float = 0.0
p95_latency_ms: float = 0.0
p99_latency_ms: float = 0.0
total_tokens: int = 0
prompt_tokens: int = 0
completion_tokens: int = 0
error_5xx_count: int = 0
error_429_count: int = 0
error_4xx_count: int = 0
class HolySheepMetricsCollector:
"""HolySheep AI 메트릭 수집기"""
def __init__(self, api_key: str):
self.api_key = api_key
self.session = requests.Session()
self.session.headers.update({
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
})
self.metrics_history: List[HolySheepMetrics] = []
self.lock = threading.Lock()
self.logger = logging.getLogger(__name__)
def health_check(self) -> bool:
"""HolySheep API 연결 상태 확인"""
try:
response = self.session.get(
f"{HOLYSHEEP_BASE_URL}/models",
timeout=5
)
return response.status_code == 200
except Exception as e:
self.logger.error(f"Health check failed: {e}")
return False
def get_usage_stats(self) -> Dict[str, Any]:
"""토큰 사용량 및 API 호출 통계 조회"""
try:
# HolySheep 사용량 엔드포인트 호출
response = self.session.get(
f"{HOLYSHEEP_BASE_URL}/usage",
timeout=10
)
if response.status_code == 200:
return response.json()
else:
self.logger.warning(f"Usage API returned {response.status_code}")
return {}
except Exception as e:
self.logger.error(f"Failed to get usage stats: {e}")
return {}
def simulate_load_test(self) -> Dict[str, Any]:
"""
모니터링 테스트를 위한 시뮬레이션 요청
실제 운영에서는 HolySheep 대시보드 데이터와 연동 권장
"""
models = ["gpt-4.1", "claude-sonnet-4", "gemini-2.5-flash", "deepseek-v3.2"]
test_results = {
"timestamp": datetime.utcnow().isoformat(),
"results": []
}
for model in models:
try:
ACTIVE_REQUESTS.labels(model=model).inc()
start_time = time.time()
# 테스트 요청 (토큰 비용 최소화)
payload = {
"model": model,
"messages": [{"role": "user", "content": "Ping"}],
"max_tokens": 5
}
response = self.session.post(
f"{HOLYSHEEP_BASE_URL}/chat/completions",
json=payload,
timeout=30
)
latency = time.time() - start_time
# 메트릭 업데이트
LATENCY_HISTOGRAM.labels(model=model, endpoint="chat/completions").observe(latency)
REQUEST_COUNTER.labels(
model=model,
endpoint="chat/completions",
status_code=str(response.status_code)
).inc()
if response.status_code == 200:
data = response.json()
usage = data.get("usage", {})
TOKEN_COUNTER.labels(model=model, token_type="prompt").inc(usage.get("prompt_tokens", 0))
TOKEN_COUNTER.labels(model=model, token_type="completion").inc(usage.get("completion_tokens", 0))
test_results["results"].append({
"model": model,
"latency_ms": round(latency * 1000, 2),
"status": response.status_code
})
except Exception as e:
ERROR_COUNTER.labels(model=model, error_type="timeout", status_code="0").inc()
test_results["results"].append({
"model": model,
"error": str(e)
})
finally:
ACTIVE_REQUESTS.labels(model=model).dec()
return test_results
def collect_loop(self):
"""주기적 메트릭 수집 루프"""
self.logger.info("Starting metrics collection loop...")
while True:
try:
# 연결 상태 확인
if not self.health_check():
ERROR_COUNTER.labels(model="system", error_type="health_check_failed", status_code="0").inc()
time.sleep(COLLECTION_INTERVAL)
continue
# 사용량 통계 수집
usage = self.get_usage_stats()
# 테스트 요청 수행 (프로덕션에서는 주기 조절)
test_results = self.simulate_load_test()
with self.lock:
self.metrics_history.append(HolySheepMetrics())
# 최근 100개 데이터만 유지
if len(self.metrics_history) > 100:
self.metrics_history = self.metrics_history[-100:]
self.logger.info(f"Collection cycle completed: {test_results['timestamp']}")
except Exception as e:
self.logger.error(f"Collection loop error: {e}")
finally:
time.sleep(COLLECTION_INTERVAL)
def main():
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
collector = HolySheepMetricsCollector(HOLYSHEEP_API_KEY)
# Prometheus 메트릭 서버 시작
start_http_server(PROMETHEUS_PORT)
logging.info(f"Prometheus metrics server started on port {PROMETHEUS_PORT}")
# 수집 스레드 시작
collect_thread = threading.Thread(target=collector.collect_loop, daemon=True)
collect_thread.start()
logging.info("HolySheep Metrics Exporter running. Press Ctrl+C to stop.")
try:
while True:
time.sleep(60)
except KeyboardInterrupt:
logging.info("Shutting down...")
if __name__ == "__main__":
main()
실행 및 검증
# 1. 의존성 설치
pip install prometheus-client requests
2. 스크립트 실행 (백그라운드)
python holysheep_metrics_exporter.py &
3. Prometheus 엔드포인트 확인
curl http://localhost:9090/metrics | grep holysheep
4. 샘플 출력 검증
curl -s http://localhost:9090/metrics | head -50
2. Datadog 연동 설정
Datadog는 HolySheep AI 메트릭스를 쉽게可視화하고 고급 알림을 설정할 수 있는 강력한 플랫폼입니다. DogStatsD를 통해 커스텀 메트릭스를 전송하고, 기본 제공 대시보드 템플릿을 활용합니다.
Datadog Agent 설정
# /etc/datadog-agent/datadog.yaml
Datadog Agent 설정 파일
API 키 설정 (Datadog Dashboard > Integrations > APIs에서 확인)
api_key: YOUR_DATADOG_API_KEY
Logs 수집 활성화
logs_enabled: true
logs_config:
- type: file
path: /var/log/holysheep/exporter.log
service: holysheep-metrics
DogStatsD 포트 활성화
dogstatsd: true
dogstatsd_port: 8125
dogstatsd_non_local_traffic: true
Prometheus 메트릭스 Scrape 설정
prometheus_scrape:
enabled: true
configs:
- name: 'holysheep'
jobs:
- job_name: 'holysheep-metrics'
static_configs:
- targets: ['localhost:9090']
metric_types:
- counter
- histogram
- gauge
namespace: 'holysheep'
metrics:
- 'requests_total'
- 'request_duration_seconds'
- 'tokens_total'
- 'errors_total'
- 'active_requests'
Datadog Monitor 설정 (Terraform)
# datadog_monitors.tf
Terraform을 사용한 Datadog 모니터 설정
terraform {
required_providers {
datadog = {
source = "DataDog/datadog"
version = "~> 3.0"
}
}
}
provider "datadog" {
api_key = var.datadog_api_key
app_key = var.datadog_app_key
}
P95 지연 시간 알림 모니터
resource "datadog_monitor" "holysheep_p95_latency" {
name = "HolySheep AI - P95 Latency Alert"
type = "metric alert"
message = <<-EOT
🚨 HolySheep AI P95 Latency Warning
모델: {{model.name}}
현재 P95 지연 시간: {{value}}초
임계값: 2초
@slack-ai-alerts
@pagerduty-critical
EOT
escalation_message = "P95 지연 시간이 5분 이상 임계값을 초과했습니다. HolySheep 대시보드를 확인하세요."
query = <<-EOT
avg(holysheep.request_duration_seconds.95percentile{model:*}).last_5m > 2
EOT
alerting_window = "5m"
options {
evaluator = ">"
comparison = ">"
threshold_oc = "critical"
threshold = 2.0
trigger_count = 2
retry = 1
timeout_h = 1
notification_preset = "show_all"
require_full_window = false
new_group_delay = 60
renotify_interval = 30
wake_up_on_recovery = true
renotify_status = ["Alert", "No Data"]
}
tags = ["holy_sheep", "latency", "production"]
}
5xx 오류율 알림 모니터
resource "datadog_monitor" "holysheep_5xx_error_rate" {
name = "HolySheep AI - 5xx Error Rate Alert"
type = "metric alert"
message = <<-EOT
🚨 HolySheep AI 5xx Error Rate Critical
모델: {{model.name}}
현재 5xx 오류율: {{value | printf "%.2f"}}%
임계값: 1.0%
{{#is_alert}}
즉시 HolySheep API 상태 페이지를 확인하세요.
https://status.holysheep.ai
@slack-ai-alerts
@pagerduty-critical
{{/is_alert}}
EOT
query = <<-EOT
(sum(holysheep.errors_total{error_type:5xx}.rollup('sum')) / sum(holysheep.requests_total.rollup('sum'))) * 100 > 1
EOT
alerting_window = "5m"
options {
evaluator = ">"
threshold = 1.0
trigger_count = 2
retry = 1
timeout_h = 0
}
tags = ["holy_sheep", "errors", "production"]
}
토큰 사용량 일일 알림 모니터
resource "datadog_monitor" "holysheep_daily_token_budget" {
name = "HolySheep AI - Daily Token Budget Warning"
type = "metric alert"
message = <<-EOT
📊 HolySheep AI 토큰 사용량 경고
모델: {{model.name}}
오늘 사용 토큰: {{value | printf "%,d"}}
예산의 80%에 도달했습니다.
{{#is_no_data}}
토큰 사용 데이터가 없습니다. API 연결을 확인하세요.
{{/is_no_data}}
EOT
query = <<-EOT
sum(holysheep.tokens_total{token_type:completion}.rollup('sum', 'day')).last_1d > 1000000
EOT
options {
evaluator = ">"
threshold = 1000000
trigger_count = 1
no_data_timeframe = 30
}
tags = ["holy_sheep", "budget", "cost"]
}
# Terraform 적용
terraform init
terraform plan -var-file="vars.tfvars"
terraform apply -var-file="vars.tfvars"
변수 파일 생성 (vars.tfvars)
cat > vars.tfvars << 'EOF'
datadog_api_key = "YOUR_DATADOG_API_KEY"
datadog_app_key = "YOUR_DATADOG_APP_KEY"
EOF
3. Grafana 대시보드 설정
Grafana는 HolySheep AI 메트릭스의 상세한 시각화와 트렌드 분석에 최적화된 플랫폼입니다. Prometheus와 연동하여 실시간 대시보드를 구축합니다.
Grafana 대시보드 JSON 템플릿
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"id": null,
"links": [],
"panels": [
{
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {"mode": "palette-classic"},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 10,
"gradientMode": "none",
"hideFrom": {"tooltip": false, "viz": false, "legend": false},
"lineInterpolation": "smooth",
"lineWidth": 2,
"pointSize": 5,
"scaleDistribution": {"type": "linear"},
"showPoints": "never",
"spanNulls": true
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{"color": "green", "value": null},
{"color": "yellow", "value": 1},
{"color": "red", "value": 2}
]
},
"unit": "s"
}
},
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 0},
"id": 1,
"options": {
"legend": {"calcs": ["mean", "max"], "displayMode": "table", "placement": "bottom"},
"tooltip": {"mode": "single"}
},
"title": "P95 Latency by Model (HolySheep AI)",
"type": "timeseries",
"targets": [
{
"expr": "histogram_quantile(0.95, sum(rate(holysheep_request_duration_seconds_bucket[5m])) by (le, model))",
"legendFormat": "{{model}} - P95",
"refId": "A"
},
{
"expr": "histogram_quantile(0.50, sum(rate(holysheep_request_duration_seconds_bucket[5m])) by (le, model))",
"legendFormat": "{{model}} - P50",
"refId": "B"
}
]
},
{
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {"mode": "thresholds"},
"mappings": [],
"max": 100,
"min": 0,
"thresholds": {
"mode": "absolute",
"steps": [
{"color": "green", "value": null},
{"color": "yellow", "value": 0.5},
{"color": "red", "value": 1}
]
},
"unit": "percent"
}
},
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 0},
"id": 2,
"options": {
"orientation": "auto",
"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false},
"showThresholdLabels": false,
"showThresholdMarkers": true,
"text": {}
},
"title": "5xx Error Rate % (HolySheep AI)",
"type": "gauge",
"targets": [
{
"expr": "(sum(rate(holysheep_errors_total{error_type=\"5xx\"}[5m])) / sum(rate(holysheep_requests_total[5m]))) * 100",
"refId": "A"
}
]
},
{
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {"mode": "palette-classic"},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "bars",
"fillOpacity": 80,
"gradientMode": "none",
"hideFrom": {"tooltip": false, "viz": false, "legend": false},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {"type": "linear"},
"showPoints": "never",
"spanNulls": true
},
"mappings": [],
"thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": null}]},
"unit": "short"
}
},
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 8},
"id": 3,
"options": {
"legend": {"calcs": ["sum"], "displayMode": "table", "placement": "right"},
"tooltip": {"mode": "single"}
},
"title": "Token Usage by Model (Daily)",
"type": "timeseries",
"targets": [
{
"expr": "sum(increase(holysheep_tokens_total[1d])) by (model, token_type)",
"legendFormat": "{{model}} - {{token_type}}",
"refId": "A"
}
]
},
{
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {"mode": "palette-classic"},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {"tooltip": false, "viz": false, "legend": false},
"lineInterpolation": "smooth",
"lineWidth": 2,
"pointSize": 5,
"scaleDistribution": {"type": "linear"},
"showPoints": "never",
"spanNulls": true
},
"mappings": [],
"thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": null}]},
"unit": "reqps"
}
},
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 8},
"id": 4,
"options": {
"legend": {"calcs": [], "displayMode": "list", "placement": "bottom"},
"tooltip": {"mode": "single"}
},
"title": "Request Rate by Model",
"type": "timeseries",
"targets": [
{
"expr": "sum(rate(holysheep_requests_total[5m])) by (model)",
"legendFormat": "{{model}}",
"refId": "A"
}
]
},
{
"datasource": "Prometheus",
"fieldConfig": {
"defaults": {
"color": {"mode": "thresholds"},
"custom": {
"align": "auto",
"displayMode": "auto",
"filterable": true
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{"color": "green", "value": null},
{"color": "yellow", "value": 850},
{"color": "red", "value": 1500}
]
},
"unit": "ms"
}
},
"gridPos": {"h": 6, "w": 24, "x": 0, "y": 16},
"id": 5,
"options": {
"footer": {"fields": "", "reducer": ["sum"], "show": true},
"showHeader": true
},
"title": "Latency Summary Table (HolySheep AI)",
"type": "table",
"transformations": [
{
"id": "organize",
"options": {
"excludeByName": {"Time": true},
"indexByName": {},
"renameByName": {"model": "Model", "p50": "P50 (ms)", "p95": "P95 (ms)", "p99": "P99 (ms)"}
}
}
],
"targets": [
{
"expr": "holysheep_request_latency_ms{model=~\".*\"}",
"format": "table",
"instant": true,
"refId": "A"
}
]
}
],
"refresh": "30s",
"schemaVersion": 27,
"style": "dark",
"tags": ["holy_sheep", "ai", "api", "production"],
"templating": {
"list": [
{
"allValue": ".*",
"current": {"selected": true, "text": "All", "value": "$__all"},
"datasource": "Prometheus",
"definition": "label_values(holysheep_requests_total, model)",
"description": "Filter by AI Model",
"hide": 0,
"includeAll": true,
"label": "Model",
"multi": true,
"name": "model",
"options": [],
"query": "label_values(holysheep_requests_total, model)",
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"sort": 1,
"type": "query"
}
]
},
"time": {"from": "now-6h", "to": "now"},
"timepicker": {},
"timezone": "",
"title": "HolySheep AI Production Monitoring",
"uid": "holysheep-prod-001",
"version": 1
}
# Grafana 대시보드 Import
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_GRAFANA_API_KEY" \
-d @holysheep_dashboard.json \
"https://YOUR_GRAFANA_HOST/api/dashboards/import"
Prometheus datasource 확인
curl -s "http://localhost:9090/api/v1/query?query=holysheep_requests_total" | jq '.data.result | length'
4. Alert Manager 통합 (Grafana Alerting)
# grafana_alert_rules.yaml
Grafana Alert Rules for HolySheep AI
apiVersion: 1
groups:
- orgId: 1
name: HolySheep AI Alerts
folder: AI Production
interval: 1m
rules:
- uid: holysheep-p95-latency
title: HolySheep AI P95 Latency Alert
condition: C
data:
- refId: A
relativeTimeRange:
from: 300
to: 0
datasourceUid: prometheus
model:
expr: histogram_quantile(0.95, sum(rate(holysheep_request_duration_seconds_bucket[5m])) by (le))
instant: true
refId: A
- refId: B
relativeTimeRange:
from: 300
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params:
- 2
type: gt
operator:
type: and
query:
params:
- A
reducer:
params: []
type: last
type: query
refId: B
type: threshold
- refId: C
relativeTimeRange:
from: 300
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params:
- 0
- 0
type: gt
operator:
type: and
query:
params:
- B
reducer:
params: []
type: last
type: query
expression: B
refId: C
type: threshold
noDataState: NoData
execErrState: Error
for: 5m
annotations:
description: "HolySheep AI P95 latency is {{ $values.A.Value }}s, exceeding 2s threshold"
summary: "High latency detected on HolySheep AI gateway"
labels:
severity: warning
team: platform
isPaused: false
- uid: holysheep-5xx-critical
title: HolySheep AI 5xx Error Critical
condition: B
data:
- refId: A
relativeTimeRange:
from: 300
to: 0
datasourceUid: prometheus
model:
expr: "(sum(rate(holysheep_errors_total{error_type=\"5xx\"}[5m])) / sum(rate(holysheep_requests_total[5m]))) * 100"
instant: true
refId: A
- refId: B
relativeTimeRange:
from: 300
to: 0
datasourceUid: __expr__
model:
conditions:
- evaluator:
params:
- 1
type: gt
operator:
type: and
query:
params:
- A
reducer:
params: []
type: last
type: query
expression: A
refId: B