1# bmc_health_config.json
2
3This file outlines the format for the supplemental health metric config that can
4be supplied by the platform to override the default in-code config from
5health_metric_config.cpp.
6
7The json config may have following metric types -
8
9- `CPU`
10  - This indicates the total CPU utilization.
11- `CPU_User`
12  - This indicates the user level CPU utilization.
13- `CPU_Kernel`
14  - This indicates the kernel level CPU utilization.
15- `Memory`
16  - This indicates the total memory for the system, which is a constant metric
17    and doesn't change.
18- `Memory_Available`
19  - This indicates the memory which is not used, in addition to buffered &
20    cached memory that can be made available by OS depending on need.
21- `Memory_Free`
22  - This indicates the amount of un-used memory.
23- `Memory_Shared`
24  - This indicates the amount of memory being shared between processes within
25    the system.
26- `Memory_Buffered_And_Cached`
27  - This indicates the amount of memory being used for caching and temporary
28    buffers.
29- `Storage_RW`
30  - This indicates the amount of available storage space
31- `Storage_`\<xxx>
32  - This indicates the amount of availble space for type depicted by `<xxx>` for
33    the location backed by path parameter.
34
35The metric types may have the following attributes:
36
37- `Window_size`
38  - This indicates the number of samples being used for threshold value
39    computations.
40- `Path`
41  - The path attribute is applicable to storage metrics and indicates the
42    directory path for it.
43- `Hysteresis`
44  - This indicates the percentage beyond which the metric value change (since
45    last notified) should be reported as a D-Bus signal.
46- `Threshold`
47  - The following threshold levels (with bounds) are supported.
48    - `HardShutdown_Lower`
49    - `HardShutdown_Upper`
50    - `SoftShutdown_Lower`
51    - `SoftShutdown_Upper`
52    - `PerformanceLoss_Lower`
53    - `PerformanceLoss_Upper`
54    - `Critical_Lower`
55    - `Critical_Upper`
56    - `Warning_Lower`
57    - `Warning_Upper`
58  - Threshold may have following attributes
59    - `Value`
60      - This indicates the percentage value at which specific threshold gets
61        asserted.
62        - For lower bound, the threshold gets asserted if metric value falls
63          below the specified threshold percentage value.
64        - For upper bound, the threshold gets asserted if metric value goes
65          beyond the specified threshold percentage value.
66    - `Log` -A boolean value of true/false depicts if a critical system message
67      shall be logged when threshold gets asserted.
68    - `Target`
69      - This indicates the systemd target which shall be run when the specific
70        threshold gets asserted.
71
72Example:
73
74```json
75    "CPU": {
76        "Window_size": 120,
77        "Hysteresis": 1.0,
78        "Threshold": {
79            "Critical_Upper": {
80                "Value": 90.0,
81                "Log": true,
82                "Target": ""
83            },
84            "Warning_Upper": {
85                "Value": 80.0,
86                "Log": false,
87                "Target": ""
88            }
89        }
90    }
91```
92