Logo GCP con Eduardo

GCP con Eduardo

Descarga el código de la lección

Uso de Gemini y RAG para Diagnosticar y Resolver Incidentes en DevOps (Vertex AI)
✦ Guía Técnica & Arquitectura

Uso de Gemini y RAG para Diagnosticar y Resolver Incidentes en DevOps (Vertex AI)

Un incidente SRE rara vez se resuelve por falta de datos. El problema suele ser que los datos están fragmentados entre logs, métricas, trazas, runbooks, tickets, postmortems y conocimiento tribal. La arquitectura correcta consiste en convertir ese contexto operativo en evidencia recuperable y permitir que Gemini razone sobre ella sin confundir generación con verdad.

En esta guía de nivel Senior / Staff / Architect diseñaremos un asistente SRE basado en Google Cloud capaz de recuperar contexto con RAG, analizar señales de observabilidad y devolver hipótesis, evidencias, nivel de confianza y siguientes pasos de investigación.

Lo que aprenderás

Diseñar un pipeline RAG orientado a incidentes y no a un chatbot genérico.
Correlacionar logs, métricas, trazas y conocimiento operativo.
Controlar coste, latencia, grounding y calidad de recuperación.
Separar diagnóstico asistido de remediación automática segura.
Gemini Vertex AI RAG Engine Cloud Logging Cloud Monitoring Cloud Storage Python SRE DevOps

1. El problema arquitectónico: un LLM no conoce tu sistema

Un modelo generativo puede explicar patrones de fallo conocidos, pero un incidente real contiene información específica del entorno: qué versión se desplegó, qué servicio está degradado, qué dependencia cambió, qué errores aparecieron primero y qué procedimiento de recuperación está aprobado por la organización.

RAG cambia el problema. En lugar de pedir a Gemini que “adivine” la causa raíz, la aplicación primero recupera evidencia relevante y después solicita al modelo que construya una hipótesis explícitamente apoyada en esa evidencia. Google describe precisamente RAG como un patrón de recuperación, enriquecimiento del contexto y generación.

01 / SIGNAL

Observabilidad

Logs, métricas, trazas, alertas y eventos constituyen las señales dinámicas del incidente.

02 / KNOWLEDGE

RAG

Runbooks, postmortems, arquitectura y documentación aportan conocimiento operacional persistente.

03 / REASONING

Gemini

El modelo sintetiza evidencia, genera hipótesis y propone una secuencia de investigación verificable.

Google Cloud ofrece Vertex AI RAG Engine como runtime gestionado para arquitecturas RAG y permite integrarlo como herramienta de recuperación con Gemini. La implementación debe evaluarse según requisitos de datos, retrieval, latencia, gobernanza y coste.

2. Matriz de decisión: ¿dónde debe vivir cada pieza?

El error arquitectónico más habitual es tratar “RAG” como sinónimo de una única base vectorial. En realidad, el sistema tiene varias responsabilidades: observabilidad, recuperación de conocimiento, generación, autorización y ejecución.

Patrón / Servicio Función Latencia objetivo Consistencia Coste relativo Cuándo usarlo
Cloud Logging / Observability Señales operativas y evidencia temporal. Baja–media Datos operativos recientes Variable por volumen Investigar qué está ocurriendo ahora.
RAG Engine Recuperación de conocimiento empresarial. Media Depende de la indexación Media Runbooks, documentos, incidentes y conocimiento técnico.
Vector Search / motor de búsqueda Retrieval especializado y controlado. Baja–media Configurable según arquitectura Media–alta Escenarios con requisitos avanzados de retrieval.
Gemini Razonamiento y generación. Media No aplica como almacén de verdad Por tokens / modelo / uso Sintetizar evidencia y producir diagnóstico.
Cloud Run / servicio de orquestación Control de flujo, políticas y herramientas. Baja–media Depende de los sistemas llamados Baja–media Implementar el backend del asistente SRE.
Incident Command / aprobación humana Gobernar acciones de alto impacto. Humana Explícita Bajo Remediaciones destructivas o de riesgo elevado.
Principio Staff: no conviertas el modelo en el sistema de registro. El modelo interpreta evidencia; la fuente de verdad continúa siendo la plataforma operacional y los sistemas empresariales.

3. Arquitectura recomendada para un asistente SRE con Gemini

Una arquitectura robusta debe separar cuatro planos: ingestión de conocimiento, observabilidad, razonamiento y ejecución. Esa separación permite evolucionar cada componente sin transformar el asistente en un sistema monolítico difícil de gobernar.

PLANO A

Knowledge Plane

Los runbooks, postmortems, ADRs, documentación de servicios y procedimientos aprobados se incorporan al sistema RAG.

PLANO B

Evidence Plane

