netdata/netdata

View on GitHub
src/go/collectors/go.d.plugin/modules/smartctl/metadata.yaml

Summary

Maintainability
Test Coverage
plugin_name: go.d.plugin
modules:
  - meta:
      id: collector-go.d.plugin-smartctl
      plugin_name: go.d.plugin
      module_name: smartctl
      monitored_instance:
        name: S.M.A.R.T.
        link: "https://linux.die.net/man/8/smartd"
        icon_filename: "smart.png"
        categories:
          - data-collection.hardware-devices-and-sensors
      keywords:
        - smart
        - S.M.A.R.T.
        - SCSI devices
        - ATA devices
      related_resources:
        integrations:
          list: []
      info_provided_to_referring_integrations:
        description: ""
      most_popular: false
    overview:
      data_collection:
        metrics_description: |
          This collector monitors the health status of storage devices by analyzing S.M.A.R.T. (Self-Monitoring, Analysis, and Reporting Technology) counters.
          It relies on the [`smartctl`](https://linux.die.net/man/8/smartctl) CLI tool but avoids directly executing the binary.
          Instead, it utilizes `ndsudo`, a Netdata helper specifically designed to run privileged commands securely within the Netdata environment.
          This approach eliminates the need to use `sudo`, improving security and potentially simplifying permission management.

          Executed commands:
          -  `smartctl --json --scan`
          -  `smartctl --json --all {deviceName} --device {deviceType} --nocheck {powerMode}`
        method_description: ""
      supported_platforms:
        include: []
        exclude: []
      multi_instance: false
      additional_permissions:
        description: ""
      default_behavior:
        auto_detection:
          description: ""
        limits:
          description: ""
        performance_impact:
          description: ""
    setup:
      prerequisites:
        list:
          - title: Install smartmontools (v7.0+)
            description: |
              Install `smartmontools` version 7.0 or later using your distribution's package manager. Version 7.0 introduced the `--json` output mode, which is required for this collector to function properly.
      configuration:
        file:
          name: go.d/smartctl.conf
        options:
          description: |
            The following options can be defined globally: update_every.
          folding:
            title: Config options
            enabled: true
          list:
            - name: update_every
              description: interval for updating Netdata charts, measured in seconds. Collector might use cached data if less than **Devices poll interval**.
              default_value: 10
              required: false
            - name: timeout
              description: smartctl binary execution timeout.
              default_value: 5
              required: false
            - name: scan_every
              description: interval for discovering new devices using `smartctl --scan`, measured in seconds.
              default_value: 900
              required: false
            - name: poll_devices_every
              description: interval for gathering data for every device, measured in seconds. Data is cached for this interval.
              default_value: 300
              required: false
            - name: device_selector
              description: "Specifies a pattern to match the 'info name' of devices as reported by `smartctl --scan --json`."
              default_value: "*"
              required: false
        examples:
          folding:
            title: Config
            enabled: true
          list:
            - name: Custom devices poll interval
              description: Allows you to override the default devices poll interval (data collection).
              config: |
                jobs:
                  - name: smartctl
                    devices_poll_interval: 60  # Collect S.M.A.R.T statistics every 60 seconds
    troubleshooting:
      problems:
        list: []
    alerts: []
    metrics:
      folding:
        title: Metrics
        enabled: false
      description: ""
      availability: []
      scopes:
        - name: controller
          description: These metrics refer to the Storage Device.
          labels:
            - name: device_name
              description: Device name
            - name: device_type
              description: Device type
            - name: model_name
              description: Model name
            - name: serial_number
              description: Serial number
          metrics:
            - name: smartctl.device_smart_status
              description: Device smart status
              unit: status
              chart_type: line
              dimensions:
                - name: passed
                - name: failed
            - name: smartctl.device_ata_smart_error_log_count
              description: Device ATA smart error log count
              unit: logs
              chart_type: line
              dimensions:
                - name: error_log
            - name: smartctl.device_power_on_time
              description: Device power on time
              unit: seconds
              chart_type: line
              dimensions:
                - name: power_on_time
            - name: smartctl.device_temperature
              description: Device temperature
              unit: Celsius
              chart_type: line
              dimensions:
                - name: temperature
            - name: smartctl.device_power_cycles_count
              description: Device power cycles
              unit: cycles
              chart_type: line
              dimensions:
                - name: power
            - name: smartctl.device_smart_attr_{attribute_name}
              description: Device smart attribute {attribute_name}
              unit: '{attribute_unit}'
              chart_type: line
              dimensions:
                - name: '{attribute_name}'
            - name: smartctl.device_smart_attr_{attribute_name}_normalized
              description: Device smart attribute {attribute_name} normalized
              unit: value
              chart_type: line
              dimensions:
                - name: '{attribute_name}'