Git Product home page Git Product logo

snap-plugin-collector-smart's Introduction

DISCONTINUATION OF PROJECT.

This project will no longer be maintained by Intel.

This project has been identified as having known security escapes.

Intel has ceased development and contributions including, but not limited to, maintenance, bug fixes, new releases, or updates, to this project.

Intel no longer accepts patches to this project.

DISCONTINUATION OF PROJECT

This project will no longer be maintained by Intel. Intel will not provide or guarantee development of or support for this project, including but not limited to, maintenance, bug fixes, new releases or updates. Patches to this project are no longer accepted by Intel. If you have an ongoing need to use this project, are interested in independently developing it, or would like to maintain patches for the community, please create your own fork of the project.

Deprecation Notice

No new development is planned for this plugin and its support is "best effort".

For SMART statistics checkout https://github.com/intelsdi-x/snap-plugin-collector-pysmart

For Intel P3700 series SSD's checkout: https://github.com/intelsdi-x/snap-plugin-collector-pciessd

snap collector plugin - SMART

This plugin monitors storage systems from Intel's SSDs. Raw data interpretation is based on State Drive DC S3700 Series specification. Other disks may have different attributes or different raw data formats.

  1. Getting Started
  1. Documentation
  1. Community Support
  2. Contributing
  3. License
  4. Acknowledgements

Getting Started

Plugin directly reads underlying device parameters using ioctl(2)

System Requirements

Operating systems

All OSs currently supported by plugin:

  • Linux/amd64

Configuration and Usage

Enable SMART support in BIOS

Installation

Download SMART plugin binary:

You can get the pre-built binaries for your OS and architecture at Snap's GitHub Releases page.

To build the plugin binary:

Fork https://github.com/intelsdi-x/snap-plugin-collector-smart

Clone repo into $GOPATH/src/github.com/intelsdi-x/:

$ git clone https://github.com/<yourGithubID>/snap-plugin-collector-smart.git

Build the plugin by running make within the cloned repo:

$ make

This builds the plugin in /build/

Documentation

Collected Metrics

List of collected metrics is described in METRICS.md.

Roadmap

There isn't a current roadmap for this plugin, but it is in active development. As we launch this plugin, we do not have any outstanding requirements for the next release. If you have a feature request, please add it as an issue and/or submit a pull request.

Community Support

This repository is one of many plugins in Snap, a powerful telemetry framework. See the full project at http://github.com/intelsdi-x/snap To reach out to other users, head to the main framework or visit Slack.

Contributing

We love contributions

There's more than one way to give back, from examples to blogs to code updates. See our recommended process in CONTRIBUTING.md.

License

Snap, along with this plugin, is an Open Source software released under the Apache 2.0 License.

Acknowledgements

And thank you! Your contribution, through code and participation, is incredibly important to us.

snap-plugin-collector-smart's People

Contributors

andrzej-k avatar candysmurf avatar geauxvirtual avatar ircody avatar izabellaraulin avatar jcooklin avatar katarzyna-z avatar kindermoumoute avatar lmroz avatar marcin-krolik avatar marcintao avatar nanliu avatar nguyenddn avatar rdower avatar taotod avatar zhengqingyuan avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

snap-plugin-collector-smart's Issues

Gathered SMART metrics can be nil

Due to the code here unrelevant nil valued metrics are sent downstream the workflow
and I think this is not necessary.

The list of returned metrics should be built incerementally with only non nil valued metrics returned

The metrics exposed should be dynamic (not static)

Like for any other plugin where there is a list of similar "devices" to get information from (CPU, disks, processe, ...) metrics should be exposed as dynamic not static

Note that this also gets impacted by issue #19

Currently working on a tentative fix for both

smart plugin returns error if nothing is collected

If you are running on a system where no disk can be detected or no smart data is available (like in a kvm based virtual machine), the plugin returns error even though it should return empty list

I already have tested a patch for this which will soon be pushed as a formal PR

Path to procfs is not configurable

The path to procfs is currently hardcoded to /proc. This makes it hard (if even possible) to use the plugin when snapd is run in a Docker container.

Missing metric `/intel/disk/smart/*/wearout/number`

