- F0 blindaje: Redis/Celery, pg_hba sin trust LAN, secretos a env 600, backups, webhook auth, jobs muertos - F1 caja: bugs POS, reembolsos al corte, apartados, CFDI, topes de descuento en cotizacion/apartado - F2/F7 IA de catalogo: autocategorizacion, dedup de SKUs con embeddings, OCR de facturas, descripciones, claves SAT, limpieza de fitment - F3 IA en el flujo: vision Yonke, preguntas MeLi, venta cruzada, anomalias, sinonimos, busqueda semantica (rerank/embeddings) - F4/F8 escala y cartera: /metrics+Prometheus+Grafana, pool, score de credito, churn, metricas multi-tenant - Nexus Yonke (M1-M6): modelo de datos 1-de-1, alta por donador, vitrina publica, MeLi usado, consignacion, garantia por dias, reportes, etiquetas - Marketplace B2B entre yonkes (catalogo + pedidos cross-tenant) - Seguridad: auth en /api/admin/* (35 endpoints), alertas por tenant - Migraciones v4.27/v4.28; timers expire-demos y rollup-metrics
150 lines
4.1 KiB
JSON
150 lines
4.1 KiB
JSON
{
|
|
"uid": "nexus-app",
|
|
"title": "Nexus — Application",
|
|
"tags": ["app", "flask", "nexus"],
|
|
"timezone": "browser",
|
|
"schemaVersion": 36,
|
|
"refresh": "30s",
|
|
"time": {
|
|
"from": "now-1h",
|
|
"to": "now"
|
|
},
|
|
"templating": {
|
|
"list": [
|
|
{
|
|
"name": "datasource",
|
|
"type": "datasource",
|
|
"query": "prometheus",
|
|
"current": {
|
|
"selected": false,
|
|
"text": "Prometheus",
|
|
"value": "Prometheus"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"panels": [
|
|
{
|
|
"id": 1,
|
|
"title": "Request Rate (by app / status)",
|
|
"type": "timeseries",
|
|
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 0},
|
|
"datasource": {"type": "prometheus", "uid": "${datasource}"},
|
|
"targets": [
|
|
{
|
|
"datasource": {"type": "prometheus", "uid": "${datasource}"},
|
|
"expr": "sum by (app, status) (rate(nexus_http_requests_total[5m]))",
|
|
"legendFormat": "{{app}} {{status}}",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {"drawStyle": "line", "lineWidth": 2, "fillOpacity": 10},
|
|
"unit": "reqps",
|
|
"min": 0
|
|
},
|
|
"overrides": []
|
|
}
|
|
},
|
|
{
|
|
"id": 2,
|
|
"title": "Response Time p95 / p99",
|
|
"type": "timeseries",
|
|
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 0},
|
|
"datasource": {"type": "prometheus", "uid": "${datasource}"},
|
|
"targets": [
|
|
{
|
|
"datasource": {"type": "prometheus", "uid": "${datasource}"},
|
|
"expr": "histogram_quantile(0.95, sum by (le) (rate(nexus_http_request_duration_seconds_bucket[5m])))",
|
|
"legendFormat": "p95",
|
|
"refId": "A"
|
|
},
|
|
{
|
|
"datasource": {"type": "prometheus", "uid": "${datasource}"},
|
|
"expr": "histogram_quantile(0.99, sum by (le) (rate(nexus_http_request_duration_seconds_bucket[5m])))",
|
|
"legendFormat": "p99",
|
|
"refId": "B"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {"drawStyle": "line", "lineWidth": 2, "fillOpacity": 10},
|
|
"unit": "s",
|
|
"min": 0
|
|
},
|
|
"overrides": []
|
|
}
|
|
},
|
|
{
|
|
"id": 3,
|
|
"title": "In-flight Requests",
|
|
"type": "timeseries",
|
|
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 8},
|
|
"datasource": {"type": "prometheus", "uid": "${datasource}"},
|
|
"targets": [
|
|
{
|
|
"datasource": {"type": "prometheus", "uid": "${datasource}"},
|
|
"expr": "sum by (app) (nexus_http_requests_in_flight)",
|
|
"legendFormat": "{{app}}",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {"drawStyle": "line", "lineWidth": 2, "fillOpacity": 10},
|
|
"unit": "short",
|
|
"min": 0
|
|
},
|
|
"overrides": []
|
|
}
|
|
},
|
|
{
|
|
"id": 4,
|
|
"title": "5xx Errors",
|
|
"type": "timeseries",
|
|
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 8},
|
|
"datasource": {"type": "prometheus", "uid": "${datasource}"},
|
|
"targets": [
|
|
{
|
|
"datasource": {"type": "prometheus", "uid": "${datasource}"},
|
|
"expr": "sum by (app) (rate(nexus_http_requests_total{status=\"5xx\"}[5m]))",
|
|
"legendFormat": "{{app}} 5xx/s",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {"drawStyle": "line", "lineWidth": 2, "fillOpacity": 10},
|
|
"unit": "reqps",
|
|
"min": 0
|
|
},
|
|
"overrides": []
|
|
}
|
|
},
|
|
{
|
|
"id": 5,
|
|
"title": "Master DB Connections",
|
|
"type": "timeseries",
|
|
"gridPos": {"h": 8, "w": 24, "x": 0, "y": 16},
|
|
"datasource": {"type": "prometheus", "uid": "${datasource}"},
|
|
"targets": [
|
|
{
|
|
"datasource": {"type": "prometheus", "uid": "${datasource}"},
|
|
"expr": "nexus_db_connections",
|
|
"legendFormat": "{{app}} ({{database}})",
|
|
"refId": "A"
|
|
}
|
|
],
|
|
"fieldConfig": {
|
|
"defaults": {
|
|
"custom": {"drawStyle": "line", "lineWidth": 2, "fillOpacity": 10},
|
|
"unit": "short",
|
|
"min": 0
|
|
},
|
|
"overrides": []
|
|
}
|
|
}
|
|
]
|
|
}
|