Skip to content

[che] Recalcule les liens avec les watchers quand une entité est modifiée par l'event-filter.

Lucas Seguinot requested to merge fix/watcher-entity-enrichment into develop

Corrige https://git.canopsis.net/canopsis/go-revolution/issues/104.

Je me suis permis de faire un peu de refacto, pour clarifier les rôles des méthodes du context.builder.

Validation

  • Monter un environnement go, avec che en mode debug

  • Créer un watcher surveillant les entités avec un champ enrichi, par exemple :

    POST /api/v2/watcherng
    {
        "_id": "watcher-capensis",
        "name": "watcher-capensis",
        "type": "watcher",
        "entities": [{
            "infos": {
                "customer": {
                    "value": "Capensis"
                }
            }
        }],
        "state": {
            "method": "worst"
        },
        "output_template": "Alarmes critiques : {{.State.Critical}}"
    }
  • Créer une règle d'enrichissement qui ajoute ce champ enrichi à des entités, par exemple :

    {
        "type": "enrichment",
        "pattern": {},
        "external_data": {
            "entity": {
                "type": "entity"
            }
        },
        "actions": [
            {
                "type": "copy",
                "from": "ExternalData.entity",
                "to": "Entity"
            }
        ],
        "on_success": "pass",
        "on_failure": "pass",
        "priority": 100
    }
    POST /api/v2/eventfilter/rules
    {
        "_id": "enrichment-customer",
        "type": "enrichment",
        "pattern": {},
        "actions": [
            {
                "type": "set_entity_info_from_template",
                "name": "customer",
                "description": "Event-filter info",
                "value": "Capensis"
            }
        ],
        "on_success": "pass",
        "on_failure": "drop",
        "priority": 120
    }

    La première règle ajoute l'entité à l'événement, la seconde modifie l'information customer, et met sa valeur à Capensis.

  • Créer une nouvelle entité en envoyant UN SEUL événement check.

  • Dans les logs de che, chercher la ligne correspondant à l'événement envoyé contenant : 2019/05/06 14:55:51 DEBUG | output event: .... Elle doit contenir les informations suivantes :

    {
        // ...,
        "current_entity": {
            // ...
            "impact": ["component", "watcher-capensis"], // <- contient le watcher
            "infos": {
                "customer": {
                    "name": "customer",
                    "description": "",
                    "value": "Capensis" // <- l'information a été modifiée
                }
            }
            // ...
        }
        // ...
    }
  • Vérifier qu'au bout d'une minute, le watcher est bien dans les impact de l'entité, et l'entité est bien dans les depends du watcher en base.

Edited by Lucas Seguinot

Merge request reports