diff --git a/packages/opentelemetry-host-metrics/README.md b/packages/opentelemetry-host-metrics/README.md
index f613fba2a6..46952bd1a3 100644
--- a/packages/opentelemetry-host-metrics/README.md
+++ b/packages/opentelemetry-host-metrics/README.md
@@ -32,13 +32,47 @@ const exporter = new PrometheusExporter(
}
);
-const meterProvider = new MeterProvider();
-meterProvider.addMetricReader(exporter);
+const meterProvider = new MeterProvider({
+ readers: [reader],
+});
const hostMetrics = new HostMetrics({ meterProvider, name: 'example-host-metrics' });
hostMetrics.start();
```
+## Semantic Conventions
+
+This package uses Semantic Conventions [Version 1.25.0](https://github.com/open-telemetry/semantic-conventions/tree/v1.25.0/docs/system).
+As for now the Semantic Conventions are bundled in this package but eventually will be imported from `@opentelemetry/semantic-conventions` package when it is updated to latest version.
+Ref: [opentelemetry-js/issues/4235](https://github.com/open-telemetry/opentelemetry-js/issues/4235)
+
+Metrics collected:
+
+| Metric | Short Description |
+| --------------------------- | --------------------------------------------------------- |
+| `system.cpu.time` | Seconds each logical CPU spent on each mode |
+| `system.cpu.utilization` | CPU usage time (0-1) |
+| `system.memory.usage` | Reports memory in use by state |
+| `system.memory.utilization` | Memory usage (0-1) |
+| `system.network.dropped` | Count of packets that are dropped |
+| `system.network.errors` | Count of network errors detected |
+| `system.network.io` | Network flow direction |
+| `process.cpu.time` | Total CPU seconds |
+| `process.cpu.utilization` | Difference in process.cpu.time since the last measurement |
+| `process.memory.usage` | The amount of physical memory in use |
+
+Attributes collected:
+
+| Metric | Short Description |
+| --------------------------- | ---------------------------------- |
+| `system.cpu.logical_number` | The logical CPU number |
+| `system.cpu.state` | The state of the CPU |
+| `system.memory.state` | The memory state |
+| `system.device` | The device identifier |
+| `network.io.direction` | The network IO operation direction |
+| `system.network.state` | The network state |
+| `process.cpu.state` | The CPU state |
+
## Useful links
- For more information on OpenTelemetry, visit:
diff --git a/packages/opentelemetry-host-metrics/src/enum.ts b/packages/opentelemetry-host-metrics/src/enum.ts
index acfe4adc05..19e4efbda4 100644
--- a/packages/opentelemetry-host-metrics/src/enum.ts
+++ b/packages/opentelemetry-host-metrics/src/enum.ts
@@ -32,11 +32,9 @@ export enum ATTRIBUTE_NAMES {
SYSTEM_CPU_STATE = 'system.cpu.state',
SYSTEM_MEMORY_STATE = 'system.memory.state',
SYSTEM_DEVICE = 'system.device',
- SYSTEM_NETWORK_DIRECTION = 'system.network.direction',
+ NETWORK_IO_DIRECTION = 'network.io.direction',
SYSTEM_NETWORK_STATE = 'system.network.state',
- // TODO: change value if semconv changes
- // https://github.com/open-telemetry/opentelemetry-specification/issues/3776
- PROCESS_CPU_STATE = 'state',
+ PROCESS_CPU_STATE = 'process.cpu.state',
}
export enum CPU_LABELS {
diff --git a/packages/opentelemetry-host-metrics/src/metric.ts b/packages/opentelemetry-host-metrics/src/metric.ts
index 2604e95d00..b117ce4307 100644
--- a/packages/opentelemetry-host-metrics/src/metric.ts
+++ b/packages/opentelemetry-host-metrics/src/metric.ts
@@ -151,7 +151,7 @@ export class HostMetrics extends BaseMetrics {
networkUsages: NetworkData[]
): void {
const deviceAttr = enums.ATTRIBUTE_NAMES.SYSTEM_DEVICE;
- const directionAttr = enums.ATTRIBUTE_NAMES.SYSTEM_NETWORK_DIRECTION;
+ const directionAttr = enums.ATTRIBUTE_NAMES.NETWORK_IO_DIRECTION;
for (let i = 0, j = networkUsages.length; i < j; i++) {
const networkUsage = networkUsages[i];
diff --git a/packages/opentelemetry-host-metrics/src/util.ts b/packages/opentelemetry-host-metrics/src/util.ts
index e26b0f7610..05a6622c30 100644
--- a/packages/opentelemetry-host-metrics/src/util.ts
+++ b/packages/opentelemetry-host-metrics/src/util.ts
@@ -14,6 +14,6 @@
* limitations under the License.
*/
-export function ObjectKeys(t: T) {
+export function ObjectKeys>(t: T) {
return Object.keys(t) as (keyof T)[];
}
diff --git a/packages/opentelemetry-host-metrics/test/metric.test.ts b/packages/opentelemetry-host-metrics/test/metric.test.ts
index 196e74e702..ef89a8c53b 100644
--- a/packages/opentelemetry-host-metrics/test/metric.test.ts
+++ b/packages/opentelemetry-host-metrics/test/metric.test.ts
@@ -141,8 +141,9 @@ describe('Host Metrics', () => {
reader = new TestMetricReader();
- meterProvider = new MeterProvider();
- meterProvider.addMetricReader(reader);
+ meterProvider = new MeterProvider({
+ readers: [reader],
+ });
hostMetrics = new HostMetrics({
meterProvider,
@@ -169,7 +170,7 @@ describe('Host Metrics', () => {
const sysCpuNumAttr = ATTRIBUTE_NAMES.SYSTEM_CPU_LOGICAL_NUMBER;
const sysMemStateAttr = ATTRIBUTE_NAMES.SYSTEM_MEMORY_STATE;
const sysDeviceAttr = ATTRIBUTE_NAMES.SYSTEM_DEVICE;
- const sysNetDirAttr = ATTRIBUTE_NAMES.SYSTEM_NETWORK_DIRECTION;
+ const sysNetDirAttr = ATTRIBUTE_NAMES.NETWORK_IO_DIRECTION;
const procCpuStateAttr = ATTRIBUTE_NAMES.PROCESS_CPU_STATE;
it('should export CPU time metrics', async () => {