name: hostmetricsreceiver

labels:
  cpu:
    description: CPU number starting at 0.

  cpu.state:
    value: state
    description: Breakdown of CPU usage by type.
    enum: [idle, interrupt, nice, softirq, steal, system, user, wait]

  disk.device:
    value: device
    description: Name of the disk.

  disk.direction:
    value: direction
    description: Direction of flow of bytes/opertations (read or write).
    enum: [read, write]

  mem.state:
    value: state
    description: Breakdown of memory usage by type.
    enum: [buffered, cached, inactive, free, slab_reclaimable, slab_unreclaimable, used]

  filesystem.device:
    value: device
    description: Identifier of the filesystem.

  filesystem.mode:
    value: mode
    description: Mountpoint mode such "ro", "rw", etc.

  filesystem.mountpoint:
    value: mountpoint
    description: Mountpoint path.

  filesystem.state:
    value: state
    description: Breakdown of filesystem usage by type.
    enum: [free, reserved, used]

  filesystem.type:
    value: type
    description: Filesystem type, such as, "ext4", "tmpfs", etc.

  network.device:
    value: device
    description: Name of the network interface.

  network.direction:
    value: direction
    description: Direction of flow of bytes/opertations (receive or transmit).
    enum: [receive, transmit]

  network.protocol:
    value: protocol
    description: Network protocol, e.g. TCP or UDP.
    enum: [tcp]

  network.state:
    value: state
    description: State of the network connection.

  paging.device:
    value: device
    description: Name of the page file.

  paging.direction:
    value: direction
    description: Page In or Page Out.
    enum: [page_in, page_out]

  paging.state:
    value: state
    description: Breakdown of paging usage by type.
    enum: [cached, free, used]

  paging.type:
    value: type
    description: Type of fault.
    enum: [major, minor]

  process.direction:
    value: direction
    description: Direction of flow of bytes (read or write).
    enum: [read, write]

  process.state:
    value: state
    description: Breakdown of CPU usage by type.
    enum: [system, user, wait]

  processes.status:
    value: status
    description: Breakdown status of the processes.
    enum: [blocked, running]

metrics:
  process.cpu.time:
    description: Total CPU seconds broken down by different states.
    unit: s
    data:
      type: sum
      aggregation: cumulative
      monotonic: true
    labels: [process.state]

  process.memory.physical_usage:
    description: The amount of physical memory in use.
    unit: By
    data:
      type: int sum
      aggregation: cumulative
      monotonic: false

  process.memory.virtual_usage:
    description: Virtual memory size.
    unit: By
    data:
      type: int sum
      aggregation: cumulative
      monotonic: false

  process.disk.io:
    description: Disk bytes transferred.
    unit: By
    data:
      type: int sum
      aggregation: cumulative
      monotonic: true
    labels: [process.direction]

  system.cpu.time:
    description: Total CPU seconds broken down by different states.
    unit: s
    data:
      type: sum
      aggregation: cumulative
      monotonic: true
    labels: [cpu.state]

  system.memory.usage:
    description: Bytes of memory in use.
    unit: By
    data:
      type: int sum
      aggregation: cumulative
      monotonic: false
    labels: [mem.state]

  system.cpu.load_average.1m:
    description: Average CPU Load over 1 minute.
    unit: 1
    data:
      type: gauge

  system.cpu.load_average.5m:
    description: Average CPU Load over 5 minutes.
    unit: 1
    data:
      type: gauge

  system.cpu.load_average.15m:
    description: Average CPU Load over 15 minutes.
    unit: 1
    data:
      type: gauge

  system.disk.io:
    description: Disk bytes transferred.
    unit: By
    data:
      type: int sum
      aggregation: cumulative
      monotonic: true
    labels: [disk.device, disk.direction]

  system.disk.operations:
    description: Disk operations count.
    unit: "{operations}"
    data:
      type: int sum
      aggregation: cumulative
      monotonic: true
    labels: [disk.device, disk.direction]

  system.disk.io_time:
    description: Time disk spent activated. On Windows, this is calculated as the inverse of disk idle time.
    unit: s
    data:
      type: sum
      aggregation: cumulative
      monotonic: true
    labels: [disk.device]

  system.disk.operation_time:
    description: Time spent in disk operations.
    unit: s
    data:
      type: sum
      aggregation: cumulative
      monotonic: true
    labels: [disk.device, disk.direction]

  system.disk.weighted_io_time:
    description: Time disk spent activated multiplied by the queue length.
    unit: s
    data:
      type: sum
      aggregation: cumulative
      monotonic: true
    labels: [disk.device]

  system.disk.pending_operations:
    description: The queue size of pending I/O operations.
    unit: "{operations}"
    data:
      type: int sum
      aggregation: cumulative
      monotonic: false
    labels: [disk.device]

  system.disk.merged:
    description: The number of disk reads merged into single physical disk access operations.
    unit: "{operations}"
    data:
      type: int sum
      aggregation: cumulative
      monotonic: true
    labels: [disk.device, disk.direction]

  system.filesystem.usage:
    description: Filesystem bytes used.
    unit: By
    data:
      type: int sum
      aggregation: cumulative
      monotonic: false
    labels: [filesystem.device, filesystem.mode, filesystem.mountpoint, filesystem.type, filesystem.state]

  system.filesystem.inodes.usage:
    description: FileSystem inodes used.
    unit: "{inodes}"
    data:
      type: int sum
      aggregation: cumulative
      monotonic: false
    labels: [filesystem.device, filesystem.mode, filesystem.mountpoint, filesystem.type, filesystem.state]

  system.network.packets:
    description: The number of packets transferred.
    unit: "{packets}"
    data:
      type: int sum
      aggregation: cumulative
      monotonic: true
    labels: [network.device, network.direction]

  system.network.dropped:
    description: The number of packets dropped.
    unit: "{packets}"
    data:
      type: int sum
      aggregation: cumulative
      monotonic: true
    labels: [network.device, network.direction]

  system.network.errors:
    description: The number of errors encountered.
    unit: "{errors}"
    data:
      type: int sum
      aggregation: cumulative
      monotonic: true
    labels: [network.device, network.direction]

  system.network.io:
    description: The number of bytes transmitted and received.
    unit: "By"
    data:
      type: int sum
      aggregation: cumulative
      monotonic: true
    labels: [network.device, network.direction]

  system.network.connections:
    description: The number of connections.
    unit: "{connections}"
    data:
      type: int sum
      aggregation: cumulative
      monotonic: false
    labels: [network.protocol, network.state]

  system.paging.usage:
    description: Swap (unix) or pagefile (windows) usage.
    unit: By
    data:
      type: int sum
      aggregation: cumulative
      monotonic: false
    labels: [paging.device, paging.state]

  system.paging.operations:
    description: The number of paging operations.
    unit: "{operations}"
    data:
      type: int sum
      aggregation: cumulative
      monotonic: true
    labels: [paging.direction, paging.type]

  system.paging.faults:
    description: The number of page faults.
    unit: "{faults}"
    data:
      type: int sum
      aggregation: cumulative
      monotonic: true
    labels: [paging.type]

  system.processes.created:
    description: Total number of created processes.
    unit: "{processes}"
    data:
      type: int sum
      aggregation: cumulative
      monotonic: true

  system.processes.count:
    description: Total number of processes in each state.
    unit: "{processes}"
    data:
      type: int sum
      aggregation: cumulative
      monotonic: false
    labels: [processes.status]
