Bonjour,
Je vais d'abord expliquer le contexte. Je développe un outil pour analyser différent type de logs et en tirer le maximum d'information. J'utilise filebeat, logstash, elactic et kibana pour la partie traitement/stockage/Interface. A ce jour mon prototype est fonctionnel sauf sur un point : il manque la carte sur laquelle afficher les coordonnées liées aux adresses IP.
J'utilise geoip pour obtenir les coordonnés gps de mes IP. Tout fonctionne très bien, j'obtiens bien toutes mes infos. Je les envois ensuite dans elastic ( là encore aucun problème ) mais quand je consulte mes données, mes coordonnés gps sont enregistrées comme des nombre et non pas des geo_point. J'ai donc les coordonnées gps pour chaque ip mais je ne peux pas les afficher sur une carte (ce n'est pas inutile mais peu parlant)
Je ne sais pas si j'ai été clair mais en résumé j'ai des coordonnés gps via geoip et je veux que logstash les traitent en tant que telles et non pas comme de simples nombres.
Du coté de mon fichier .conf ( avec les filtres grok mon fichier fait 180 lignes donc j'isole la partie qui nous intéresse)
geoip {
source => "clientip"
}
j'ai essayé diverses choses comme :
geoip {
source => "clientip"
}
mutate {
add_field => {"[geoip][coordinate]" => "%{[geoip][location][lat]}"}
add_field => {"[geoip][coordinate]" => "%{[geoip][location][lon]}"}
convert => {
"[geoip][coordinate]" => "float"
}
}
geoip {
source => "clientip"
}
mutate {
convert => {
"[geoip][location]" => "float"
}
}
Bref à peu près tout ce que j'ai pu trouver comme "solution" sur les précédents topics ( Bien que la plupart renvoyaient sur la doc elastic qui ne marche pas quand je l'utilise de manière brut )
Pour ma template j'adapte en fonction de fichier confmais c'est toujours plus ou moins la même chose:
{
"index_patterns": ["squid-*"],
"mappings": {
"_default_": {
"properties": {
"clientip": { "type": "ip" },
"server_ip": { "type": "ip" },
"user": { "type": "keyword" },
"timestamp": { "type": "date" },
"Log_File_Format": { "type": "keyword" },
"Data_Sent": { "type": "number" },
"Data_Received": { "type": "number" },
"HTTP_Result": { "type": "number" },
"bytes": { "type": "number" },
"delay": { "type": "number" },
"facility": { "type": "number" },
"httpversion": { "type": "number" },
"pid": { "type": "number" },
"priority": { "type": "number" },
"response": { "type": "number" },
"windows_response": { "type": "number" },
"geoip": {
"dynamic": true,
"properties" : {
"ip": { "type": "ip" },
"location": {"type": "geo_point"}
}
}
}
}
}
}
Désolé si je ne suis pas trop clair mais c'est la seul partie que je n'arrive pas à debuger et qui m’empêche de présenter mon prototype donc je suis un peu à bout de nerf
Merci d'avance pour votre réponse