Exporter for Storage Area Network (SAN)

Overview

SAN Exporter

license CI Docker Pulls Code size

Prometheus exporter for Storage Area Network (SAN).

We all know that each SAN Storage vendor has their own glossary of terms, health/performance metrics and monitoring tool.

But from operator view,

  • We normally focus on some main metrics which are similar on different storage platform.
  • We are not only monitoring SAN storage but also other devices and services at multi-layer (application, virtual Machine, hypervisor, operating system and physical).

That's why we build this to have an unified monitoring/alerting solution with Prometheus and Alermanager.

Architecture overview

SAN exporter architecture

Features

There are some main features you might want to know, for others, please see example configuration.

  • Enable/disable optinal metrics for each backend
  • Enable/disable backend
  • Backend will automatically stop collecting data from SAN system after timeout seconds from last request of client. With this feature, we can deploy two instances as Active/Passive mode for high availability.

Note: Backend may not respond metrics in the first interval while collecting, calculating and caching metrics.

Quick start

  • Start a dummy driver with Docker
$ git clone [email protected]:vCloud-DFTBA/san_exporter.git
$ cd san_exporter/
$ cp examples/dummy_config.yml config.yml
# docker run --rm -p 8888:8888 -v $(pwd)/config.yml:/san-exporter/config.yml --name san-exporter daikk115/san-exporter:0.1.0

See the result at http://localhost:8888/dummy_backend

  • Start a dummy driver manually
$ git clone [email protected]:vCloud-DFTBA/san_exporter.git
$ cd san_exporter/
$ cp examples/dummy_config.yml config.yml
$ sudo apt-get install libxml2-dev libxslt1-dev python3.7-dev
$ pip3 install -r requirements.txt
$ python3.7 manage.py

See the result at http://localhost:8888/dummy_backend

Deployment

Create configuration file

# mkdir /root/san-exporter
# cp /path/to/san_exporter/examples/config.yml.sample /root/san-exporter/config.yml

Update /root/san-exporter/config.yml for corresponding to SAN storage

Run new container

# docker volume create san-exporter
# docker run -d -p 8888:8888 -v san-exporter:/var/log/ -v /root/san-exporter/config.yml:/san-exporter/config.yml --name san-exporter daikk115/san-exporter:latest

Supported Drivers

  • Matrix of driver's generic metrics
Capacity all Capacity pool IOPS/Throuhgput pool Latency pool IOPS/Throughput node Latency node CPU node RAM node IOPS/Throughput LUN Latency LUN IOPS/Throughput disk Latency disk IOPS/Throughput port Latency port Alert
HPMSA X X X X X X X X
DellUnity X X X X X X X X X X
HitachiG700 X X X
HPE3Par X X X X X X X X
NetApp X X X X X X
SC8000 X X X X X X X X X X X
V7k X X X X X X
  • Connection port requirements
    • For some SAN system, we collect metrics over SP API but some others, we collect metrics dirrectly from controller API.
    • In some special cases, we collect alerts over SSH.
SAN System Service Processor Connection Port
HPMSA NO 443
Dell Unity NO 443
Hitachi G700 YES 23451
IBM V7000 NO #TODO
IBM V5000 NO #TODO
HPE 3PAR YES #TODO
NetApp ONTAP NO 443
SC8000 NO 3033

Metrics

All metrics are prefixed with "san_" and has at least 2 labels: backend_name and san_ip

Info metrics:

Metrics name Type Help
san_storage_info gauge Basic information: serial, version, ...

Controller metrics:

Metrics name Type Help
san_totalNodes gauge Total nodes
san_masterNodes gauge Master nodes
san_onlineNodes gauge Online nodes
san_compress_support gauge Compress support, 1 = Yes, 0 = No
san_thin_provision_support gauge Thin provision support, 1 = Yes, 0 = No
san_system_reporter_support gauge System reporter support, 1 = Yes, 0 = No
san_qos_support gauge QoS support, 1 = Yes, 0 = No
san_totalCapacityMiB gauge Total system capacity in MiB
san_allocatedCapacityMiB gauge Total allocated capacity in MiB
san_freeCapacityMiB gauge Total free capacity in MiB
san_cpu_system_utilization gauge The average percentage of time that the processors on nodes are busy doing system I/O tasks
san_cpu_compression_utilization gauge The approximate percentage of time that the processor core was busy with data compression tasks
san_cpu_total gauge The cpus spent in each mode

Pool metrics:

Metrics name Type Help
san_pool_totalLUNs gauge Total LUNs (or Volumes)
san_pool_total_capacity_mib gauge Total capacity of pool in MiB
san_pool_free_capacity_mib gauge Free of pool in MiB
san_pool_provisioned_capacity_mib gauge Provisioned of pool in MiB
san_pool_number_read_io gauge Read I/O Rate - ops/s
san_pool_number_write_io gauge Write I/O Rate - ops/s
san_pool_read_cache_hit gauge Read Cache Hits - %
san_pool_write_cache_hit gauge Write Cache Hits - %
san_pool_read_kb gauge gauge Read Data Rate - KiB/s
san_pool_write_kb gauge Write Data Rate - KiB/s
san_pool_read_service_time_ms gauge Read Response Time - ms/op
san_pool_write_service_time_ms gauge Write Response Time - ms/op
san_pool_read_IOSize_kb gauge Read Transfer Size - KiB/op
san_pool_write_IOSize_kb gauge Write Transfer Size - KiB/op
san_pool_queue_length gauge Queue length of pool

Port metrics:

Metrics name Type Help
san_port_number_read_io gauge Port Read I/O Rate - ops/s
san_port_number_write_io gauge Port Write I/O Rate - ops/s
san_port_write_kb gauge Port Write Data Rate - KiB/s
san_port_read_kb gauge Port Read Data Rate - KiB/s
san_port_write_IOSize_kb gauge Port Write Transfer Size - KiB/op
san_port_read_IOSize_kb gauge Port Read Transfer Size - KiB/op
san_port_queue_length gauge Queue length of port

For more information about specific metrics of SANs, see Specific SAN Metrics

Integrate with Prometheus, Alertmanager and Grafana

Some grafana images:

SAN exporter dashboard overview

SAN exporter dashboard pool

SAN exporter dashboard port

You might also like...
Web mining module for Python, with tools for scraping, natural language processing, machine learning, network analysis and visualization.
Web mining module for Python, with tools for scraping, natural language processing, machine learning, network analysis and visualization.

Pattern Pattern is a web mining module for Python. It has tools for: Data Mining: web services (Google, Twitter, Wikipedia), web crawler, HTML DOM par

Neurolab is a simple and powerful Neural Network Library for Python

Neurolab Neurolab is a simple and powerful Neural Network Library for Python. Contains based neural networks, train algorithms and flexible framework

A scikit-learn compatible neural network library that wraps PyTorch

A scikit-learn compatible neural network library that wraps PyTorch. Resources Documentation Source Code Examples To see more elaborate examples, look

Visualizer for neural network, deep learning, and machine learning models
Visualizer for neural network, deep learning, and machine learning models

Netron is a viewer for neural network, deep learning and machine learning models. Netron supports ONNX (.onnx, .pb, .pbtxt), Keras (.h5, .keras), Tens

Graph neural network message passing reframed as a Transformer with local attention

Adjacent Attention Network An implementation of a simple transformer that is equivalent to graph neural network where the message passing is done with

data/code repository of "C2F-FWN: Coarse-to-Fine Flow Warping Network for Spatial-Temporal Consistent Motion Transfer"

C2F-FWN data/code repository of "C2F-FWN: Coarse-to-Fine Flow Warping Network for Spatial-Temporal Consistent Motion Transfer" (https://arxiv.org/abs/

Simple command line tool for text to image generation using OpenAI's CLIP and Siren (Implicit neural representation network)
Simple command line tool for text to image generation using OpenAI's CLIP and Siren (Implicit neural representation network)

Deep Daze mist over green hills shattered plates on the grass cosmic love and attention a time traveler in the crowd life during the plague meditative

End-to-End Object Detection with Fully Convolutional Network
End-to-End Object Detection with Fully Convolutional Network

This project provides an implementation for "End-to-End Object Detection with Fully Convolutional Network" on PyTorch.

TensorFlow-based neural network library
TensorFlow-based neural network library

Sonnet Documentation | Examples Sonnet is a library built on top of TensorFlow 2 designed to provide simple, composable abstractions for machine learn

Comments
  • Support purestorage please!

    Support purestorage please!

    Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

    Describe the solution you'd like A clear and concise description of what you want to happen.

    Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

    Additional context Add any other context or screenshots about the feature request here. Can you support purestorage?

    opened by wanbeepeto 0
Releases(v0.8.0)
  • v0.8.0(Aug 17, 2021)

    • Release notes:
      • Add Dell Unnity driver
      • Add Hitachi G700 driver
      • Add HPE 3PAR driver
      • Add HPMSA driver
      • Add NetApp ONTAP driver
      • Add Dell SC800 driver
      • Add IBM V7000 driver
    • Docker image: daikk115/san-exporter:0.8.0
    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Aug 15, 2021)

Owner
vCloud
Not Only vCloud - Don’t Forget To Be Awesome
vCloud
A Comparative Review of Recent Kinect-Based Action Recognition Algorithms (TIP2020, Matlab codes)

A Comparative Review of Recent Kinect-Based Action Recognition Algorithms This repo contains: the HDG implementation (Matlab codes) for 'Analysis and

Lei Wang 5 Oct 22, 2022
💡 Type hints for Numpy

Type hints with dynamic checks for Numpy! (❒) Installation pip install nptyping (❒) Usage (❒) NDArray nptyping.NDArray lets you define the shape and

Ramon Hagenaars 377 Dec 28, 2022
Implementation of Bagging and AdaBoost Algorithm

Bagging-and-AdaBoost Implementation of Bagging and AdaBoost Algorithm Dataset Red Wine Quality Data Sets For simplicity, we will have 2 classes of win

Zechen Ma 1 Nov 01, 2021
Vehicle detection using machine learning and computer vision techniques for Udacity's Self-Driving Car Engineer Nanodegree.

Vehicle Detection Video demo Overview Vehicle detection using these machine learning and computer vision techniques. Linear SVM HOG(Histogram of Orien

hata 1.1k Dec 18, 2022
A generalist algorithm for cell and nucleus segmentation.

Cellpose | A generalist algorithm for cell and nucleus segmentation. Cellpose was written by Carsen Stringer and Marius Pachitariu. To learn about Cel

MouseLand 733 Dec 29, 2022
Official implementation for "Symbolic Learning to Optimize: Towards Interpretability and Scalability"

Symbolic Learning to Optimize This is the official implementation for ICLR-2022 paper "Symbolic Learning to Optimize: Towards Interpretability and Sca

VITA 8 Dec 19, 2022
This application is the basic of automated online-class-joiner(for YıldızEdu) within the right time. Gets the ZOOM link by scheduled date and time.

This application is the basic of automated online-class-joiner(for YıldızEdu) within the right time. Gets the ZOOM link by scheduled date and time.

215355 1 Dec 16, 2021
PyTorch Implementation of Small Lesion Segmentation in Brain MRIs with Subpixel Embedding (ORAL, MICCAIW 2021)

Small Lesion Segmentation in Brain MRIs with Subpixel Embedding PyTorch implementation of Small Lesion Segmentation in Brain MRIs with Subpixel Embedd

22 Oct 21, 2022
Stacked Generative Adversarial Networks

Stacked Generative Adversarial Networks This repository contains code for the paper "Stacked Generative Adversarial Networks", CVPR 2017. Part of the

Xun Huang 241 May 07, 2022
PyTorch implementation of residual gated graph ConvNets, ICLR’18

Residual Gated Graph ConvNets April 24, 2018 Xavier Bresson http://www.ntu.edu.sg/home/xbresson https://github.com/xbresson https://twitter.com/xbress

Xavier Bresson 112 Aug 10, 2022
EasyMocap is an open-source toolbox for markerless human motion capture from RGB videos.

EasyMocap is an open-source toolbox for markerless human motion capture from RGB videos. In this project, we provide the basic code for fitt

ZJU3DV 2.2k Jan 05, 2023
Our implementation used for the MICCAI 2021 FLARE Challenge titled 'Efficient Multi-Organ Segmentation Using SpatialConfiguartion-Net with Low GPU Memory Requirements'.

Efficient Multi-Organ Segmentation Using SpatialConfiguartion-Net with Low GPU Memory Requirements Our implementation used for the MICCAI 2021 FLARE C

Franz Thaler 3 Sep 27, 2022
OOD Dataset Curator and Benchmark for AI-aided Drug Discovery

🔥 DrugOOD 🔥 : OOD Dataset Curator and Benchmark for AI Aided Drug Discovery This is the official implementation of the DrugOOD project, this is the

108 Dec 17, 2022
Deep learning library for solving differential equations and more

DeepXDE Voting on whether we should have a Slack channel for discussion. DeepXDE is a library for scientific machine learning. Use DeepXDE if you need

Lu Lu 1.4k Dec 29, 2022
KoRean based ELECTRA pre-trained models (KR-ELECTRA) for Tensorflow and PyTorch

KoRean based ELECTRA (KR-ELECTRA) This is a release of a Korean-specific ELECTRA model with comparable or better performances developed by the Computa

12 Jun 03, 2022
Code for paper PairRE: Knowledge Graph Embeddings via Paired Relation Vectors.

PairRE Code for paper PairRE: Knowledge Graph Embeddings via Paired Relation Vectors. This implementation of PairRE for Open Graph Benchmak datasets (

Alipay 65 Dec 19, 2022
Codes for "Solving Long-tailed Recognition with Deep Realistic Taxonomic Classifier"

Deep-RTC [project page] This repository contains the source code accompanying our ECCV 2020 paper. Solving Long-tailed Recognition with Deep Realistic

Gina Wu 16 May 26, 2022
Code for Ditto: Building Digital Twins of Articulated Objects from Interaction

Ditto: Building Digital Twins of Articulated Objects from Interaction Zhenyu Jiang, Cheng-Chun Hsu, Yuke Zhu CVPR 2022, Oral Project | arxiv News 2022

UT Robot Perception and Learning Lab 78 Dec 22, 2022
An all-in-one application to visualize multiple different local path planning algorithms

Table of Contents Table of Contents Local Planner Visualization Project (LPVP) Features Installation/Usage Local Planners Probabilistic Roadmap (PRM)

Abdur Javaid 47 Dec 30, 2022
PyElecCL - Electron Monte Carlo Second Checks

PyElecCL Python program to perform second checks for electron Monte Carlo radiat

Reese Haywood 3 Feb 22, 2022