Las señales actuales proceden de observabilidad. El asistente debe recuperar sólo las ventanas temporales necesarias para evitar inundar el contexto.

PLANO C

Reasoning Plane

Gemini recibe el incidente, evidencia recuperada y reglas de diagnóstico. La salida debe ser estructurada, no simplemente texto libre.

PLANO D

Action Plane

Las acciones se implementan como herramientas explícitas, con autorización, validación, idempotencia, auditoría y límites de blast radius.

PLANO E

Governance

IAM, service accounts, secretos, trazabilidad, redacción de datos sensibles y políticas de retención deben estar fuera del prompt.

PLANO F

Evaluation

Mide retrieval precision, groundedness, exactitud de clasificación, falsas recomendaciones, latencia y coste por incidente.

4. Antipatrón crítico: “meter todos los logs en el prompt”

Este patrón parece sencillo durante un PoC y se vuelve caro y poco fiable en producción. Un incidente puede generar miles de líneas repetitivas, stack traces duplicados y ruido operacional. Más contexto no implica necesariamente mejor diagnóstico.

⚠ ERROR DE PRODUCCIÓN: Contexto sin selección

Enviar un dump completo de logs a Gemini aumenta tokens, latencia y coste, mientras que reduce la relación señal/ruido. Además, puede introducir información irrelevante o potencialmente sensible en el contexto del modelo.

La solución es construir una capa de evidence engineering: normalizar eventos, filtrar por servicio y ventana temporal, deduplicar errores, agrupar fingerprints, correlacionar trazas y recuperar únicamente los fragmentos relevantes.

Para conocimiento persistente, RAG debe recuperar documentos relevantes. Para señales dinámicas, la aplicación debe consultar las fuentes de observabilidad de forma controlada. No todo dato operacional debe convertirse en embedding.

5. Implementación práctica: diagnóstico estructurado con Gemini + RAG

El siguiente patrón utiliza el SDK de Google Gen AI para configurar Gemini con una herramienta de recuperación RAG. La salida conceptual del asistente debe contener hipótesis, evidencias, confianza y próximos pasos, en lugar de una explicación narrativa sin trazabilidad.

from google import genai
from google.genai import types as genai_types


PROJECT_ID = "my-production-project"
LOCATION = "us-central1"
MODEL = "gemini-2.5-pro"

RAG_CORPUS = (
    f"projects/{PROJECT_ID}/locations/{LOCATION}"
    "/ragCorpora/my-sre-knowledge"
)


def build_rag_tool() -> genai_types.Tool:
    """
    Recupera conocimiento operativo:
    runbooks, postmortems, ADRs y documentación.
    """
    return genai_types.Tool(
        retrieval=genai_types.Retrieval(
            vertex_rag_store=genai_types.VertexRagStore(
                rag_resources=[
                    genai_types.VertexRagStoreRagResource(
                        rag_corpus=RAG_CORPUS
                    )
                ],
                rag_retrieval_config=genai_types.RagRetrievalConfig(
                    top_k=8,
                    filter=genai_types.RagRetrievalConfigFilter(
                        vector_distance_threshold=0.5
                    ),
                ),
            )
        )
    )


def diagnose_incident(
    incident: str,
    evidence: str,
) -> str:

    client = genai.Client(
        enterprise=True,
        project=PROJECT_ID,
        location=LOCATION,
    )

    prompt = f"""
You are a senior SRE incident analyst.

Your job is to reason only from the supplied incident
and retrieved operational knowledge.

INCIDENT:
{incident}

CURRENT EVIDENCE:
{evidence}

Return:

1. Most likely hypothesis
2. Supporting evidence
3. Contradicting evidence
4. Confidence from 0 to 1
5. Additional evidence required
6. Safe next investigation steps
7. Whether human approval is required

Never invent metrics, logs, deployments or system state.
If evidence is insufficient, explicitly say so.
"""

    response = client.models.generate_content(
        model=MODEL,
        contents=prompt,
        config=genai_types.GenerateContentConfig(
            tools=[build_rag_tool()],
            temperature=0,
        ),
    )

    return response.text


if __name__ == "__main__":
    result = diagnose_incident(
        incident=(
            "checkout-api latency increased above SLO "
            "after the latest deployment."
        ),
        evidence=(
            "p95 latency increased from 280ms to 1.8s. "
            "HTTP 5xx remained stable. "
            "Database CPU increased by 15%."
        ),
    )

    print(result)

Nota arquitectónica: el ejemplo ilustra el patrón de integración y no debe interpretarse como una implementación completa de producción. En un sistema real deben añadirse autenticación, gestión de errores, timeouts, observabilidad, límites de concurrencia, control de costes, evaluación y políticas de seguridad.

