Rétention des logs différenciée (Développement, Intégration et exploitation)

Bonjour à tous,
Je viens vers vous afin de m'assurer que ma demande est possible ou non.

Actuellement, ma configuration en Hot-Warm me permet d'utiliser curator pour basculer tous mes logs d'un index unique vers une seconde nodes une fois un délais de 7 jours atteint, passant ainsi de hot à warm et stocké ainsi sur un serveur de stockage mais restant accessible.

Après maintes recherche, je me pose la question s'il est possible de pouvoir appliquer différentes règles de rétentions par type de serveurs.
Une façon simple de les identifier sont leurs nom, se terminant respectivement par -dev et -int. Le restant étant les serveurs en exploitation.

Existe-t-il une façon de procéder pour permettre un tel filtre ?

Bonjour @matthias-evain

Votre message est vide (au cas où vous ne l'avez pas constaté )

Merci.

je constate qu'il ne fallait pas de texte entre les balises ^^, merci ^^

Est ce qu' un regroupement des indexes par famille de serveur et ensuite appliquer ILM (hot/Warn - règle de rétention) pourront répondre à vos besoins ?

Ex: index-xx contenant les logs pour les serveurs de types xx

Oui c'est ce genre de solution à laquelle je pensais, mais techniquement, je ne vois pas de quelle manière configurr pour que mes logs venant de serveur xxx-dev puisse arriver dans index-dev, etc...
Windows et Linux confondus.

Tout simplement depuis ton outil d'ingestion des données (logstash, beats ou autres) définir, en fonction du serveur ( si serveur dev, test ou prod ) le nom de l'indexe.

Exemple :

Sur server dev 1 -- le nom de l'index sera : date-dev
Sur server dev 2 -- le nom de l'index sera : date-dev
Sur server test 1 -- le nom de l'index sera : date-test

Et ainsi les données seront regroupées par environnement

Ok je vois.
depuis filebeat, il me faudrais donc ajouter l'index voulue dans "output.logstash:"

output.logstash:
  index: "xxx-dev"

De cette manière, en configurant mes nouveaux index, les logs devraient se regrouper dans les index en question.
C'est bien cela ?

Plutot dans la partie : output.elasticsearch qu'il faut définir le nom de l'index puisque ton filebeat peux indexer directement les données dans ES. Si tu passes par Logstash (c'est à dire filebeat -> logstash -> Elasticsearch) , à ce moment là, tu dois définir les nom des index depuis logstash.

L'idée est de retrouver une structure comme ceci :

2021.03.11-dev qui contient tout les données des serveurs de dev de la journée du 2021.03.11
2021.03.11-test qui contient tout les données des serveurs de test de la journée du 2021.03.11
2021.03.10-dev qui contient tout les données des serveurs de dev de la journée du 2021.03.10
2021.03.09-dev qui contient tout les données des serveurs de dev de la journée du 2021.03.09
etc ...

oui.

1 Like

Je vais essayer ça, merci.

@matthias-evain N'hésites pas si besoin.

1 Like

Je reviens vers vous, pour le moment je transfert la configuration sur les serveurs souhaité.
J'ai bien créé un index avec le même préfix.
Voiçi la conf ajouté à filebeat.yml

output.elasticsearch:
  index: "dev_"
setup.template.name: "filebeat"
setup.template.pattern: "filebeat-*"

J'ai du ajouter le setup.template, une erreur remontait comme celle-ci:
Exiting: setup.template.name and setup.template.pattern have to be set if index name is modified

Malgrès tout ça, l'index est toujours vide. Aucune erreur mais je ne reçois rien non plus comme log.

Ah Ah .. il va faloir que tu crée ton propre template de mappings.

Et pour les noms des indexes, si tu souhaites pas avoir un regroupement journalier, ça sera un truc style : index: dev-%{+yyyy.MM.dd}. Et depuis kibana, créé un index pattern dev-* qui pointera du coup sur tous les indexes dev-xxx

Salut tout le monde,

Je ne suis pas sûr, mais je pense qu'en changeant les noms des index et en créant sa propre template, il est impossible d'utiliser ILM
comme on peut voir sur cette page: Configure index lifecycle management | Filebeat Reference [7.11] | Elastic

Il est mentionné:

If index lifecycle management is enabled (which is typically the default), setup.template.name and setup.template.pattern are ignored.

Du coup, si je comprends bien, à moins de désactiver ILM, il est impossible de changer le nom de template.

Justement, je ne passe pas par ILM pour la rétention mais par curator.
Avec ce genre de fichier pour gérer mes différentes rétentions par index.

Alors maintenant il ne vous reste qu'à désactiver ILM dans le fichier de configuration de filebeat, vu qu'il est activer par défaut, et de créer un template et un index dans l'ongelette dev de Kibana:

Example (mais pas de filebeat):

PUT _template/bazaar
{
  "index_patterns": ["bazaar-*"], 
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1,
    "index.lifecycle.name": "hot-warm-cold-delete-6months-policy",  
    "index.lifecycle.rollover_alias": "bazaar"
  },
  "mappings": {
    "properties": {
    
     "first_seen": {"type": "date",
      "format": "yyyy-MM-dd HH:mm:ss"
     },
     "sha256_hash": { "type": "keyword"}, 
     "md5_hash": {"type": "keyword"},
     "sha1_hash": {"type": "keyword"}, 
....
...etc.
}

et créer le premier index:

PUT bazaar-000001
{
  "aliases": {
    "bazaar": {
      "is_write_index": true
    }
  }
}

Tu peux normalement récupérer le mapping de filebeat dans: Stack management --> Index Management --> Index Template --> filebeat --> mapping

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