Skip to content

finkr/vcenter-exporter

 
 

Repository files navigation

vcenter-exporter

Generic vcenter exporter

This is a vcenter exporter, which collects various metrics and information from a vCenter dependent on the provided flags. The current available exporter types are:

  - custvm: exports metrics for customer vms
  - custds: exports metrics for customer datastores
  - versions: exports versions of vcenter and esx hosts

The metric names (for custvm and custds), which can be defined in the config file are a construct of different fields in counterids.
The name is a construction of: counterid.groupInfo.key + "." + counterid.nameInfo.key + "." + counterid.rollupType:
an example:

  • 'cpu.latency.average'
  • 'disk.usage.average'
  • 'mem.usage.average'
  • 'net.usage.average'
  • 'virtualDisk.read.average'
  • 'virtualDisk.totalReadLatency.average'
  • 'virtualDisk.totalWriteLatency.average' ...

### Openstack specific notes:
The custvm metrics are only collected for vms, which are in state "poweredOn" and have an annotation field (child.summary.config.annotation), which starts with "name:" otherwise
we cannot attach the openstack specific metadata to the collected metrics, which are definied in the annotation field of each vm like Openstack vm name and Openstack project id.

Labels available:

  • vmware_name
  • project_id
  • vcenter_name
  • vcenter_node
  • instance_uuid
  • datastore

## Installation


To build the Docker container:

```bash
docker build .

Usage

Command-line option:

NAME:
  vcenter-exporter.py - Prometheus vcenter exporter for vm metrics

USAGE:
  python vcenter-export.py
  --config, -c config.yaml -t exporter_type

Changelog

2017/09/20 we now use the property collector to get the vm properties instead of a view, which speeds up things quite a bit (thanks to http://www.errr-online.com/index.php/2014/10/06/using-pyvmomi-to-get-a-list-of-all-virtual-machines-fast/ and https://github.com/vmware/pyvmomi-community-samples/blob/master/samples/vminfo_quick.py for inspiration). besides that we introduced the possibility to select the vms we get metrics for via a regex over the host-system to have an easy way to split the work over multiple exporters and we introduced another regex to exclude certain vms by name (for instance test instances etc.). we did experiment a bit with multithreading as well, but the prometheus python client is not really multiprocess aware in a nice way (there is a way, but its quite complexi and ugly).

About

Prometheus vcenter exporter

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 98.8%
  • Dockerfile 1.2%