Ir al contenido
← workspace Cosmos

Setup de monitoreo Cosmos

NoSqlStudio lee métricas Cosmos a través de data sources en tiers. Esta página es la guía paso a paso para conectar cada tier. Elija el camino que combina con su budget y necesidades de observabilidad.

Matriz de tiers

TierCostoImpacto en producciónDesbloquea
TIER C · ALWAYS-ON
Local samples
US$ 0NingunoRU Budget (solo app), Throttling RCA (429 de headers), heat Hot Partitions, Query Cost — todo de los response headers capturados. Solo ve tráfico de NoSqlStudio.
TIER B · FREE
Azure Monitor
US$ 0Ninguno — lee métricas de plataforma del ARM, nunca toca data plane del Cosmos.RU Budget agregado, Throughput Optimizer, conteo de Throttling, Hot Partitions per PartitionKeyRangeId — cubre tráfico de producción.
TIER A · PAID
Log Analytics
~US$ 2.50 / GB ingest + retentionDocumentado como mínimo por Microsoft; stream de ingestion corre continuamente.KQL completo per-shape en el app, pane Diagnostic Logs, Throttling RCA per-shape, recomendaciones de composite-index de traces de workload real.
Path 1

FREE — Azure Monitor + Local samples

Tiempo de setup: ~10 min. Costo: US$ 0/mes. Impacto: cero en producción. Cubre RU Budget, Throughput Optimizer, conteo de Throttling, Hot Partitions (aggregate), Query Cost (in-app).

Parte A — portal Azure / CLI

1. Cree un Service Principal

Portal: Azure Active Directory → App registrations → New registration → nombre nosqlstudio-cosmos-reader. Copie Application (client) ID, Directory (tenant) ID, y cree un Client Secret en Certificates & secrets.

Equivalente CLI:

az ad sp create-for-rbac \
  --name nosqlstudio-cosmos-reader \
  --role "Monitoring Reader" \
  --scopes /subscriptions/<SUB_ID>/resourceGroups/<RG_NAME>

2. Asigne el role Monitoring Reader

Alcance mínimo: el resource group que contiene la cuenta Cosmos. Si quiere cubrir múltiples cuentas Cosmos en RGs diferentes, asigne a nivel de subscription.

az role assignment create \
  --assignee <APP_ID> \
  --role "Monitoring Reader" \
  --scope /subscriptions/<SUB_ID>/resourceGroups/<RG_NAME>

3. Copie el Resource ID del Cosmos

Formato: /subscriptions/<sub>/resourceGroups/<rg>/providers/Microsoft.DocumentDB/databaseAccounts/<account>

az cosmosdb show -n <ACCOUNT_NAME> -g <RG_NAME> --query id -o tsv

Parte B — NoSqlStudio

  1. Conéctese a su cuenta Cosmos en NoSqlStudio.
  2. Abra Cosmos Optimizer (Ctrl+Alt+Shift+Y o menú Tools).
  3. Vaya al tab Cloud Credentials.
  4. En TIER B · FREE — Azure Monitor, complete: Resource ID, Tenant ID, Client ID, Client secret.
  5. Deje Workspace ID (GUID) en la sección TIER A vacío — está optando por no usar el tier pagado.
  6. Haga clic en Save credentials (encrypted).

Parte C — Verifique

Vuelva al tab RU Budget. El banner de source-mode debe mostrar un chip verde Azure Monitor + el texto aggregate only — no per-shape breakdown. Haga clic en Refresh — números pueblan en 1-2 minutos (Azure puede tardar unos minutos para que métricas frescas estén disponibles).

Path 2

PAID — agregue Log Analytics

Tiempo de setup: ~15 min adicionales. Costo: ~US$ 2.50/GB ingerido + ~US$ 0.10/GB-mes de retención. Solo haga esto si necesita granularidad per-shape — para 90% de las investigaciones, Azure Monitor solo es suficiente.

Parte A — Cree un workspace Log Analytics

az monitor log-analytics workspace create \
  -g <RG_NAME> -n nosqlstudio-cosmos-logs \
  --retention-time 30 \
  --location <REGION>

Parte B — Ponga cost guardrails ANTES de activar logs

  • Retención corta: 30 días mínimo en la mayoría de los tiers.
  • Cap diario (ej.: 1 GB/día): detiene ingestion si excede — datos existentes aún queryables.
  • Alerta de budget en la subscription (ej.: US$ 50/mes con alerta en 80%).
az monitor log-analytics workspace update \
  -g <RG_NAME> -n nosqlstudio-cosmos-logs \
  --quota 1

Parte C — Active Diagnostic Settings en la cuenta Cosmos

Portal: Cosmos DB → Monitoring → Diagnostic settings → Add. Marque solamente lo que realmente necesita:

  • MongoRequests — esencial, lo que el pane KQL in-app consulta.
  • DataPlaneRequests — opcional, duplica info del MongoRequests para la Mongo API.
  • ControlPlaneRequests — salte; solo operaciones admin.
  • QueryRuntimeStatistics, PartitionKeyStatistics — más caros, salte a menos que explícitamente necesario.

Destino: tipo de tabla Resource specific (más barato que Azure Diagnostics legacy).

az monitor diagnostic-settings create \
  --name to-loganalytics \
  --resource $(az cosmosdb show -n <ACCOUNT> -g <RG> --query id -o tsv) \
  --workspace $(az monitor log-analytics workspace show -g <RG> -n nosqlstudio-cosmos-logs --query id -o tsv) \
  --logs '[{"category":"MongoRequests","enabled":true}]' \
  --export-to-resource-specific true

