Skip to content

3.X roadmap #1846

@naparuba

Description

@naparuba

(en FR pour plus de facilité et de clarté, on changera de langue si besoin de membres externes)

NOTE: ce n'est pas (encore) une roadmap à proprement paré mais une proposition de direction dont découlera la roadmap. Merci de me faire un maximum de retours/propositions sur ces points afin qu'on soit sûr de tous être dans la même direction. Une fois qu'on aura les grands principes, découler la roadmap sera facile, ça sera qu'une question d'ordonnancement ^^

Après avoir pas mal appris sur l'expérience Enterprise sur de bons principes:
== Comprendre > puissance
Faire comprendre à un maximum de personnes la supervision est un travail colossal et la puissance n'est rien si les personnes ne le comprennent pas, et je dirais même jusqu'à dire que ça doit être trivial. (oui ce point va piquer vous vous en douter...)

== Si pas possible de faire comprendre, faire le choix pour l'utilisateur
C'est très, (très) long de faire tout comprendre correctement aux utilisateurs. Donc pendant ce temps faut faire des choix pour l'utilisateur. Chaque choix qu'il doit faire sans avoir tout ce qu'il faut pour comprendre implique une perte sur les utilisateurs. LESS is MORE en résumé.

== Revoir les priorités
L'outil a été pensé à l'origine pour avoir un DEBIT maximal. (aka nombre de checks lancés à la seconde), quitte à sacrifier la LATENCE (surtout d'un point de vue configuration).

Le cycle WHILE TRUE: création conf->vérif conf->application->vue dans les uis->changement de conf est trop long sur les gros environnements. Désormais les utilisateurs veulent un résultat immédiat. Or avec toutes les capacités qu'on a en terme d'héritage, dépendances and co, c'est juste injouable. Va falloir choisir entre les 2.

  • L'héritage c'est surpuissant. Mais peu être trop. Peu être que moins d'héritage et plus de facilité de scripting/vérification.

== Clean divers et varié

  • Certains objets hérités de Nagios sont obsolètes, et on devrait très clairement les droper (*extinfo par exemple).
  • j'aurai du me péter une jambe le jour où j'ai pensé les triggers. Ca n'a rien à faire dans le framework, mais dans un outil tiers genre graphite.
  • Je ne pense pas que mixer run et changement de configuration (par exemple disable check) est un bon mix. C'est pas comme si on avait des outils de gestion de configuration inutilisable désormais. C'est à eux à gérer ça, pas au framework de tenter de les suppléer.
  • Je pense qu'un bon gros clean des features inutilisées ne fera pas de mal ^^

== Optimisation/performances

  • les liens entre les objets sous forme de pointeurs c'est cool, mais bon à maintenir entre les changements de configuration bof bof. Des simples strings c'est plus facile même si ça implique une légère consommation de CPU en plus sur le scheduler
  • ceci permettra aussi de ne pas avoir à updater tous les éléments, on pourrait les pousser 1 par un si on peux gérer les erreurs de liens (genre pas un soucis si le parent n'est pas encore dispo, on le skip et puis c'est tout).
  • Certains daemons sont trop limités en terme de capacité d'utilisation des ressources systèmes (CPU par exemple pour l'arbiter et le scheduler, et réseaux pour l'arbiter)
  • Les objets Pythons sont trop "gros", et complexes. En gros par facilité on a mélangé ce qui dépends de la configuration et de l'état des éléments. Or ça n'a pas le même cycle de vie (un est stable l'autre non). C'est je pense un changement important qui pourra faciliter beaucoup après ^^
  • je pense que les schedulers d'un realm R devraient avoir TOUS les hôtes de son royaume et de ses sous royaumes. Bien sûr un scheduler ne devrait toujour gérer qu'un seul shard des hôtes, mais ça devrait être facile à déterminer par lui, et pas de l'arbiter. Ceci nécessite que les schedulers se connaissent par contre
  • on devrait échanger automatiquement les état des éléments entre les schedulers. Ainsi les bp rules pourront être lancées locament dans un scheduler, mais sur tous les éléments à jour. C'est LA grosse limitation actuelle des bp_rules.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions