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
Denoising images with Fourier Ring Correlation loss

Denoising images with Fourier Ring Correlation loss The python code accompanies the working manuscript Image quality measurements and denoising using

2 Mar 12, 2022
Conjugated Discrete Distributions for Distributional Reinforcement Learning (C2D)

Conjugated Discrete Distributions for Distributional Reinforcement Learning (C2D) Code & Data Appendix for Conjugated Discrete Distributions for Distr

1 Jan 11, 2022
Short and long time series classification using convolutional neural networks

time-series-classification Short and long time series classification via convolutional neural networks In this project, we present a novel framework f

35 Oct 22, 2022
Code release for "Making a Bird AI Expert Work for You and Me".

Making-a-Bird-AI-Expert-Work-for-You-and-Me Code release for "Making a Bird AI Expert Work for You and Me". arxiv (Coming soon...) Changelog 2021/12/6

PRIS-CV: Computer Vision Group 11 Dec 11, 2022
Deep learning model, heat map, data prepo

deep learning model, heat map, data prepo

Pamela Dekas 1 Jan 14, 2022
Covid19-Forecasting - An interactive website that tracks, models and predicts COVID-19 Cases

Covid-Tracker This is an interactive website that tracks, models and predicts CO

Adam Lahmadi 1 Feb 01, 2022
Mengzi Pretrained Models

中文 | English Mengzi 尽管预训练语言模型在 NLP 的各个领域里得到了广泛的应用,但是其高昂的时间和算力成本依然是一个亟需解决的问题。这要求我们在一定的算力约束下,研发出各项指标更优的模型。 我们的目标不是追求更大的模型规模,而是轻量级但更强大,同时对部署和工业落地更友好的模型。

Langboat 424 Jan 04, 2023
Unsupervised phone and word segmentation using dynamic programming on self-supervised VQ features.

Unsupervised Phone and Word Segmentation using Vector-Quantized Neural Networks Overview Unsupervised phone and word segmentation on speech data is pe

Herman Kamper 13 Dec 11, 2022
Learning Temporal Consistency for Low Light Video Enhancement from Single Images (CVPR2021)

StableLLVE This is a Pytorch implementation of "Learning Temporal Consistency for Low Light Video Enhancement from Single Images" in CVPR 2021, by Fan

99 Dec 19, 2022
Multivariate Time Series Forecasting with efficient Transformers. Code for the paper "Long-Range Transformers for Dynamic Spatiotemporal Forecasting."

Spacetimeformer Multivariate Forecasting This repository contains the code for the paper, "Long-Range Transformers for Dynamic Spatiotemporal Forecast

QData 440 Jan 02, 2023
Decompose to Adapt: Cross-domain Object Detection via Feature Disentanglement

Decompose to Adapt: Cross-domain Object Detection via Feature Disentanglement In this project, we proposed a Domain Disentanglement Faster-RCNN (DDF)

19 Nov 24, 2022
Panoptic SegFormer: Delving Deeper into Panoptic Segmentation with Transformers

Panoptic SegFormer: Delving Deeper into Panoptic Segmentation with Transformers Results results on COCO val Backbone Method Lr Schd PQ Config Download

155 Dec 20, 2022
Real-Time High-Resolution Background Matting

Real-Time High-Resolution Background Matting Official repository for the paper Real-Time High-Resolution Background Matting. Our model requires captur

Peter Lin 6.1k Jan 03, 2023
Evaluating Cross-lingual Sentence Representations

XNLI: The Cross-Lingual NLI Corpus XNLI is an evaluation corpus for language transfer and cross-lingual sentence classification in 15 languages. New:

Meta Research 395 Dec 19, 2022
implement of SwiftNet:Real-time Video Object Segmentation

SwiftNet The official PyTorch implementation of SwiftNet:Real-time Video Object Segmentation, which has been accepted by CVPR2021. Requirements Python

haochen wang 64 Dec 14, 2022
RGB-stacking 🛑 🟩 🔷 for robotic manipulation

RGB-stacking 🛑 🟩 🔷 for robotic manipulation BLOG | PAPER | VIDEO Beyond Pick-and-Place: Tackling Robotic Stacking of Diverse Shapes, Alex X. Lee*,

DeepMind 95 Dec 23, 2022
This is the replication package for paper submission: Towards Training Reproducible Deep Learning Models.

This is the replication package for paper submission: Towards Training Reproducible Deep Learning Models.

0 Feb 02, 2022
This toolkit provides codes to download and pre-process the SLUE datasets, train the baseline models, and evaluate SLUE tasks.

slue-toolkit We introduce Spoken Language Understanding Evaluation (SLUE) benchmark. This toolkit provides codes to download and pre-process the SLUE

ASAPP Research 39 Sep 21, 2022
Seasonal Contrast: Unsupervised Pre-Training from Uncurated Remote Sensing Data

Seasonal Contrast: Unsupervised Pre-Training from Uncurated Remote Sensing Data This is the official PyTorch implementation of the SeCo paper: @articl

ElementAI 101 Dec 12, 2022
Nonnegative spatial factorization for multivariate count data

Nonnegative spatial factorization for multivariate count data This repository contains supporting code to facilitate reproducible analysis. For detail

Will Townes 24 Dec 19, 2022