Parte D — Conceda Log Analytics Reader al Service Principal

az role assignment create \
  --assignee <APP_ID> \
  --role "Log Analytics Reader" \
  --scope $(az monitor log-analytics workspace show -g <RG> -n nosqlstudio-cosmos-logs --query id -o tsv)

Parte E — Copie el Workspace ID (GUID)

Importante: no es el Resource ID — es un GUID separado. Encontrado en el Portal en Log Analytics workspace → Overview → Workspace ID.

az monitor log-analytics workspace show \
  -g <RG_NAME> -n nosqlstudio-cosmos-logs \
  --query customerId -o tsv

Parte F — NoSqlStudio

  1. Tab Cloud Credentials → sección TIER A · PAID — Log Analytics.
  2. Pegue el GUID en Workspace ID (GUID).
  3. Haga clic en Save.

Parte G — Verifique

Pane Diagnostic Logs (KQL): banner ahora muestra Log Analytics — full granularity. El botón Run in app se desbloquea. Tome el template "Slow queries — last 1 hour", haga clic en Run. Resultados renderizan en la tabla abajo.

Tabla de decisión rápida

EscenarioRecomendación
Cluster de dev, ambiente de pruebaPath 1 (FREE). Salte Log Analytics.
Cluster de producción, saludable — quiere observabilidad básicaPath 1 (FREE).
Incident activo — necesita saber CUÁL query spiked a las 14:32Path 1 + 2 temporalmente. Desactive el Diagnostic Setting después de la investigación.
Compliance — retención de log requerida por N díasPath 1 + 2 permanente. Daily cap obligatorio.
Sin budget Azure ningunoSolo TIER C (Local samples). Deje Cloud Credentials vacío. Workspace cae automáticamente — solo pierde Diagnostic Logs (KQL).

Troubleshooting — “Creé el Diagnostic Setting pero no llega ningún dato”

Un Diagnostic Setting recién creado a veces se niega a empezar a emitir eventos por 30+ minutos (o nunca), aunque el management plane lo reporte como “activo”. Es un quirk conocido de Azure Monitor cuando un setting anterior en el mismo recurso fue eliminado recientemente, o cuando solo una categoría de log está activa.

Cómo confirmar que está atascado en este estado

Corra el probe de abajo — funciona tanto dentro del blade Logs del workspace (solo la parte KQL) como desde su terminal vía az CLI. Reemplace <your-workspace-guid> por el GUID que copió de Workspace → Overview → Workspace ID. Si cnt se queda en 0 por más de 10 minutos mientras la cuenta está sirviendo tráfico activamente, está atascado.

az monitor log-analytics query \
  --workspace <your-workspace-guid> \
  --analytics-query "CDBMongoRequests | where TimeGenerated > ago(10m) | summarize cnt=count()" \
  -o table

El workaround que lo destraba

Elimine el Diagnostic Setting y recréelo con tres categorías de log activadas al mismo tiempo en vez de solo MongoRequests. Las categorías extra inicializan el pipeline de diagnóstico que el setting de categoría única no logró inicializar.

RID="/subscriptions/<sub>/resourceGroups/<rg>/providers/Microsoft.DocumentDB/databaseAccounts/<acct>"
WS="/subscriptions/<sub>/resourceGroups/<rg>/providers/Microsoft.OperationalInsights/workspaces/<ws-name>"

az monitor diagnostic-settings delete --name nosqlstudio-monitoring --resource "$RID"

az monitor diagnostic-settings create \
  --name nosqlstudio-monitoring \
  --resource "$RID" \
  --workspace "$WS" \
  --logs '[{"category":"MongoRequests","enabled":true},{"category":"DataPlaneRequests","enabled":true},{"category":"QueryRuntimeStatistics","enabled":true}]' \
  --metrics '[{"category":"Requests","enabled":true}]' \
  --export-to-resource-specific true

Después del recreate, vuelva a correr el probe KQL. Los eventos típicamente aparecen en 3–7 minutos. Una vez fluyendo, puede dejar las tres categorías activas (las dos extra cuestan un poco más de ingestion pero le dan el query plan + payloads crudos de request en CDBQueryRuntimeStatistics y CDBDataPlaneRequests), o desactivar las extra después de que el pipeline se caliente.

Cuando ni el workaround funciona

  • Confirme que la API de la cuenta Cosmos es MongoDB (corra az cosmosdb show --ids "$RID" --query "kind" — debe imprimir MongoDB; MongoRequests solo se dispara para esa API).
  • Confirme que la región del workspace coincide con la región de la cuenta Cosmos (los pipelines cross-region son más lentos y a veces pierden la primera hora).
  • Revise az monitor activity-log list --resource-id "$RID" --offset 1h por cualquier operación de diagnostic-setting fallida.
  • Último recurso: abra un ticket de soporte Azure — el pipeline de diagnóstico es totalmente gestionado por Microsoft y no podemos inspeccionarlo más desde afuera.

Desactivando después para parar de pagar

  1. NoSqlStudio: Cloud Credentials → elimine el Workspace ID (GUID) → Save. App cae a Azure Monitor automáticamente (banner se vuelve verde en segundos).
  2. Azure: cuenta Cosmos → Diagnostic settings → elimine la setting. Detiene el stream de ingestion.
  3. Opcional: elimine el workspace Log Analytics si no está siendo usado para nada más. De lo contrario déjelo — costo de retención cae a cero conforme ningún log nuevo entra.