Skip to main content

Google Maps API Monitoring in Grafana

Questa guida spiega come monitorare l'utilizzo delle API di Google Maps tramite Grafana utilizzando Google Cloud Monitoring.

Panoramica Costi Google Maps​

Google offre $200 di credito gratuito al mese per le API Maps. Ecco i limiti approssimativi:

APICostoRichieste gratuite (~)
Maps JavaScript API$7/1,000 loads~28,000/mese
Geocoding API$5/1,000 requests~40,000/mese
Directions API$5/1,000 requests~40,000/mese
Places API$17/1,000 requests~11,000/mese

Cosa conta come "caricamento" della Maps JavaScript API​

  • βœ… Conta: Apertura di una pagina con mappa, refresh della pagina
  • ❌ Non conta: Pan/zoom, aggiunta marker, aggiornamento posizioni in real-time

Prerequisiti​

  • Accesso a Google Cloud Console con permessi IAM
  • Grafana con possibilitΓ  di installare plugin
  • Un progetto Google Cloud con Maps API abilitate

Step 1: Creare un Service Account​

  1. Vai su Google Cloud Console
  2. Seleziona il progetto Visla
  3. Vai su IAM e amministrazione β†’ Account di servizio
  4. Clicca + Crea account di servizio
  5. Compila i campi:
    • Nome: grafana-monitoring
    • ID: grafana-monitoring
    • Descrizione: Service account per Grafana Cloud Monitoring
  6. Clicca Crea e continua
  7. Aggiungi il ruolo: Monitoring Viewer (roles/monitoring.viewer)
  8. Clicca Fine

Step 2: Generare la chiave JSON​

  1. Nella lista degli account di servizio, trova grafana-monitoring
  2. Clicca sui tre puntini β†’ Gestisci chiavi
  3. Clicca Aggiungi chiave β†’ Crea nuova chiave
  4. Seleziona JSON e clicca Crea
  5. Salva il file JSON in un posto sicuro (ti servirΓ  per Grafana)

⚠️ IMPORTANTE: Non committare mai questo file nel repository!

Step 3: Installare il Plugin in Grafana​

Grafana Cloud​

Il plugin Γ¨ giΓ  disponibile. Vai su Connections β†’ Add new connection β†’ cerca "Google Cloud Monitoring".

Grafana Self-Hosted​

grafana-cli plugins install grafana-googlecloud-datasource

Poi riavvia Grafana:

sudo systemctl restart grafana-server

Step 4: Configurare il Datasource​

  1. In Grafana, vai su Connections β†’ Data sources
  2. Clicca Add data source
  3. Cerca e seleziona Google Cloud Monitoring
  4. Configura:
    • Name: Google Cloud Monitoring
    • Authentication Type: Service Account Key
    • Service Account Key: Incolla il contenuto del file JSON scaricato
  5. Clicca Save & Test

Step 5: Creare la Dashboard​

Query per Request Count (Maps JavaScript API)​

Metric: serviceruntime.googleapis.com/api/request_count
Filter:
- resource.type = "consumed_api"
- resource.label.service = "maps-backend.googleapis.com"
Group by: resource.label.method
Aggregation: sum
Alignment: delta

Query per Latenza​

Metric: serviceruntime.googleapis.com/api/request_latencies
Filter:
- resource.type = "consumed_api"
- resource.label.service = "maps-backend.googleapis.com"
Aggregation: percentile (99)

Query per Quota Utilizzata​

Metric: serviceruntime.googleapis.com/quota/allocation/usage
Filter:
- resource.type = "consumer_quota"
- resource.label.service = "maps-backend.googleapis.com"

Dashboard JSON (Esempio)​

Crea una nuova dashboard e importa questo JSON per i pannelli base:

{
"panels": [
{
"title": "πŸ—ΊοΈ Maps API Requests",
"type": "timeseries",
"datasource": "Google Cloud Monitoring",
"targets": [
{
"metricType": "serviceruntime.googleapis.com/api/request_count",
"filters": ["resource.label.service", "=", "maps-backend.googleapis.com"]
}
]
},
{
"title": "⏱️ API Latency (p99)",
"type": "gauge",
"datasource": "Google Cloud Monitoring",
"targets": [
{
"metricType": "serviceruntime.googleapis.com/api/request_latencies",
"filters": ["resource.label.service", "=", "maps-backend.googleapis.com"]
}
]
},
{
"title": "πŸ’° Estimated Monthly Cost",
"type": "stat",
"description": "Basato su $7/1000 requests per Maps JS API"
}
]
}

Metriche Disponibili​

MetricaDescrizione
api/request_countNumero totale di richieste API
api/request_latenciesLatenza delle richieste (distribuzione)
api/error_countNumero di errori
quota/allocation/usageQuota utilizzata
quota/limitLimite di quota

Alert Consigliati​

Alert per costi elevati​

Crea un alert quando le richieste superano una soglia:

# Esempio: Alert quando superi 20,000 requests/giorno
condition: sum(request_count) > 20000
for: 1h
labels:
severity: warning
annotations:
summary: "Alto utilizzo Google Maps API"
description: "Hai superato 20,000 richieste oggi. Costo stimato: ~$140"

Alert per errori​

condition: rate(error_count[5m]) > 10
for: 5m
labels:
severity: critical
annotations:
summary: "Errori Google Maps API"

Stima Costi​

Per calcolare il costo stimato in Grafana, puoi usare una trasformazione:

# Pannello "Costo Stimato Mensile"
# Formula: (request_count * 7) / 1000 - 200 (credito gratuito)
# Se negativo, il costo Γ¨ $0

Troubleshooting​

"No data" nei pannelli​

  1. Verifica che il Service Account abbia il ruolo Monitoring Viewer
  2. Controlla che le API Maps siano abilitate nel progetto
  3. Assicurati che il filtro resource.label.service sia corretto

Metriche ritardate​

Le metriche di Cloud Monitoring hanno un ritardo di ~2-3 minuti. È normale.

Errore "Permission denied"​

Il Service Account potrebbe non avere i permessi corretti. Verifica:

gcloud projects get-iam-policy PROJECT_ID \
--filter="bindings.members:grafana-monitoring@PROJECT_ID.iam.gserviceaccount.com"