[stat] Suppression des valeurs 0 dans influxdb
Ticket : https://git.canopsis.net/canopsis/canopsis/issues/1965
À tester avec : https://git.canopsis.net/canopsis/canopsis/merge_requests/1196
Cette MR modifie le comportement du moteur stat, pour qu'il ne stocke plus la valeur 0 dans influxdb.
Par exemple, lors de la réception d'un événement check avec un état 0 sur l'entité r/c
, le point suivant était précédemment inséré dans influxdb :
time eid ko ok
---- --- -- --
... r/c 0 1
Suite à cette MR, le point suivant est inséré :
time eid ko ok
---- --- -- --
... r/c 1
Cela permet de récupérer le dernier événement ko avec la requête :
SELECT last(ko) FROM event_state_history
au lieu de
SELECT last(ko) FROM event_state_history WHERE ko = 1
ce qui améliore considérablement les performances.
Procédure de migration
Pour que les statistiques affichées dans la MDS soient correctes, les utilisateurs du moteur engine-stat
doivent l'arrêter, et lancer les requêtes suivants dans la base canopsis
d'influxdb :
select ok::integer,ko::integer into event_state_history_old from event_state_history group by connector,connector_name,component,resource,eid;
drop measurement event_state_history;
select ok::integer into event_state_history from event_state_history_old where ok > 0 group by connector,connector_name,component,resource,eid;
select ko::integer into event_state_history from event_state_history_old where ko > 0 group by connector,connector_name,component,resource,eid;
drop measurement event_state_history_old;
Cela peut être effectué avec la commande suivante :
influx -username cpsinflux -password canopsis -database canopsis -execute 'select ok::integer,ko::integer into event_state_history_old from event_state_history group by connector,connector_name,component,resource,eid;drop measurement event_state_history;select ok::integer into event_state_history from event_state_history_old where ok > 0 group by connector,connector_name,component,resource,eid;select ko::integer into event_state_history from event_state_history_old where ko > 0 group by connector,connector_name,component,resource,eid;drop measurement event_state_history_old;'
Cette procédure peut prendre beaucoup de temps (30 minutes lors de mes tests).