Linux Device Component
The Linux Device component facilitates the attainment of system metrics on the target that Edge Xrt is executing on.
The Device component supports the following:
- Acquirement of CPU, Disk I/O, Memory, Network Interface, and Network I/O system statistics.
- Statistics are obtained at a specified interval in units of milliseconds.
- Metrics are published on a specified topic.
Linux Device Configuration
The following table describes the configuration variables that can be used with the Linux Device component:
Parameter | Type | Description | Valid Values | Required |
---|---|---|---|---|
Bus | String | The name of the Bus component to use | The name of an existing Bus component | Y |
Logger | String | The name of the Logger component to use | The name of an existing Logger component | N |
ThreadPool | String | The name of the ThreadPool component to use | The name of an existing Threadpool component | Y |
Scheduler | String | The name of the Scheduler component to use | The name of an existing Scheduler component | Y |
Schedules | Object | Contains the Schedules configuration for the Device | The Device Schedules configuration
For further information, see the table below |
Y |
Schedules Fields
The Schedules fields are described in the following table:
Parameter | Type | Description | Valid Values |
---|---|---|---|
Interval | Unsigned Integer | Obtain metrics at given interval | Interval in milliseconds |
Topic | String | The topic to publish on | A valid topic name |
SeparateEvents | Boolean | If True, all specified metrics published in a single message
If False, each specified metric is published individually |
Boolean value |
Sync | Boolean | If True, push data immediately to the subscriber
If False, schedule delivery using a pool thread |
Boolean value |
Metrics | Array of Strings | Enable specified metrics |
Valid values are as follows:
|
IOTech provides the following template, you can update this to meet your requirements:
{
"Library": "libxrt-linux-device.so",
"Factory": "xrt_linux_device_factory",
"Bus": "bus",
"Scheduler":"sched",
"ThreadPool":"pool",
"Schedules": [
{ "Interval": 250, "Metrics": ["CPU", "Memory"], "Topic": "device/metrics1", "SeparateEvents": false, "Sync": true},
{ "Interval": 500, "Metrics": ["NetworkIO", "CPU"], "Topic": "device/metrics2", "SeparateEvents": true},
{ "Interval": 1000, "Metrics": ["DiskIO"], "Topic": "device/metrics3", "SeparateEvents": false, "Sync": true},
{ "Interval": 5000, "Metrics": ["NetworkInterface"], "Topic": "device/metrics4", "SeparateEvents": false},
{ "Interval": 10000, "Metrics": ["Memory", "CPU", "DiskIO"], "Topic": "device/metrics5", "SeparateEvents": true}
],
"Logger":"logger"
}