Impossible de définir mon field comme un geo_point

Comment as-tu créé ton template?
Quel commande as-tu lancé pour supprimer l'index?
...

Pour mon template je l'ai édité via Notepad ++ puis sauvegardé en .conf.
Pour supprimer l'index je vais dans "management", "index management", je sélectionne l'index et je clique sur "delete index". Une fois que je relance logstash et filebeat (donc que l'index se recréé) je vais rafraîchir mon index pattern pour être sur qu'il prenne en compte les modifications.

Le template est chargé par Logstash?

Effectivement, le template est chargé par logstash. Lorsque j’exécute logstash j'ai le message suivant:

[2020-02-05T08:54:01,493][INFO ][logstash.outputs.elasticsearch][main] Attempting to install template { ... }

Que donne:

GET /_template

?

Tu peux partager sur gist.github.com si c'est trop gros.

Voici le résultat ( un peu long en effet, environ 13000 lignes )
https://gist.github.com/user-or-not-user/1e7f9a15ead7b39dda7b7bba3004dbd3

J'essaye de résumer la situation.

Depuis le début, tu indiques que tu envoies les données vers squid-sadoc-*.
Tu dis que tu as un template qui contient:

{
 "index_patterns": ["squid-*"],
...

Or si on regarde le gist que tu as fourni, aucun template de ce genre n'existe.
Le seul qui ressemble à quelque chose de relatif à Logstash est celui-ci:

  "logstash" : {
    "order" : 0,
    "version" : 60001,
    "index_patterns" : [
      "logstash-*"
    ],
    "settings" : {
      "index" : {
        "lifecycle" : {
          "name" : "logstash-policy",
          "rollover_alias" : "logstash"
        },
        "number_of_shards" : "1",
        "refresh_interval" : "5s"
      }
    },
    "mappings" : {
      "dynamic_templates" : [
        {
          "message_field" : {
            "path_match" : "message",
            "mapping" : {
              "norms" : false,
              "type" : "text"
            },
            "match_mapping_type" : "string"
          }
        },
        {
          "string_fields" : {
            "mapping" : {
              "norms" : false,
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "ignore_above" : 256,
                  "type" : "keyword"
                }
              }
            },
            "match_mapping_type" : "string",
            "match" : "*"
          }
        }
      ],
      "properties" : {
        "@timestamp" : {
          "type" : "date"
        },
        "geoip" : {
          "dynamic" : true,
          "properties" : {
            "ip" : {
              "type" : "ip"
            },
            "latitude" : {
              "type" : "half_float"
            },
            "location" : {
              "type" : "geo_point"
            },
            "longitude" : {
              "type" : "half_float"
            }
          }
        },
        "@version" : {
          "type" : "keyword"
        }
      }
    },
    "aliases" : { }
  }

Mais il ne s'applique qu'à des index commençant par logstash-*.

Autrement dit:

Effectivement, le template est chargé par logstash.

N'est sans doute pas tout à fait exact.

En effet, ton output est:

	elasticsearch {
		hosts => ["127.0.0.1:9200"]
		index => "squid-sadoc-%{Log_File_Format}" 
		manage_template => true
		template => "C:\logstash-7.5.0\squid_mapping.json"
	}

En réalité je pense qu'il te manque template_overwrite et idéalement tu devrais ajouter template_name dans ton output elasticsearch.

Voir:

C'est plutôt bien résumé. Comme je l'ai dis précédemment je souhaite traiter des logs de plusieurs format donc je souhaite créer un index par format sous la forme : squid-sadoc-FileFormat d'où :

index => "squid-sadoc-%{Log_File_Format}" 

Pour l'instant je suis au prototype donc j'aimerai mettre en place un dashboard par type de log donc mettre en place des index pattern du type :

squid-sadoc-FileFormat

et relier chaque dashboard au pattern correspondant.

donc si je comprends bien l'idée serait d'ajouter dans mon output :

template_overwrite => true
template_name => "squid-sadoc-*"

En fait je pense que mon template n'est pas pris en compte par elastic.
Pour essayer, j'ai été modifier le template logstash en l'appliquant à sadoc-* et miracle geoip.location est pris comme un geo_point.
Cependant je ne trouve pas mon template squid-sadoc

Merci beaucoup, cette fois c'est bon tout semble fonctionner. J'ai bien des geopoint et je vois mon template dans kibana.
Encore merci pour le temps passé !

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.