Metric /intel/disk/smart/*/wearout/number is not available

Question

Does availability of this metric depend on system/hardware?
Notice, that the rest of metrics are available, only this one is missing.

=== START OF INFORMATION SECTION ===
Model Family: Intel 730 and DC S3500/S3700 Series SSDs
Device Model: INTEL SSDSC2BP240G4
Serial Number: BTJR41160E27240AGN
LU WWN Device Id: 5 5cd2e4 04b5e7a0d
Firmware Version: L2010420
User Capacity: 240,057,409,536 bytes [240 GB]
Sector Size: 512 bytes logical/physical
Rotation Rate: Solid State Device
Form Factor: 2.5 inches
Device is: In smartctl database [for details use: -P show]
ATA Version is: ATA8-ACS T13/1699-D revision 4
SATA Version is: SATA 2.6, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is: Thu Dec 1 14:06:03 2016 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

cc: @lmroz

Metric names seem inconsistent compared to other plugins

When looking at the current set of metrics exposed on a system, we get:

/intel/disk/<DISK>/smart/availablereservedspace
/intel/disk/<DISK>/smart/availablereservedspace/normalized
/intel/disk/<DISK>/smart/casetemperature
/intel/disk/<DISK>/smart/casetemperature/max
/intel/disk/<DISK>/smart/casetemperature/min
/intel/disk/<DISK>/smart/casetemperature/normalized
/intel/disk/<DISK>/smart/casetemperature/overcounter
/intel/disk/<DISK>/smart/crcerrors
/intel/disk/<DISK>/smart/crcerrors/normalized
/intel/disk/<DISK>/smart/e2eerrors
/intel/disk/<DISK>/smart/e2eerrors/normalized
/intel/disk/<DISK>/smart/erasefailcount
/intel/disk/<DISK>/smart/erasefailcount/normalized
/intel/disk/<DISK>/smart/hostwrites
/intel/disk/<DISK>/smart/hostwrites/normalized
/intel/disk/<DISK>/smart/internaltemperature
/intel/disk/<DISK>/smart/internaltemperature/normalized
/intel/disk/<DISK>/smart/pendingsectors
/intel/disk/<DISK>/smart/pendingsectors/normalized
/intel/disk/<DISK>/smart/powercyclecount
/intel/disk/<DISK>/smart/powercyclecount/normalized
/intel/disk/<DISK>/smart/powerlossprotectionfailure
/intel/disk/<DISK>/smart/powerlossprotectionfailure/normalized
/intel/disk/<DISK>/smart/powerlossprotectionfailure/sincelast
/intel/disk/<DISK>/smart/powerlossprotectionfailure/tests
/intel/disk/<DISK>/smart/poweronhours
/intel/disk/<DISK>/smart/poweronhours/normalized
/intel/disk/<DISK>/smart/programfailcount
/intel/disk/<DISK>/smart/programfailcount/normalized
/intel/disk/<DISK>/smart/reallocatedsectors
/intel/disk/<DISK>/smart/reallocatedsectors/normalized
/intel/disk/<DISK>/smart/reservedblocks
/intel/disk/<DISK>/smart/reservedblocks/normalized
/intel/disk/<DISK>/smart/satadownshifts
/intel/disk/<DISK>/smart/satadownshifts/normalized
/intel/disk/<DISK>/smart/thermalthrottle
/intel/disk/<DISK>/smart/thermalthrottle/eventcount
/intel/disk/<DISK>/smart/thermalthrottle/normalized
/intel/disk/<DISK>/smart/timedworkload/mediawear
/intel/disk/<DISK>/smart/timedworkload/mediawear/normalized
/intel/disk/<DISK>/smart/timedworkload/readpercent
/intel/disk/<DISK>/smart/timedworkload/readpercent/normalized
/intel/disk/<DISK>/smart/timedworkload/time
/intel/disk/<DISK>/smart/timedworkload/time/normalized
/intel/disk/<DISK>/smart/totallba/read
/intel/disk/<DISK>/smart/totallba/read/normalized
/intel/disk/<DISK>/smart/totallba/written
/intel/disk/<DISK>/smart/totallba/written/normalized
/intel/disk/<DISK>/smart/uncorrectableerrors
/intel/disk/<DISK>/smart/uncorrectableerrors/normalized
/intel/disk/<DISK>/smart/unexpectedpowerloss
/intel/disk/<DISK>/smart/unexpectedpowerloss/normalized
/intel/disk/<DISK>/smart/unsafeshutdowns
/intel/disk/<DISK>/smart/unsafeshutdowns/normalized
/intel/disk/<DISK>/smart/wearout
/intel/disk/<DISK>/smart/wearout/normalized

Wouldn't it be more coherent to have:

  1. /intel/disk/smart/ as the prefix (exchange rank of smart and in namespace and add /device/ intermediate element)
  2. remove all other extra levels to keep only a 5 levels namespace and rewrite metrics like
...
/intel/disk/smart/device/<DISK>/total_lba_read
/intel/disk/smart/device/<DISK>/total_lba_read_normalized
/intel/disk/smart/device/<DISK>/total_lba_written
/intel/disk/smart/device/<DISK>/total_lba_written_normalized
...
/intel/disk/smart/device/<DISK>/unsafe_shutdowns
/intel/disk/smart/device/<DISK>/unsafe_shutdowns_normalized
...

Thanks for your comments

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.