---
rules:
  - bean: Hadoop:service=NameNode,name=FSNamesystem
    unit: "1"
    prefix: hadoop.
    metricAttribute:
      node_name: param(tag.Hostname)
    mapping:
      CapacityUsed:
        metric: capacity.CapacityUsed
        type: updowncounter
        unit: By
        desc: Current used capacity across all data nodes
      CapacityTotal:
        metric: capacity.CapacityTotal
        type: updowncounter
        unit: By
      BlocksTotal:
        metric: block.BlocksTotal
        type: updowncounter
        unit: "{blocks}"
        desc: Current number of allocated blocks in the system
      MissingBlocks:
        metric: block.MissingBlocks
        type: updowncounter
        unit: "{blocks}"
        desc: Current number of missing blocks
      CorruptBlocks:
        metric: block.CorruptBlocks
        type: updowncounter
        unit: "{blocks}"
        desc: Current number of blocks with corrupt replicas
      VolumeFailuresTotal:
        metric: volume.VolumeFailuresTotal
        type: updowncounter
        unit: "{volumes}"
        desc: Total number of volume failures across all data nodes
        metricAttribute:
          direction: const(sent)
      FilesTotal:
        metric: file.FilesTotal
        type: updowncounter
        unit: "{files}"
        desc: Current number of files and directories
      TotalLoad:
        metric: file.TotalLoad
        type: updowncounter
        unit: "{operations}"
        desc: Current number of connections
      NumLiveDataNodes:
        metric: datenode.Count
        type: updowncounter
        unit: "{nodes}"
        desc: The Number of data nodes
        metricAttribute:
          state: const(live)
      NumDeadDataNodes:
        metric: datenode.Count
        type: updowncounter
        unit: "{nodes}"
        desc: The Number of data nodes
        metricAttribute:
          state: const(dead)
