You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.6 KiB
3.6 KiB
Grafana & Elasticsearch Know-How
1. Elasticsearch Datasource Provisioning (YAML)
Quando si configura il datasource Elasticsearch via provisioning (es. datasource.yml), utilizzare il blocco jsonData per le configurazioni specifiche.
Campi Chiave in jsonData:
index: Definisce il pattern dell'indice (es.geodata,[logs-]YYYY.MM.DD). Nota: Usare questo invece del campo top-leveldatabaseche è deprecato.timeField: Il nome del campo timestamp (es.timestampo@timestamp).esVersion: La versione del cluster Elasticsearch (es.7.10.0).interval: L'intervallo di tempo predefinito per i raggruppamenti (es.Daily,Hourly,1m). Attenzione: Non impostare aNoneo valori non validi, altrimenti Grafana potrebbe crashare all'avvio.maxConcurrentShardRequests: Limita le richieste concorrenti agli shard.
Esempio datasource.yml:
apiVersion: 1
datasources:
- name: Elasticsearch
type: elasticsearch
uid: elasticsearch-uid
access: proxy
url: http://elasticsearch:9200
isDefault: true
jsonData:
index: "geodata"
timeField: "timestamp"
esVersion: "7.10.0"
interval: "Daily"
maxConcurrentShardRequests: 5
2. Grafana Geomap Panel con Elasticsearch
Per visualizzare punti GeoJSON da Elasticsearch, si utilizza l'aggregazione Geohash Grid.
Configurazione Query:
- Query Type:
Metric. - Metric:
Count(o altra metrica). - Group By:
- Type:
Geohash Grid - Field: Il campo mappato come
geo_point(es.location). - Precision: Livello di dettaglio (es.
5).
- Type:
Configurazione Pannello (JSON Model):
geohashField: Nella configurazione del layer, specifica quale campo contiene l'hash. Solitamente èkeyquando si usa l'aggregazione.location.mode: Deve essere impostato sugeohash.
Troubleshooting "Mappa Vuota":
- Precisione: Se troppo alta (es. 12) su una mappa zoomata indietro, i punti potrebbero non apparire.
- Mapping: Il campo in Elasticsearch DEVE essere di tipo
geo_point. - Geohash Field: Assicurarsi che nel pannello Geomap, sotto "Layer" -> "Location", il "Geohash field" sia impostato correttamente (spesso
key).
Esempio JSON Dashboard (Snippet):
{
"type": "geomap",
"targets": [
{
"bucketAggs": [
{
"type": "geohash_grid",
"field": "location",
"settings": { "precision": "5" }
}
],
"timeField": "timestamp"
}
],
"options": {
"layers": [
{
"location": {
"mode": "geohash",
"geohashField": "key"
}
}
]
}
}
3. Troubleshooting & Best Practices
- Controllare sempre i log: Prima di terminare un task o assumere che una fix funzioni, controllare sempre i log del container (es.
docker compose logs grafana). Errori di provisioning o crash all'avvio sono spesso visibili solo lì. - Riavvio Container: Le modifiche ai file di provisioning (
datasource.yml,dashboard.yml) richiedono spesso il riavvio del container Grafana (docker compose restart grafana) per essere applicate. - Validazione YAML: Assicurarsi che i file YAML siano validi e che l'indentazione sia corretta.
- Datasource UID: Se si riscontrano errori "Datasource provisioning error: data source not found", provare a rimuovere il campo
uiddal file YAML del datasource e fare riferimento al datasource tramite il suoname(stringa) nel JSON della dashboard, invece che tramite l'oggetto{ type: ..., uid: ... }.