Bonjour,
J'essaie d'utiliser Elastalert pour remplacer la fonctionnalité basiques d'alerting proposé par LDP (notification uniquement du propriétaire).
La solution Elasalert se charge normalement de la création des index et de leur configuration. Cependant, la création des index est à la charge d'OVH (possible via l'interface du service).
Il faut donc créer les index à la main avec OVH puis appliquer les mappings à la main. Cependant, je n'arrive pas à les appliquer.
J'ai tenté :
```
PUT https://gra3.logs.ovh.com:9200/xxx-alert/_mapping/_doc
{
"numeric_detection": true,
"date_detection": false,
"dynamic_templates": [
{
"strings_as_keyword": {
"mapping": {
"ignore_above": 1024,
"type": "keyword"
},
"match_mapping_type": "string"
}
}
],
"properties": {
"rule_name": {
"type": "keyword"
},
"@timestamp": {
"type": "date",
"format": "dateOptionalTime"
},
"alert_time": {
"type": "date",
"format": "dateOptionalTime"
},
"match_time": {
"type": "date",
"format": "dateOptionalTime"
},
"match_body": {
"type": "object"
},
"aggregate_id": {
"type": "keyword"
}
}
}
```
Mais j'ai une erreur en retour :
```json
{
"error": {
"root_cause": [
{
"type": "forbidden_exception",
"reason": "Action 'indices:admin/mapping/put' is forbidden due to [DEFAULT]"
}
],
"type": "forbidden_exception",
"reason": "Action 'indices:admin/mapping/put' is forbidden due to [DEFAULT]"
},
"status": 403
}
```
N'étant pas un expert ElastiSearch, je m'en remet à la communauté.
Bonjour,
Merci pour l’intérêt que vous portez à Logs Data Platform.
Vous avez raison, Elastalert requiert 5 index pour fonctionner.
Par exemple :
xxx-alert, xxx-alert_error, xxx-alert_status, xxx-alert_past, xxx-alert_silence
Une fois ces index enregistrés, il faudra déclarer pour chacun d’eux le mapping indiqué ici https://github.com/Yelp/elastalert/tree/master/elastalert/es_mappings/6.
L’appel que vous précisez est correct, il faut bien le pousser le mapping dans : https://gra3.logs.ovh.com:9200/xxx-alert/_mapping/_doc
Le forbidden ici est probablement dû au fait que vous avez reçu les droits de lecture sur l’index et non des droits d’écriture.
Par défaut le manager affecte uniquement les permissions de type RO (read-only) sur les index. Celui-ci sera prochainement actualisé pour proposer également des permissions de type RW (read-write).
En attendant, nous vous invitons à demander au propriétaire de ces index d’effectuer ces appels depuis notre API, à cette adresse: https://api.ovh.com/console/#/dbaas/logs/%7BserviceName%7D/role/%7BroleId%7D/permission/index#POST en précisant en permissionType, la valeur READ_WRITE.
Nous allons également proposer d’ici peu la possibilité de créer des index en Api Elasticsearch native, cela devrait rendre l’expérience plus naturelle: création des index et mappings associés seraient alors portés par Elastalert directement. Nous profiterons de ce cas d’usage pour publier un guide sur le sujet.
Pour vous aider, voici un script bash que j'utilise pour instancier le mapping d’un nouveau Elastalert :
https://gist.github.com/edefaria/0de27df3f4148a64b9857f58ceb82381
Cordialement,
C'est nickel, merci !
READ_WRITE
Ce serait cool de rendre le POST sur les permissions idempotent et de gérer les updates. De plus, pas simple de trouver l'identifiant de l'index ou celui des permissions ...
Merci @LoganM1 pour ce feedback, la mise à jour du manager concernant ces aspects arrivera en fin de semaine prochaine.
J'espère que vous vous en êtes sorti malgré tout.