Lines Matching +full:- +full:- +full:-

7 - Pawel Rapkiewicz <pawel.rapkiewicz@intel.com> `pawelr`
8 - Kamil Kowalski <kamil.kowalski@intel.com>
10 Created: 2019-08-07
21 - OpenBMC platform telemetry shall leverage DMTF's [Redfish Telemetry Model][1]
23 - OpenBMC platform telemetry shall leverage the [OpenBMC sensors architecture
25 - OpenBMC platform telemetry shall implement a service, called Telemetry to deal
28 - Although we use the [hwmon][3] to gather readings from physical sensors, this
30 relies on the [OpenBMC D-Bus sensors][2].
34 - [OpenBMC D-Bus sensors][2] support. This is also design limitation, since the
35 Telemetry service requires telemetry sources to be implemented as D-Bus
43 - Metric Definitions - contains the metadata for metrics (unit, accuracy, etc.)
44 - Metric Report Definitions - defines how metric report shall be created (which
46 - Metric Reports - contains actual metric reports containing telemetry data
48 - Metric Triggers - contains thresholds and actions that apply to specific
54 +--------------+ +----------------+ +-----------------+
56 +-----/ | +------------/ | +---------/ |
57 | +--filesystem---> | | |
59 +--------------+ +--------^-------+ +--------^--------+
62 <------------------------------------------v-----^--DBus----------v----------->
65 +-------+---------------------------------------------------------------------+
67 +-------/ | |
69 | +--------+-------------------------------------v--------------------------+ |
71 | +--------/ +---------+-------+ | |
73 | | +------------------------------------------------+ |Redfish | | | |
75 | | +----------------+/ | +---------/ | | |
76 | | | +----------+ +-----------+ +-------------+ | | +---------+ | | |
78 | | | | triggers | |definitions| |definitions <---------+ sensors | | | |
80 | | | +----+-----+ +-----+-----+ +------+------+ | | +---------+ | | |
84 | | | | +-----v-----+ | | | | | |
86 | | | +--------> report <---------+ | | | | |
88 | | | +-----------+ | | | | |
90 | | +------------------------------------------------+ +-----------------+ | |
92 | +-------------------------------------------------------------------------+ |
94 +-----------------------------------------------------------------------------+
99 URIs for metric report creation. Those sensors are also used to get URI->D-Bus
102 D-Bus sensors and exposing them as D-Bus objects. Telemetry service supports
106 - SINGLE - current reading value
107 - AVERAGE - average value over defined time period
108 - MAX - max reading value during defined time period
109 - MIN - min reading value during defined time period
110 - SUM - sum of reading values over defined time period
122 +----+ +------+ +---------+ +-------+
123 |User| |bmcweb| |Telemetry| | D-Bus |
124 +-+--+ +--+---+ +----+----+ |Sensors|
125 | | | +---+---+
127 +-----------------------------------------------------------------------------+
129 +-----------------------------+ | | |
136 | +--------------------> Invoke AddReport | Register for D-Bus | |
137 | | | method on D-Bus | sensors | |
138 | | +-----------------------> PropertiesChanged | |
140 | | | +--------------------------> |
141 | | | |--------------------------> |
142 | | | +--------------------------> |
144 | | HTTP response | +-+Create Report | |
145 | | code 201 with | Return created | |D-Bus object | |
146 | | Metric Report | Report D-Bus path <-+ | |
147 | | Definition's URI <-----------------------+ | |
148 | <--------------------+ | | |
151 +-----------------------------------------------------------------------------+
153 +-----------------------------------------------------------------------------+
155 +----------------------------------+ +-+Metric report | |
157 | | | <-+report update | |
159 +----------------------------------Optional-----------------------------------+
161 | | Send report as SSE or push-style event | | |
164 | <--------------------------------------------+ | |
166 +-----------------------------------------------------------------------------+
168 | | Report URI | | Sensor's Properties- | |
169 | +--------------------> | Changed signal | |
170 | | +-+Map report's URI <--------------------------+ |
171 | | | |to D-Bus path | | |
172 | | <-+ | +----------------------+ | |
174 | | | on report D-Bus | |PropertiesChanged | | |
176 | | +-----------------------> |to metric report timer| | |
179 | | report in JSON <-----------------------+ |metric report update | | |
180 | | format | | +----------------------+ | |
181 | <--------------------+ | | |
183 +-----------------------------------------------------------------------------+
185 +-----------------------------------------------------------------------------+
186 |On change metric report update flow| | Sensor's Properties- | |
187 +-----------------------------------+ | Changed signal | |
188 | | | <--------------------------+ |
190 | | | +-+Sensor's signal | |
192 | | | <-+update | |
194 +----------------------------------Optional-----------------------------------+
196 | | Send report as SSE or push-style event | | |
199 | <--------------------------------------------+ | |
201 +-----------------------------------------------------------------------------+
204 | +--------------------> | | |
205 | | +-+Map report's URI | | |
206 | | | |to D-Bus path | +----------------------+ | |
207 | | <-+ | |Note that sensor's | | |
209 | | | on report D-Bus | |signal triggers the | | |
211 | | +-----------------------> |sufficient that the | | |
214 | | report in JSON <-----------------------+ |update. | | |
215 | | format | | +----------------------+ | |
216 | <--------------------+ | | |
218 +-----------------------------------------------------------------------------+
220 +-+--------------------+------------------------------------------------------+
222 +-+--------------------+------------+ | | |
226 | +--------------------> | | |
227 | | +-+Map report's URI | | |
228 | | | |to D-Bus path | | |
229 | | <-+ | | |
233 | | | D-Bus object | | |
234 | | +-----------------------> | |
235 | | | +-+Update method triggers | |
240 | | | <-+readings are performed. | |
241 +----------------------------------Optional-----------------------------------+
243 | | Send report as SSE or push-style event | | |
246 | <--------------------------------------------+ | |
248 +-----------------------------------------------------------------------------+
251 | | <-----------------------+ | |
254 | | | on report D-Bus | | |
256 | | +-----------------------> | |
259 | | report in JSON <-----------------------+ | |
261 | <--------------------+ | | |
263 +-----------------------------------------------------------------------------+
269 service. Sending metric report as SSE or push-style events shall be done via the
275 are updated on PropertiesChanged signal from the D-Bus sensors.
277 ### Telemetry service on [D-Bus][4]
279 Telemetry service exposes specific interfaces on D-Bus. One of them will be used
285 The reading report management D-Bus object:
292 The `ReportManager` implements D-Bus interface
294 interface is described in the phosphor-dbus-interfaces. This interface
314 The trigger management D-Bus object:
330---------------- | ------------------- | ---------------------------------------------------------…
331 …iscrete trigger condition: <br> "Changed" - trigger occurs when value of metric has changed; <br> …
337 | --------- | ------- | ---------------------------------------------------------------------------…
339 | Severity | enum | Severity: <br> "OK" - normal<br> "Warning" - requires attention<br> "Critic…
349-------------- | ------- | -----------------------------------------------------------------------…
350- reading is above normal range and requires immediate attention<br>"UpperWarning" - reading is ab…
352- trigger action when reading is changing from below to above the threshold's value<br> "Decreasin…
364---------- | ----------- | -----------------------------------------------------------------------…
365 | SensorPath | object path | D-Bus path to sensor, for which trigger is defined. …
367 | ReportPath | object path | D-Bus path to Telemetry's reading report which update shall be trigger…
370 trigger shall be stored in the BMC's non-volatile memory).
375 String for created trigger - ie. '/xyz/openbmc_project/Telemetry/Triggers/{Domain}/{Name}'
380 read-only information about metric type, for which it was created (discrete or
388------------------- | ----------------------------------------------------------------------------…
389 …Discrete trigger condition: <br> "Changed" - trigger occurs when value of metric has changed;<br>"…
395 | ------- | ---------------------------------------------------------------------------------------…
397 | enum | Severity: <br> "OK" - normal<br>"Warning" - requires attention<br> "Critical" - require…
405 | ------- | ---------------------------------------------------------------------------------------…
415----------- | ------------------------------------------------------------------------------------…
416 | object path | D-Bus path of sensor. This is a path to the sensor, for which reading trigger is de…
418 | object path | D-Bus path of existing reading report. This is required when trigger's action is to…
431 +---------------------------+
432 |bmcweb| | +----------------------+
433 +------/ +-----------+-+ | |Telemetry| |
434 | |Redfish | | | +---------/ |
436 | +-----------/ | | | |
439 | +------^------+ | +-----------+----------+
440 +---------------------------+ |
442 +----collect----+ event
445 +------------------------------------+ |
447 +-------/ +----------+ +---+------+ | |
449 | +-------/ <--> <-------+
450 | | | +----------+ |
453 | +----------+ |
455 +------------------------------------+
459 Event Service][6] either as push-style event or SSE.
462 report pointed by it's D-Bus path contained in trigger object properties. The
463 update shall cause the reading report's D-Bus object to emit property change
475 - TelemetryService 1.1.2
476 - MetricDefinition 1.0.3
477 - MetricReportDefinition 1.3.0
478 - MetricReport 1.2.0
479 - Triggers 1.1.1
484 +----------------------------------------------------------------------------+
486 +----------------------------------+-------------------------------+---------+
490 +----------------------------------v-----------------+ +----------v---------+
494 | | | +---------------+ |
495 +---------+--------------+------------------+--------+ | | | |
498 | | | | +---------+-----+ |
500 +----------v--+ +--------v----+ +----------v-----+ +--------------------+
503 | | | +---------+ | | | Reads |
504 | +---------+ | | |Reading | | | +-----------+ | ReadingVolts +--v------+
505 | | | | | |Volts <------+ +------------------> |
506 | |Trigger 1| | | +---------+ | | | Metric | | | |
508 | | | | | +---------+ | | | | | PowerConsumed | |
510 | +--+---+--+ | | |Power <------+ +------------------> |
511 | | | | | |Consumed | | | +-----^-----+ | +----^----+
513 | | | | | +---------+ | | | | |
515 +-------------+ +-------------+ +----------------+ |
519 | +--------------------------------+ |
523 +------------------------------------------------------------------+
530 Telemetry is gathering D-Bus sensors readings and exposing them in reading
531 reports over D-Bus for the Telemetry Service. Each D-Bus sensor is mapped to
620 "Timestamp": "2016-11-08T12:25:00-05:00",
682 | --------------------------------------------- | ------ | ---- | ------ |
688 | 10 reports, 10 sensors (same for each report) | 5320 B | 1% | 1-2% |
690 | 30 reports, 30 sensors (10 per report) | 5444 B | 1% | 5-9% |
691 | 50 reports, 50 sensors (10 per report) | 5572 B | 1% | 11-14% |
706 - Collectd's footprint in the minimal working configuration is around 2.6 MB,
708 - In this design, librrd is used to store metrics on the BMC's non-volatile
710 to OpenBMC's limited storage space. Also flash wear-out issue may occur, when
712 - Telemetry service is directly compatible with Redfish Telemetry Service API,
715 - Telemetry service unifies the way how the BMC's telemetry is exposed over the
716 Redfish and may be used with multiple front-ends, thus there is no problem to
724 +-----------------+ +-----------------+
725 | D-Bus sensors | | Telemetry |
726 +--------^--------+ +--------^--------+
730 <--------^--v-----------D-Bus--------v-^---------->
734 +-------v------------+ +----------v--------+
736 | exposed as D-Bus | | bmcweb |
738 +---------^----------+ | Telemetry |
741 +------+-------+ +-------------------+
745 +--------------+
749 the D-Bus sensors, which can easily be consumed either by the bmcweb and
750 Telemetry service without any changes in their D-Bus interfaces. In such
767 This is the very high-level description of the proposed set of tests. Testing
770 - Unit tests
771 - Functional tests
772 - Performance tests
780 according to test-driven development principle. Unit tests shall be also
790 The required configuration for such test is D-Bus sensors (at least some of
792 performed on real hardware. For ease of metric testing, dummy D-Bus sensors may
812 https://github.com/openbmc/docs/blob/master/architecture/sensor-architecture.md
819 …https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/yaml/xyz/openbmc_project/Telemetry…
821 …https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/yaml/xyz/openbmc_project/Telemetry…
823 …https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/yaml/xyz/openbmc_project/Object/De…