groups:
  # container.* metrics
  - id: metric.container.uptime
    type: metric
    metric_name: container.uptime
    stability: experimental
    brief: "The time the container has been running"
    note: |
      Instrumentations SHOULD use a gauge with type `double` and measure uptime in seconds as a floating point number with the highest precision available.
      The actual accuracy would depend on the instrumentation and operating system.
    instrument: gauge
    unit: "s"
  # container.cpu.* metrics and attribute group
  - id: metric.container.cpu.time
    type: metric
    metric_name: container.cpu.time
    stability: experimental
    brief: "Total CPU time consumed"
    note: >
      Total CPU time consumed by the specific container on all available CPU cores
    instrument: counter
    unit: "s"
    attributes:
      - ref: cpu.mode
        brief: "The CPU mode for this data point. A container's CPU metric SHOULD be characterized _either_ by data points with no `mode` labels, _or only_ data points with `mode` labels."
        note: "Following states SHOULD be used: `user`, `system`, `kernel`"
        requirement_level:
          conditionally_required: Required if mode is available, i.e. metrics coming from the Docker Stats API.

  - id: metric.container.cpu.usage
    type: metric
    metric_name: container.cpu.usage
    stability: experimental
    brief: "Container's CPU usage, measured in cpus. Range from 0 to the number of allocatable CPUs"
    note: >
      CPU usage of the specific container on all available CPU cores, averaged over the sample window
    instrument: gauge
    unit: "{cpu}"
    attributes:
      - ref: cpu.mode
        brief: "The CPU mode for this data point. A container's CPU metric SHOULD be characterized _either_ by data points with no `mode` labels, _or only_ data points with `mode` labels."
        note: "Following states SHOULD be used: `user`, `system`, `kernel`"
        requirement_level:
          conditionally_required: Required if mode is available, i.e. metrics coming from the Docker Stats API.

  # container.memory.* metrics and attribute group
  - id: metric.container.memory.usage
    type: metric
    metric_name: container.memory.usage
    stability: experimental
    brief: "Memory usage of the container."
    note: >
      Memory usage of the container.
    instrument: counter
    unit: "By"

  # container.disk.io.* metrics and attribute group
  - id: metric.container.disk.io
    type: metric
    metric_name: container.disk.io
    stability: experimental
    brief: "Disk bytes for the container."
    note: >
      The total number of bytes read/written
      successfully (aggregated from all disks).
    instrument: counter
    unit: "By"
    attributes:
      - ref: disk.io.direction
      - ref: system.device

  # container.network.io.* metrics and attribute group
  - id: metric.container.network.io
    type: metric
    metric_name: container.network.io
    stability: experimental
    brief: "Network bytes for the container."
    note: >
      The number of bytes sent/received
      on all network interfaces
      by the container.
    instrument: counter
    unit: "By"
    attributes:
      - ref: network.io.direction
      - ref: network.interface.name