La documentación oficial de Google Cloud muestra el uso de VertexRagStore, configuración de top_k y filtros de distancia para recuperar contexto RAG durante una generación con Gemini. :contentReference[oaicite:0]{index=0}

6. El salto de chatbot a agente SRE

Un asistente que sólo genera texto tiene utilidad limitada. El siguiente nivel consiste en darle acceso controlado a herramientas capaces de consultar sistemas reales.

Gemini puede utilizar function calling para generar una llamada estructurada que una aplicación ejecuta contra una función o API externa. El modelo propone el nombre y argumentos; la aplicación mantiene el control de la ejecución. Esto es especialmente importante en operaciones SRE.

def get_service_health(service_name: str) -> dict:
    """
    Consulta un sistema interno de observabilidad.

    Importante:
    - El modelo NO ejecuta directamente esta función.
    - La aplicación valida autorización y parámetros.
    - El resultado se devuelve al modelo como evidencia.
    """
    return {
        "service": service_name,
        "status": "degraded",
        "p95_ms": 1840,
        "error_rate": 0.021,
        "deployment": "checkout-api:v2026.08.28.3",
    }


TOOLS = [
    get_service_health,
    # query_recent_logs,
    # query_trace,
    # get_recent_deployments,
    # get_runbook,
]


def investigate(service_name: str):
    client = genai.Client(
        enterprise=True,
        project=PROJECT_ID,
        location=LOCATION,
    )

    response = client.models.generate_content(
        model="gemini-2.5-flash",
        contents=(
            f"Investigate the health of {service_name}. "
            "Use tools only when evidence is required."
        ),
        config=genai_types.GenerateContentConfig(
            tools=TOOLS,
            temperature=0,
        ),
    )

    return response

La separación fundamental es ésta: Gemini decide qué información necesita; la plataforma decide si está autorizado a obtenerla y ejecutar una acción.

Regla de oro para remediación

No permitas que un modelo tenga acceso directo a operaciones como borrar recursos, modificar IAM, escalar indiscriminadamente una infraestructura o desplegar código sin una capa de policy enforcement.

Las herramientas deben ser pequeñas, explícitas e idempotentes. Una herramienta como restart_service() puede ser demasiado poderosa. Un diseño más seguro puede exigir primero get_service_health(), después create_remediation_plan() y, finalmente, una operación aprobada por un sistema de control.

Google Cloud documenta function calling como un mecanismo mediante el cual el modelo genera datos estructurados indicando la función y sus argumentos, mientras que el sistema externo ejecuta la función y devuelve el resultado al modelo. :contentReference[oaicite:1]{index=1}

7. Patrones de diseño para producción

La diferencia entre una demo convincente y una plataforma empresarial está en las fronteras de responsabilidad. El modelo no debe asumir funciones que corresponden a la plataforma.

PATRÓN 01

Evidence First

Antes de generar una hipótesis, recupera evidencia. La respuesta debe distinguir hechos observados de inferencias.

PATRÓN 02

Bounded Context

Cada servicio debe tener documentación, ownership, dependencias, SLOs y runbooks recuperables con metadatos.

PATRÓN 03

Structured Output

Obliga al diagnóstico a seguir un esquema estable para poder automatizar evaluación, almacenamiento y UI.

PATRÓN 04

Human-in-the-loop

Las acciones con blast radius significativo requieren aprobación explícita.

PATRÓN 05

Least Privilege

Cada herramienta debe utilizar una identidad con los permisos mínimos necesarios para su función.

PATRÓN 06

Evaluation Loop

Conserva incidentes históricos anonimizados y evalúa retrieval, grounding, diagnóstico, coste y latencia continuamente.

8. FinOps: controlar el coste del diagnóstico asistido por IA

El coste no se controla simplemente eligiendo un modelo más barato. El principal multiplicador puede ser la cantidad de contexto enviado repetidamente y la frecuencia con la que el agente consulta herramientas.

COSTE A

Retrieval

Ajusta top_k, filtros y chunking. Recuperar 30 documentos cuando cinco son suficientes degrada coste y señal.

COSTE B

Contexto

Resume evidencia repetitiva antes de enviarla al modelo. No conviertas cada línea de log en tokens de generación.

COSTE C

Routing

Usa modelos más capaces sólo cuando el nivel de incertidumbre o complejidad lo justifique.

Métrica FinOps recomendada: coste por incidente resuelto

El KPI relevante no debería ser únicamente “tokens consumidos”. Mide el coste total del flujo frente al resultado operacional: tiempo hasta diagnóstico, porcentaje de incidentes correctamente clasificados, número de consultas realizadas, intervención humana y reducción del MTTR.

Un sistema ligeramente más caro por inferencia puede ser económicamente superior si reduce significativamente el tiempo de investigación de incidentes críticos.

