Dormeto
ENFR

Docs

Découverte

La découverte trouve les applications web que Dormeto pourrait mettre en veille : les règles des équilibreurs de charge de vos comptes et régions. Les administrateurs définissent où elle cherche, le périmètre, sous Discovery › Perimeter. Les opérateurs la lancent et intègrent ce qu'elle trouve.

8 min de lectureManager 0.21.0

Ce que fait la découverte

  • Elle lit les règles des équilibreurs de charge de chaque compte et région du périmètre, avec le rôle en lecture seule DmtDiscoveryRole.
  • Chaque target group vers lequel des règles transfèrent devient un candidat, avec sa part d'inactivité. Cette part est les heures sans aucune requête sur les 7 derniers jours.
  • Elle s'exécute à intervalle régulier, et à la demande avec Run now, pour les opérateurs et les administrateurs.
  • Elle ne modifie rien dans vos comptes. L'intégration d'un candidat est une autre étape (Workloads).

Statuts des candidats

La vue Discovery regroupe les candidats par statut, et s'ouvre sur le premier qui en compte :

  • To onboard : éligible et dans le périmètre, pas encore intégré.
  • To offboard : intégré, mais hors du périmètre, exclu ou devenu inéligible.
  • Managed : intégré. Dormeto le met en veille quand il est inactif.
  • Ineligible : dans le périmètre, mais Dormeto ne peut pas le mettre en veille. Le motif dit pourquoi.
  • Dismissed : un opérateur a choisi de ne pas l'intégrer.
  • Excluded : écarté par une exclusion manuelle, une exclusion globale ou une exclusion de filtre.
  • Out of scope : aucun filtre du périmètre ne l'inclut.
  • Gone : absent de la dernière analyse de son compte et de sa région.

Le périmètre

Les administrateurs le définissent sous Discovery › Perimeter, puis Save. L'exécution suivante l'utilise. Toute modification est consignée dans le journal d'audit.

