Almacenamiento a largo plazo de metricas Prometheus con alta disponibilidad y query global
Thanos como capa de almacenamiento a largo plazo y query global sobre metricas Prometheus del pipeline KYC. Permite retener metricas historicas mas alla de la retencion local de Prometheus, ejecutar queries federadas entre multiples instancias y analizar tendencias del sistema de verificacion a lo largo de meses para planificacion de capacidad y deteccion de regresiones.
Usa esta skill cuando necesites configurar almacenamiento duradero de metricas, consultar datos historicos del pipeline KYC o federar metricas entre multiples clusters de Prometheus. Pertenece al observability_agent y se aplica cuando la retencion local de Prometheus es insuficiente para analisis de tendencias o cuando se requiere alta disponibilidad en la capa de metricas.
Desplegar Thanos Sidecar junto a cada instancia de Prometheus:
# k8s/thanos-sidecar.yml
containers:
- name: prometheus
image: prom/prometheus:v2.52.0
args:
- '--storage.tsdb.min-block-duration=2h'
- '--storage.tsdb.max-block-duration=2h'
- '--storage.tsdb.retention.time=6h'
- name: thanos-sidecar
image: quay.io/thanos/thanos:v0.35.0
args:
- sidecar
- '--tsdb.path=/prometheus'
- '--prometheus.url=http://localhost:9090'
- '--objstore.config-file=/etc/thanos/objstore.yml'
volumeMounts:
- name: prometheus-data
mountPath: /prometheus
- name: thanos-config
mountPath: /etc/thanos
Configurar el almacenamiento de objetos usando MinIO (ya disponible en el stack KYC):
# objstore.yml
type: S3
config:
bucket: thanos-metrics
endpoint: minio.storage:9000
access_key: ${MINIO_ACCESS_KEY}
secret_key: ${MINIO_SECRET_KEY}
insecure: true
Desplegar Thanos Store Gateway para servir datos historicos desde el object storage:
apiVersion: apps/v1
kind: Deployment
metadata:
name: thanos-store
namespace: monitoring
spec:
replicas: 2
template:
spec:
containers:
- name: thanos-store
image: quay.io/thanos/thanos:v0.35.0
args:
- store
- '--objstore.config-file=/etc/thanos/objstore.yml'
- '--index-cache-size=500MB'
- '--chunk-pool-size=2GB'
ports:
- containerPort: 10901
name: grpc
Desplegar Thanos Querier como punto unico de consulta:
apiVersion: apps/v1
kind: Deployment
metadata:
name: thanos-query
namespace: monitoring
spec:
replicas: 2
template:
spec:
containers:
- name: thanos-query
image: quay.io/thanos/thanos:v0.35.0
args:
- query
- '--store=dnssrv+_grpc._tcp.thanos-sidecar.monitoring.svc'
- '--store=dnssrv+_grpc._tcp.thanos-store.monitoring.svc'
- '--query.auto-downsampling'
ports:
- containerPort: 9090
name: http
Configurar Thanos Compactor para downsampling y compactacion de bloques historicos:
containers:
- name: thanos-compact
image: quay.io/thanos/thanos:v0.35.0
args:
- compact
- '--objstore.config-file=/etc/thanos/objstore.yml'
- '--retention.resolution-raw=30d'
- '--retention.resolution-5m=180d'
- '--retention.resolution-1h=365d'
- '--wait'
- '--compact.concurrency=2'
Configurar Grafana para usar Thanos Querier como datasource:
datasources:
- name: Thanos
type: prometheus
url: http://thanos-query.monitoring:9090
access: proxy
jsonData:
timeInterval: '15s'
Crear queries de ejemplo para analisis historico del pipeline KYC:
# Tendencia mensual de tasa de verificacion exitosa
avg_over_time(
(rate(kyc_verifications_total{status="verified"}[1h]) /
rate(kyc_verifications_total[1h]))[30d:1h]
)
# Evolucion trimestral de latencia p95 por modulo
histogram_quantile(0.95,
avg_over_time(rate(kyc_verification_duration_seconds_bucket[1h])[90d:1d])
)
Validar la replicacion y disponibilidad de datos con queries de diagnostico:
thanos tools bucket verify --objstore.config-file=objstore.yml
thanos tools bucket ls --objstore.config-file=objstore.yml
--query.auto-downsampling para que automaticamente use resoluciones mas bajas en queries de rango largo, evitando timeouts al consultar meses de datos del pipeline KYC.