9. Gobernanza: RAG no sustituye IAM

Una base de conocimiento puede contener información operacional sensible. Un asistente SRE debe respetar el mismo modelo de seguridad que cualquier aplicación empresarial.

Clasifica las fuentes

Separa documentación pública, interna, confidencial y material que no debe exponerse al modelo.

Filtra por contexto

Usa metadatos como servicio, entorno, versión, región y ownership para evitar recuperar información de sistemas no relacionados.

Minimiza identidades

El backend y cada herramienta deben utilizar service accounts con permisos mínimos.

Audita decisiones

Registra prompt lógico, documentos recuperados, herramientas utilizadas, resultado, aprobaciones y acción ejecutada.

10. Checklist de implementación empresarial

Una secuencia práctica para evolucionar desde un PoC hacia una plataforma SRE gobernada.

Define el caso de uso

Empieza por una familia de incidentes medible: errores de despliegue, degradación de latencia, fallos de dependencia o problemas de configuración.

Construye el corpus

Reúne runbooks, postmortems, documentación de arquitectura, ADRs y procedimientos aprobados. Elimina documentación obsoleta.

Diseña retrieval

Evalúa chunking, metadatos, top-k, filtros, relevancia y estrategia de ranking con incidentes históricos.

Añade evidencia dinámica

Integra consultas controladas sobre logs, métricas, trazas y despliegues. Limita ventanas temporales y volumen de resultados.

Estructura la respuesta

Exige hipótesis, evidencias, contradicciones, confianza, información faltante y próximos pasos. Evita diagnósticos puramente narrativos.

Evalúa antes de automatizar

Ejecuta el asistente contra un conjunto histórico de incidentes y compara sus conclusiones con los postmortems reales.

Introduce herramientas

Añade function calling para consultas operativas. Empieza con herramientas read-only.

Automatiza con límites

Sólo después de demostrar precisión y seguridad, habilita acciones de remediación, con aprobación y rollback.

11. Observabilidad de la propia IA

Un error frecuente es observar la aplicación pero no observar al asistente. Para operar correctamente una arquitectura Gemini + RAG hay que medir también el comportamiento del sistema de IA.

RETRIEVAL

Recall / Precision

¿Los documentos recuperados contienen realmente la información necesaria para resolver el incidente?

GENERATION

Grounding

¿Las afirmaciones importantes pueden relacionarse con evidencia recuperada?

OPERATIONS

MTTR

¿El asistente realmente reduce el tiempo necesario para llegar a una decisión operacional?

Google Cloud Observability integra monitorización, logging y tracing; además, las capacidades actuales de análisis de observabilidad permiten correlacionar logs y trazas para investigaciones más profundas. Esto convierte la observabilidad en una fuente especialmente valiosa para alimentar el plano de evidencia del asistente. :contentReference[oaicite:2]{index=2}

12. FAQ: Gemini, RAG y SRE

¿Por qué combinar Gemini con RAG para diagnosticar incidentes DevOps?

Porque Gemini aporta capacidades de razonamiento y generación, mientras que RAG permite introducir conocimiento específico y actualizado de la organización. Los runbooks, postmortems, documentación y procedimientos pueden convertirse en contexto recuperable. La calidad del sistema dependerá tanto del modelo como de la calidad del retrieval.

¿Qué información debería entrar en el contexto RAG de un asistente SRE?

Principalmente conocimiento relativamente estable: runbooks, documentación de servicios, arquitectura, ADRs, incidentes históricos, errores conocidos y procedimientos de recuperación. Los logs y métricas altamente dinámicos deberían consultarse como evidencia operacional, no necesariamente almacenarse todos como documentos RAG.

¿Debe un asistente Gemini ejecutar automáticamente acciones de remediación?

No como primera etapa. La arquitectura recomendada separa diagnóstico y ejecución. Las acciones deben pasar por autorización, validación de parámetros, permisos mínimos, auditoría y, para operaciones de alto riesgo, aprobación humana. Function calling permite integrar herramientas, pero no elimina la responsabilidad del sistema que las ejecuta.

Sobre el Autor: Eduardo Martínez Agrelo

AI & Data Architect

Eduardo Martínez Agrelo trabaja en arquitectura de datos e inteligencia artificial, con especial foco en transformar capacidades de IA generativa en soluciones técnicas reproducibles, gobernadas y orientadas a producción.

Su enfoque combina arquitectura cloud, plataformas de datos, ingeniería de software, observabilidad, automatización y diseño de sistemas de IA para resolver problemas empresariales con criterios de escalabilidad, seguridad y eficiencia.

© 2026 Eduardo Martínez Agrelo · AI & Data Architect · Guía técnica sobre Gemini, RAG, Vertex AI, DevOps y SRE.