Expose switch attributes in Prometheus component (#35216)
parent
61c08e792d
commit
acfd907c50
|
@ -152,6 +152,20 @@ class PrometheusMetrics:
|
|||
)
|
||||
metric.labels(**self._labels(state)).inc()
|
||||
|
||||
def _handle_attributes(self, state):
|
||||
for key, value in state.attributes.items():
|
||||
metric = self._metric(
|
||||
f"{state.domain}_attr_{key.lower()}",
|
||||
self.prometheus_cli.Gauge,
|
||||
f"{key} attribute of {state.domain} entity",
|
||||
)
|
||||
|
||||
try:
|
||||
value = float(value)
|
||||
metric.labels(**self._labels(state)).set(value)
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
def _metric(self, metric, factory, documentation, labels=None):
|
||||
if labels is None:
|
||||
labels = ["entity", "friendly_name", "domain"]
|
||||
|
@ -368,6 +382,8 @@ class PrometheusMetrics:
|
|||
except ValueError:
|
||||
pass
|
||||
|
||||
self._handle_attributes(state)
|
||||
|
||||
def _handle_zwave(self, state):
|
||||
self._battery(state)
|
||||
|
||||
|
|
Loading…
Reference in New Issue