Cast all alert values to float to prevent type conflicts
Kontekst
Pan Bartłomiej znalazł Pana Buga: https://projects.task.gda.pl/citask/storage/playbooks/iscsi-manager/-/merge_requests/50/diffs#note_183057
Winszuję.
Problem
-
Kapacitor zapisuje alerty do Influksa: https://projects.task.gda.pl/citask/monitoring/roles/kapacitor/-/blob/2.5.0/templates/kapacitor.tick.j2#L51
Jest to potrzebne, żebyśmy mogli potem odczytać historię alertów.
-
Zapisywane są dwa pola:
severity
ivalue
. -
Pole
value
to wartość, na podstawie której generowany jest alert. -
Jeśli w jednym alercie
value
będzie floatem, a w innym alercie intem, to pojawi się konflikt przy zapisie:ts=2022-02-24T10:41:16.063Z lvl=error msg="failed to write points to InfluxDB" service=kapacitor task_master=main task=iscsidev_systemd_unit node=influxdb_out5 err="partial write: field type conflict: input field \"value\" on measurement \"iscsidev_alerts\" is type integer, already exists as type float dropped=5"
Kluczowe jest:
input field "value" on measurement "iscsidev_alerts" is type integer, already exists as type float dropped=5
.