Draft device health validation and Influx mapping - #2
Draft
alaurenzi wants to merge 11 commits into
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
/healthor/health_statusdevice_healthandfault_counterInfluxDB measurementsfault_occurrencepoints from cumulative counter deltasdevice_health:hw_id,device_pathfault_counterandfault_occurrence:hw_id,device_path,fault_codeboot_idas an Influx field rather than a tagFault occurrence semantics
For each
(hardware_id, device_path, fault_code), the sink stores the previous(boot_id, total counter)in memory. A positive counter delta emits onefault_occurrencepoint whoseoccurrencesfield contains the delta. The first sample, a changed boot ID, or a counter decrease establishes a new baseline and emits no occurrence.Why
Device health diagnostics contain structured fault state that should not be stored as opaque JSON fields. Normalizing them at ingestion gives Grafana stable measurements and makes malformed producer data visible early. The lean tag set preserves the physical device, logical device, and fault dimensions while avoiding redundant series dimensions.
Current assumptions requiring review
/healthand/health_statussuffixes are accepteddevice.boot_idis mandatory and counters are monotonic within that epochdevice_healthValidation
Focused tests cover valid payloads, native and stringified JSON, duplicate keys, missing required values, invalid counters, timestamp validation, consistency checks, lean Influx tags, occurrence deltas, boot changes, counter decreases, and invalid-message omission. Repository CI provides the full integration check.