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
🍷 Gracefully claim weekly free games and monthly content from Epic Store.

EPIC 免费人 🚀 优雅地领取 Epic 免费游戏 Introduction 👋 Epic AwesomeGamer 帮助玩家优雅地领取 Epic 免费游戏。 使用 「Epic免费人」可以实现如下需求: get:搬空游戏商店,获取所有常驻免费游戏与免费附加内容; claim:领取周免游戏及其免

571 Dec 28, 2022
Multiple paper open-source codes of the Microsoft Research Asia DKI group

📫 Paper Code Collection (MSRA DKI Group) This repo hosts multiple open-source codes of the Microsoft Research Asia DKI Group. You could find the corr

Microsoft 249 Jan 08, 2023
Robust and Accurate Object Detection via Self-Knowledge Distillation

Robust and Accurate Object Detection via Self-Knowledge Distillation paper:https://arxiv.org/abs/2111.07239 Environments Python 3.7 Cuda 10.1 Prepare

Weipeng Xu 6 Jul 01, 2022
Python scripts for performing stereo depth estimation using the MobileStereoNet model in ONNX

ONNX-MobileStereoNet Python scripts for performing stereo depth estimation using the MobileStereoNet model in ONNX Stereo depth estimation on the cone

Ibai Gorordo 23 Nov 29, 2022
Rax is a Learning-to-Rank library written in JAX

🦖 Rax: Composable Learning to Rank using JAX Rax is a Learning-to-Rank library written in JAX. Rax provides off-the-shelf implementations of ranking

Google 247 Dec 27, 2022
Fully Automatic Page Turning on Real Scores

Fully Automatic Page Turning on Real Scores This repository contains the corresponding code for our extended abstract Henkel F., Schwaiger S. and Widm

Florian Henkel 7 Jan 02, 2022
QilingLab challenge writeup

qiling lab writeup shielder 在 2021/7/21 發布了 QilingLab 來幫助學習 qiling framwork 的用法,剛好最近有用到,順手解了一下並寫了一下 writeup。 前情提要 Qiling 是一款功能強大的模擬框架,和 qemu user mode

Yuan 17 Nov 17, 2022
CLOOB training (JAX) and inference (JAX and PyTorch)

cloob-training Pretrained models There are two pretrained CLOOB models in this repo at the moment, a 16 epoch and a 32 epoch ViT-B/16 checkpoint train

Katherine Crowson 64 Nov 27, 2022
Tensorflow implementation of "Learning Deep Features for Discriminative Localization"

Weakly_detector Tensorflow implementation of "Learning Deep Features for Discriminative Localization" B. Zhou, A. Khosla, A. Lapedriza, A. Oliva, and

Taeksoo Kim 363 Jun 29, 2022
Code for ICCV 2021 paper Graph-to-3D: End-to-End Generation and Manipulation of 3D Scenes using Scene Graphs

Graph-to-3D This is the official implementation of the paper Graph-to-3d: End-to-End Generation and Manipulation of 3D Scenes Using Scene Graphs | arx

Helisa Dhamo 33 Jan 06, 2023
This script scrapes and stores the availability of timeslots for Car Driving Test at all RTA Serivce NSW centres in the state.

This script scrapes and stores the availability of timeslots for Car Driving Test at all RTA Serivce NSW centres in the state. Dependencies Account wi

Balamurugan Soundararaj 21 Dec 14, 2022
Unified Pre-training for Self-Supervised Learning and Supervised Learning for ASR

UniSpeech The family of UniSpeech: UniSpeech (ICML 2021): Unified Pre-training for Self-Supervised Learning and Supervised Learning for ASR UniSpeech-

Microsoft 282 Jan 09, 2023
Predicting a person's gender based on their weight and height

Logistic Regression Advanced Case Study Gender Classification: Predicting a person's gender based on their weight and height 1. Introduction We turn o

1 Feb 01, 2022
SymmetryNet: Learning to Predict Reflectional and Rotational Symmetries of 3D Shapes from Single-View RGB-D Images

SymmetryNet SymmetryNet: Learning to Predict Reflectional and Rotational Symmetries of 3D Shapes from Single-View RGB-D Images ACM Transactions on Gra

26 Dec 05, 2022
An Exact Solver for Semi-supervised Minimum Sum-of-Squares Clustering

PC-SOS-SDP: an Exact Solver for Semi-supervised Minimum Sum-of-Squares Clustering PC-SOS-SDP is an exact algorithm based on the branch-and-bound techn

Antonio M. Sudoso 1 Nov 13, 2022
領域を指定し、キーを入力することで画像を保存するツールです。クラス分類用のデータセット作成を想定しています。

image-capture-class-annotation 領域を指定し、キーを入力することで画像を保存するツールです。 クラス分類用のデータセット作成を想定しています。 Requirement OpenCV 3.4.2 or later Usage 実行方法は以下です。 起動後はマウスクリック4

KazuhitoTakahashi 5 May 28, 2021
Code for "NeRS: Neural Reflectance Surfaces for Sparse-View 3D Reconstruction in the Wild," in NeurIPS 2021

Code for Neural Reflectance Surfaces (NeRS) [arXiv] [Project Page] [Colab Demo] [Bibtex] This repo contains the code for NeRS: Neural Reflectance Surf

Jason Y. Zhang 234 Dec 30, 2022
This repository contains the reference implementation for our proposed Convolutional CRFs.

ConvCRF This repository contains the reference implementation for our proposed Convolutional CRFs in PyTorch (Tensorflow planned). The two main entry-

Marvin Teichmann 553 Dec 07, 2022
Image-based Navigation in Real-World Environments via Multiple Mid-level Representations: Fusion Models Benchmark and Efficient Evaluation

Image-based Navigation in Real-World Environments via Multiple Mid-level Representations: Fusion Models Benchmark and Efficient Evaluation This reposi

First Person Vision @ Image Processing Laboratory - University of Catania 1 Aug 21, 2022
Continuous Time LiDAR odometry

CT-ICP: Elastic SLAM for LiDAR sensors This repository implements the SLAM CT-ICP (see our article), a lightweight, precise and versatile pure LiDAR o

385 Dec 29, 2022