RéglageDescription
Modepar défaut : OrganizationOrganization (every account), ou This account only, celui du manager. Une nouvelle installation part de la variable discovery_mode du module (Configuration).
Regionspar défaut : toutesEvery region enabled in each account, ou une liste, par exemple eu-west-1, eu-west-3.
Refresh everypar défaut : 24 heuresDe 1 à 168 heures (L'intervalle).
Event-driven refreshpar défaut : désactivéLes modifications d'équilibreurs de charge apparaissent en 5 minutes environ (Rafraîchissement sur événement).
Global excludespar défaut : aucuneCe qu'aucun filtre ne peut inclure (Exclusions globales).
Filterspar défaut : aucunJusqu'à 50. Sans aucun filtre, rien n'est analysé.

Au plus 100 inclusions, exclusions et exclusions globales au total.

Filtres, inclusions et exclusions

La page Perimeter en mode démo : une exclusion globale sur le tag de compte environment=production, puis le filtre non-production avec deux inclusions (OU, tags de compte) et une exclusion (les hôtes status.*)
La page Perimeter : une exclusion globale, puis un filtre avec ses inclusions et son exclusion.

Comment une règle entre dans le périmètre

  1. Les exclusions globales passent en premier. Si l'une d'elles correspond à une règle, la règle est exclue, quoi que disent les filtres.
  2. Puis chaque filtre, séparément. Un filtre retient une règle quand l'une de ses inclusions lui correspond et qu'aucune de ses exclusions ne lui correspond.
  3. Un seul filtre suffit. Les exclusions d'un filtre ne valent que pour ce filtre.
  4. Une règle qu'aucun filtre n'inclut est Out of scope. Celle que seule l'exclusion d'un filtre a arrêtée est Excluded.

Elastic Load BalancingUne règle d'équilibreur de charge

  1. 1Une exclusion globale lui correspond-elle ?OuiExcluded
  2. 2Un filtre la retient-il ? L'une de ses inclusions lui correspond, et aucune de ses exclusions.OuiDans le périmètre
  3. 3L'exclusion d'un filtre l'a-t-elle arrêtée ?OuiExcludedNon : aucun filtre ne l'inclutOut of scope
Un seul filtre suffit. Les exclusions d'un filtre ne valent que pour ce filtre.

Conditions

Une inclusion ou une exclusion est un ensemble de conditions, ajoutées avec Condition. Une règle doit remplir toutes les conditions. Dans une condition, une seule valeur suffit.

Une nouvelle inclusion sans condition et son menu Condition ouvert : comptes, OU, tags de compte, régions, équilibreurs de charge, hôtes, tags de ressource et types de backend, chacun avec une indication
Le menu Condition d'une nouvelle inclusion.
ConditionValeurs
AccountsID de compte à 12 chiffres, par exemple 111122223333.
OUsUnités organisationnelles (ou-…) ou la racine (r-…), sous-OU comprises.
Account tagsLes tags des comptes dans AWS Organizations : key=value, ou key= pour n'importe quelle valeur.
RegionsNoms de régions, par exemple eu-west-1.
Load balancersNoms avec *, par exemple web-*, ou ARN complets.
HostsLes noms d'hôte des règles, avec *, par exemple *.example.com.
Resource tagsTags de l'équilibreur de charge, de la règle ou du target group : key=value, ou key= pour n'importe quelle valeur.
Backend typesinstance (instances EC2), asg (groupes Auto Scaling), ecs (services ECS).
  • Les noms et les hôtes correspondent sans tenir compte de la casse.
  • Plusieurs clés de tag dans une condition doivent toutes être présentes. Pour une même clé, l'une de ses valeurs suffit.
  • Une inclusion sans aucune condition correspond à tous les comptes, régions et règles. Le lint la signale.

Exclusions globales

  • Aucun filtre ne peut réinclure ce qu'une exclusion globale vise.
  • Une exclusion globale qui ne nomme que des comptes, des OU, des tags de compte ou des régions agit avant tout appel. Dormeto ne lit jamais ces comptes ni ces régions.
  • L'action Exclude, sur un candidat ou un workload, en ajoute une, avec son auteur et son motif (Workloads).
L'onglet Excluded de la vue Discovery en mode démo : trois règles, chacune avec son compte, sa région, son backend, sa part d'inactivité et son motif, ici des exclusions manuelles avec leur auteur
L'onglet Excluded : chaque règle dit pourquoi.

Exemple : Les comptes de production exclus par tag de compte.

Rafraîchissement

L'intervalle

  • Une exécution démarre quand la précédente est plus ancienne que Refresh every. Le manager vérifie toutes les heures.
  • Run now en lance une immédiatement. Elle est refusée tant qu'une autre exécution est en cours.
  • Une région sans équilibreur de charge pendant 3 exécutions de suite n'est plus analysée qu'une exécution sur 7.

Rafraîchissement sur événement

  • Quand il est activé, les modifications des équilibreurs de charge apparaissent en 5 minutes environ, sans attendre l'exécution suivante.
  • À l'exécution suivante, le manager installe un relais dans chaque compte prêt, avec le rôle de commande. Un relais est un rôle, plus une règle dans chaque région couverte par un trail CloudTrail.
  • Un compte a besoin du rôle de commande et d'un trail CloudTrail qui consigne les événements de gestion. Sans eux, le compte garde le seul rafraîchissement périodique, et le panneau Organization access dit pourquoi.
  • Only these accounts le limite aux ID de compte que vous indiquez. Vide, il couvre tous les comptes prêts.
  • Un événement réanalyse seulement son compte et sa région, même une région que les exécutions vides sautaient.
  • Quand vous le désactivez, l'exécution suivante supprime les relais.

Exemple : Le rafraîchissement sur événement pour quelques comptes.

Résultats du lint

Le manager vérifie que chaque inclusion du périmètre sert à quelque chose. Ses résultats apparaissent dans la vue Discovery après une exécution, et sous chaque inclusion dans la page Perimeter.

Le filtre previews sur la page Perimeter : sous sa deuxième inclusion, sur une région et un tag de ressource, une note dit qu'elle n'a correspondu à aucune règle lors de la dernière exécution
Un résultat sous l'inclusion qu'il concerne.
Le résultat ditCe qu'il signifie
can never match: global exclude N covers itUne exclusion globale vise tout ce que cette inclusion pourrait trouver. Supprimez l'inclusion, ou resserrez l'exclusion.
can never match: its exclude N covers itLa même chose, par une exclusion du même filtre.
includes every account and regionL'inclusion n'a aucune condition. Ajoutez-en une, sauf si c'est voulu.
only matched globally excluded accounts, regions or rules in the last runUne exclusion globale a écarté tout ce qu'elle a trouvé. Après une exécution seulement.
matched no rule in the last runUne note, pas un avertissement : rien encore à cet endroit, ou une valeur mal saisie. Après une exécution seulement.

Dans la vue Discovery, l'encadré s'intitule « Some inclusions of the perimeter are useless » quand un résultat est un avertissement, et « Perimeter notes » sinon.

Exemple : Lire les résultats du lint.

Exemples

Chaque exemple indique le champ de la page Perimeter à remplir, et avec quoi.

Une seule unité organisationnelle

Pourquoi : commencer par les comptes de recette, tous sous une même OU.

  • Filter, nommé staging.
  • Include 1, condition OUs : ou-ab12-34cd56ef.

Les comptes sous cette OU, et sous ses sous-OU, sont analysés. Les autres sont écartés avant tout appel : « no filter includes this account ».

Les comptes de production exclus par tag de compte

Pourquoi : la production ne doit jamais se mettre en veille, quoi qu'un filtre inclue.

  • Global exclude 1, condition Account tags : env=production.

Les comptes tagués env=production dans AWS Organizations ne sont jamais lus. Taguez un nouveau compte de production, et l'exécution suivante l'écarte.

Une liste de régions

Pourquoi : vos applications tournent dans deux régions. Analyser les autres ne fait que prendre du temps.

  • Désactivez Every region enabled in each account.
  • Regions : eu-west-1, eu-west-3.

Chaque compte du périmètre n'est analysé que dans ces deux régions. Pour ne limiter qu'un filtre, donnez plutôt à son inclusion une condition Regions.

Les équilibreurs de charge portant un tag

Pourquoi : les équipes choisissent Dormeto en taguant leur équilibreur de charge.

  • Filter, nommé opt-in.
  • Include 1, condition Resource tags : dormeto=enabled.

Une règle entre quand son équilibreur de charge, la règle elle-même ou son target group porte dormeto=enabled. Les autres règles sont Out of scope. Tous les comptes et régions restent lus : un tag ne se connaît qu'une fois lu.

Le rafraîchissement sur événement pour quelques comptes

Pourquoi : les comptes de développement changent chaque jour, les autres rarement.

  • Event-driven refresh : activé.
  • Only these accounts : 111122223333, 444455556666.

À l'exécution suivante, le manager installe un relais dans ces deux comptes, s'ils sont prêts. Leurs modifications apparaissent alors en 5 minutes environ. Les autres comptes restent à l'intervalle.

Lire les résultats du lint

Pourquoi : un périmètre grandit, et certaines inclusions finissent par ne plus rien faire.

Avec l'exclusion globale ci-dessus, prenez un filtre staging dont l'inclusion 2 est Account tags env=production. Il reçoit ce résultat :

Le résultat

filter "staging", include 2 can never match: global exclude 1 covers it (account tags env=production)

Lisez-le de gauche à droite : le filtre, le numéro de l'inclusion, la raison, puis les conditions de l'exclusion. Ici, supprimez l'inclusion 2. Une inclusion sans aucune condition reçoit plutôt « includes every account and region ».