Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

  • Modifier le paramètre cluster.name : par défaut il utilise elasticsearch. Si vous lancez un autre serveur elasticsearch non paramétré sur le même réseau, il va commencer à recopier toutes les données car ils considéreront qu'ils font partie du même cluster.

    Bloc de code
    # Nom du cluster utilisé pour Agimus. Toutes les machines utilisées (si vous utilisez le mécanisme de distribution) doivent avoir le même.
    cluster.name: Agimus


  • Modifier le paramètre node.name : permet de savoir plus précisément quelle machine pose problème le cas échéant. Le nœud est un serveur elasticsearch. Vous pouvez lui donner le nom réel du serveur pour plus de clarté.

    Bloc de code
    # Nom du noeud (une des machines du cluster). Permet de différencier chaque machine du cluster.
    node.name: "Agimus1"


  • Modifier network.host pour écouter en local et sur l'IP externe

    Bloc de code
    # Pour écouter sur 127.0.0.1 et sur l'IP externe
    network.host: [_global_, _local_]


  • Prévoir beaucoup de RAM sur la ou les machines du cluster. Le heap space (variable d'environnement ES_HEAP_SIZE) du processus ne devrait pas dépasser 50% de la RAM.
  • Ajouter le paramètre indices.fielddata.cache.size : 40% .
    Ceci permet de limiter l'espace de heap alloué à fielddata et d'éviter que les requêtes ne soient bloquées par un circuit breaker (cf http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_limiting_memory_usage.html)

    Bloc de code
    indices.fielddata.cache.size:  40%


  • Avant de commencer l'indexation, ajoutez ces templates qui permettent de paramétrer les champs par défaut et un meilleur fonctionnement pour l'usage qui est fait d'elasticsearch.

    • [Facultatif] Ingest pipeline qui va être exécutée par défaut pour toute insertion dans un index agimus.
      Permet de créer 3 nouveaux champs : Jour de la semaine, heure du jour, type de périphérique lisible. Ces champs seront utilisés dans les rendus kibana.

      Bloc de code
      titleIngest pipeline - création automatique de champ
      collapsetrue
      $ curl -XPUT "http://localhost:9200/_ingest/pipeline/agimus" -d '
      {
        "description": "ajout des champs heure et jour de la semaine pour l'événement et valeur lisible de is_mobile",
        "processors": [
          {
            "set": {
              "field": "ts",
              "value": "{{@timestamp}}"
            }
          },
          {
            "script": {
              "lang": "painless",
              "source": """
                ZonedDateTime dateEvt = ZonedDateTime.parse(ctx.ts);
                ZonedDateTime dateEvtChezNous = dateEvt.withZoneSameInstant(ZoneId.of('Europe/Paris'));
                ctx.heure = dateEvtChezNous.getHour();
                ctx.jour_semaine = dateEvtChezNous.getDayOfWeek().getValue() +"-"+dateEvtChezNous.getDayOfWeek().getDisplayName(TextStyle.SHORT, Locale.FRANCE);        
              """
            }
          },
          {
            "remove": {
              "field": "ts"
            }
          },
          {
            "script": {
              "lang": "painless",
              "source": """
                if (ctx?.is_mobile =="0") {
                ctx.is_mobile_hr = "Ordinateur";
              } else if (ctx?.is_mobile =="1") {
                ctx.is_mobile_hr = "Smartphone/Tablette";
              } else {
                ctx.is_mobile_hr = "Non détectable";
              }
              """
            }
          }
        ]
      }


    • Template principal. Si vous n'utilisez pas la pipeline ci-dessus, retirez la ligne "default_pipeline" : "agimus",
      Les champs texte sont par défaut de type keyword car nous n'utiliserons généralement pas de recherche approximative mais chaque valeur aura un sens uniquement si elle est prise en compte dans sa totalité
      Les types des autres champs sont prédéfinis pour éviter des erreurs à l'ingestion des données et pour permettre une bonne utilisation dans kibana

      Bloc de code
      titletemplate "agimus"
      collapsetrue
      $ curl -XPUT "http://localhost:9200/_template/agimus" -d '
      {
          "order" : 0,
          "index_patterns" : [
            "ag-*"
          ],
          "settings" : {
            "index" : {
              "default_pipeline" : "agimus",
              "refresh_interval" : "1s",
              "number_of_shards" : "1",
              "number_of_replicas" : "0"
            }
          },
          "mappings" : {
            "dynamic_templates" : [
              {
                "string_fields" : {
                  "mapping" : {
                    "type" : "keyword"
                  },
                  "match_mapping_type" : "string",
                  "match" : "*"
                }
              }
            ],
            "properties" : {
              "@timestamp" : {
                "type" : "date"
              },
              "estinscrit" : {
                "type" : "boolean"
              },
              "@version" : {
                "type" : "keyword"
              },
              "insc-annee" : {
                "type" : "integer"
              }
            }
          },
          "aliases" : { }
        }'
      


    • Template de l'index contenant le dump ldap et de ldap-stat permettant le suivi du ldap. Il vous faudra peut-être le modifier si vous y intégrer des valeurs spécifiques

      Bloc de code
      titletemplate "ldap"
      collapsetrue
      $ curl -XPUT "http://localhost:9200/_template/ldap" -d '
      {
          "order" : 0,
          "index_patterns" : [
            "ldap*"
          ],
          "settings" : {
            "index" : {
              "number_of_shards" : "3",
              "number_of_replicas" : "0",
              "refresh_interval" : "60s"
            }
          },
          "mappings" : {
            "dynamic_templates" : [
              {
                "string_fields" : {
                  "mapping" : {
                    "type" : "keyword"
                  },
                  "match_mapping_type" : "string",
                  "match" : "*"
                }
              }
            ],
            "properties" : {
              "@timestamp" : {
                "type" : "date"
              },
              "estinscrit" : {
                "type" : "boolean"
              },
              "@version" : {
                "type" : "keyword"
              },
              "insc-annee" : {
                "type" : "integer"
              }
            }
          },
          "aliases" : { }
        }'
      
      


    • Exemples de templates spécifiques s'appliquant à un type de log en particulier

      Bloc de code
      titleTemplate s'appliquant aux cours moodle
      collapsetrue
      $ curl -XPUT "http://localhost:9200/_template/moodlecours" -d '
      {
          "order" : 2,
          "index_patterns" : [
            "ag-moodlecours-*"
          ],
          "settings" : { },
          "mappings" : {
            "dynamic_templates" : [
              {
                "type_activites_as_int" : {
                  "path_match" : "mdl_type_activites.*",
                  "mapping" : {
                    "type" : "integer"
                  }
                }
              }
            ],
            "properties" : {
              "mdl_id_comp" : {
                "type" : "integer"
              },
              "mdl_activites" : {
                "type" : "nested",
                "properties" : {
                  "id_activite" : {
                    "type" : "integer"
                  }
                }
              },
              "mdl_courseid" : {
                "type" : "integer"
              },
              "mdl_id_cat" : {
                "type" : "integer"
              },
              "mdl_id_coll" : {
                "type" : "integer"
              },
              "mdl_actif" : {
                "type" : "boolean"
              }
            }
          },
          "aliases" : { }
        }'


      Bloc de code
      titleTemplate s'appliquant aux logs moodle
      collapsetrue
      $ curl -XPUT "http://localhost:9200/_template/moodledb" -d '
      {
          "order" : 2,
          "index_patterns" : [
            "ag-moodledb-*"
          ],
          "settings" : { },
          "mappings" : {
            "properties" : {
              "mdl_courseid" : {
                "type" : "integer"
              },
              "mdl_id" : {
                "type" : "integer"
              },
              "mdl_contextinstanceid" : {
                "type" : "integer"
              },
              "mdl_objectid" : {
                "type" : "integer"
              },
              "mdl_contextid" : {
                "type" : "integer"
              },
              "mdl_actif" : {
                "type" : "boolean"
              }
            }
          },
          "aliases" : { }
        }'


      Bloc de code
      titleTemplate s'appliquant aux logs ezpaarse
      collapsetrue
      $ curl -XPUT "http://localhost:9200/_template/ezagimus" -d '
      {
          "order" : 2,
          "index_patterns" : [
            "ag-ezagimus-*"
          ],
          "settings" : { },
          "mappings" : {
            "properties" : {
              "size" : {
                "type" : "integer"
              },
              "on_campus" : {
                "type" : "boolean"
              },
              "status" : {
                "type" : "integer"
              }
            }
          },
          "aliases" : { }
        }'


      Bloc de code
      titleTemplate s'appliquant aux logs trace
      collapsetrue
      $ curl -XPUT "http://localhost:9200/_template/trace" -d '
      {
          "order" : 0,
          "index_patterns" : [
            "trace*"
          ],
          "settings" : {
            "index" : {
              "number_of_shards" : "3",
              "number_of_replicas" : "0",
              "refresh_interval" : "60s"
            }
          },
          "mappings" : {
            "dynamic_templates" : [
              {
                "string_fields" : {
                  "mapping" : {
                    "type" : "keyword"
                  },
                  "match_mapping_type" : "string",
                  "match" : "*"
                }
              }
            ],
            "properties" : {
              "@timestamp" : {
                "type" : "date"
              },
              "@version" : {
                "type" : "keyword"
              }
            }
          },
          "aliases" : { }
        }'


      Bloc de code
      titleTemplate s'appliquant aux logs rocketchat
      collapsetrue
      $ curl -XPUT "http://localhost:9200/_template/rocketchat" -d '
      {
          "order" : 2,
          "index_patterns" : [
            "ag-rocketchat-*"
          ],
          "settings" : { },
          "mappings" : {
            "properties" : {
              "rc_totalChannels" : {
                "type" : "long"
              },
              "rc_totalUsers" : {
                "type" : "long"
              },
              "rc_totalRooms" : {
                "type" : "long"
              },
              "rc_totalMessages" : {
                "type" : "long"
              },
              "rc_totalConnectedUsers" : {
                "type" : "long"
              },
              "rc_totalDirectMessages" : {
                "type" : "long"
              },
              "rc_totalPrivateGroupMessages" : {
                "type" : "long"
              },
              "rc_totalChannelMessages" : {
                "type" : "long"
              },
              "rc_totalLivechatMessages" : {
                "type" : "long"
              },
              "rc_totalLivechat" : {
                "type" : "long"
              },
              "rc_totalPrivateGroups" : {
                "type" : "long"
              },
              "rc_totalDirect" : {
                "type" : "long"
              }
            }
          },
          "aliases" : { }
        }'


      Astuce
      titlePOUR TESTER

      Pour vous assurer que les commandes ont été prises en compte, vérifier que vous avez les entrées "agimus", "ldap", "trace" et templates spécifiques ajoutés en lançant la commande suivante :

      Bloc de code
      curl -XGET "http://localhost:9200/_template/?pretty"



...