Prometheus Proxmox VE Exporter
==============================
|Build Status| |Package Version|
This is an exporter that exposes information gathered from Proxmox VE
node for use by the Prometheus monitoring system.
Installation
------------
Requires Python 3.9 or better.
Using pip:
==========
.. code:: shell
python3 -m pip install prometheus-pve-exporter
pve_exporter --help
Using docker:
=============
.. code:: shell
docker pull prompve/prometheus-pve-exporter
Example: Display usage message:
.. code:: shell
docker run -it --rm prompve/prometheus-pve-exporter --help
Example: Run the image with a mounted configuration file and published port:
.. code:: shell
docker run --init --name prometheus-pve-exporter -d -p 127.0.0.1:9221:9221 -v /path/to/pve.yml:/etc/prometheus/pve.yml prompve/prometheus-pve-exporter
Prometheus PVE Exporter will now be reachable at http://localhost:9221/.
Usage
-----
::
usage: pve_exporter [-h] [--collector.status | --no-collector.status]
[--collector.version | --no-collector.version]
[--collector.node | --no-collector.node]
[--collector.cluster | --no-collector.cluster]
[--collector.resources | --no-collector.resources]
[--collector.config | --no-collector.config]
[--collector.replication | --no-collector.replication]
[--config.file CONFIG_FILE]
[--web.listen-address WEB_LISTEN_ADDRESS]
[--server.keyfile SERVER_KEYFILE]
[--server.certfile SERVER_CERTFILE]
options:
-h, --help show this help message and exit
--config.file CONFIG_FILE
Path to config file (/etc/prometheus/pve.yml)
--web.listen-address WEB_LISTEN_ADDRESS
Address on which to expose metrics and web server.
([::]:9221)
--server.keyfile SERVER_KEYFILE
SSL key for server
--server.certfile SERVER_CERTFILE
SSL certificate for server
cluster collectors:
cluster collectors are run if the url parameter cluster=1 is set and
skipped if the url parameter cluster=0 is set on a scrape url.
--collector.status, --no-collector.status
Exposes Node/VM/CT-Status
--collector.version, --no-collector.version
Exposes PVE version info
--collector.node, --no-collector.node
Exposes PVE node info
--collector.cluster, --no-collector.cluster
Exposes PVE cluster info
--collector.resources, --no-collector.resources
Exposes PVE resources info
node collectors:
node collectors are run if the url parameter node=1 is set and skipped if
the url parameter node=0 is set on a scrape url.
--collector.config, --no-collector.config
Exposes PVE onboot status
--collector.replication, --no-collector.replication
Exposes PVE replication info
Use `[::]` in the `--web.listen-address` flag in order to bind to both IPv6 and
IPv4 sockets on dual stacked machines.
Visit http://localhost:9221/pve?target=1.2.3.4&cluster=1&node=1 where 1.2.3.4
is the IP of the Proxmox VE node to get metrics from. Specify the ``module``
request parameter, to choose which module to use from the config file.
The ``target`` request parameter defaults to ``localhost``. Hence if
``pve_exporter`` is deployed directly on the proxmox host, ``target``
can be omitted.
Use the `--collector.X` / `--no-collector.X` flags to enable disable selected
collectors.
Note that that the config collector results in one API call per guest VM/CT.
It is therefore recommended to disable this collector using the
`--no-collector.config` flag on big deployments.
See the wiki_ for more examples and docs.
Exported Metrics
----------------
Here's an example of the metrics exported.
::
# HELP pve_up Node/VM/CT-Status is online/running
# TYPE pve_up gauge
pve_up{id="node/proxmox"} 1.0
pve_up{id="qemu/100"} 1.0
# HELP pve_disk_size_bytes Storage size in bytes (for type 'storage'), root image size for VMs (for types 'qemu' and 'lxc').
# TYPE pve_disk_size_bytes gauge
pve_disk_size_bytes{id="qemu/100"} 6.8719476736e+010
pve_disk_size_bytes{id="node/proxmox"} 3.1044079616e+010
pve_disk_size_bytes{id="storage/proxmox/local"} 3.1044079616e+010
pve_disk_size_bytes{id="storage/proxmox/local-lvm"} 6.9243764736e+010
pve_disk_size_bytes{id="storage/proxmox/vms"} 1.934882766848e+012
# HELP pve_disk_usage_bytes Used disk space in bytes (for type 'storage'), used root image space for VMs (for types 'qemu' and 'lxc').
# TYPE pve_disk_usage_bytes gauge
pve_disk_usage_bytes{id="qemu/100"} 0.0
pve_disk_usage_bytes{id="node/proxmox"} 1.7571426304e+010
pve_disk_usage_bytes{id="storage/proxmox/local"} 1.7571426304e+010
pve_disk_usage_bytes{id="storage/proxmox/local-lvm"} 6.619703908e+09
pve_disk_usage_bytes{id="storage/proxmox/vms"} 8.32870981632e+011
# HELP pve_memory_size_bytes Number of available memory in bytes (for types 'node', 'qemu' and 'lxc').
# TYPE pve_memory_size_bytes gauge
pve_memory_size_bytes{id="qemu/100"} 1.7179869184e+010
pve_memory_size_bytes{id="node/proxmox"} 6.739961856e+010
# HELP pve_memory_usage_bytes Used memory in bytes (for types 'node', 'qemu' and 'lxc').
# TYPE pve_memory_usage_bytes gauge
pve_memory_usage_bytes{id="qemu/100"} 1.6573280275e+010
pve_memory_usage_bytes{id="node/proxmox"} 5.3907812352e+010
# HELP pve_network_transmit_bytes The amount of traffic in bytes that was sent from the guest over the network since it was started. (for types 'qemu' and 'lxc')
# TYPE pve_network_transmit_bytes gauge
pve_network_transmit_bytes{id="qemu/100"} 7.75070828e+09
# HELP pve_network_receive_bytes The amount of traffic in bytes that was sent to the guest over the network since it was started. (for types 'qemu' and 'lxc')
# TYPE pve_network_receive_bytes gauge
pve_network_receive_bytes{id="qemu/100"} 1.529756162e+09
# HELP pve_disk_write_bytes The amount of bytes the guest wrote to its block devices since the guest was started. This info is not available for all storage types. (for types 'qemu' and 'lxc')
# TYPE pve_disk_write_bytes gauge
pve_disk_write_bytes{id="qemu/100"} 1.50048127488e+011
# HELP pve_disk_read_bytes The amount of bytes the guest read from its block devices since the guest was started. This info is not available for all storage types. (for types 'qemu' and 'lxc')
# TYPE pve_disk_read_bytes gauge
pve_disk_read_bytes{id="qemu/100"} 7.473739264e+09
# HELP pve_cpu_usage_ratio CPU utilization (for types 'node', 'qemu' and 'lxc').
# TYPE pve_cpu_usage_ratio gauge
pve_cpu_usage_ratio{id="qemu/100"} 0.105009724408557
pve_cpu_usage_ratio{id="node/proxmox"} 0.984243806697115
# HELP pve_cpu_usage_limit Number of available CPUs (for types 'node', 'qemu' and 'lxc').
# TYPE pve_cpu_usage_limit gauge
pve_cpu_usage_limit{id="qemu/100"} 1.0
pve_cpu_usage_limit{id="node/proxmox"} 4.0
# HELP pve_uptime_seconds Uptime of node or virtual guest in seconds (for types 'node', 'qemu' and 'lxc').
# TYPE pve_uptime_seconds gauge
pve_uptime_seconds{id="qemu/100"} 315039.0
pve_uptime_seconds{id="node/proxmox"} 315069.0
# HELP pve_storage_shared Whether or not the storage is shared among cluster nodes
# TYPE pve_storage_shared gauge
pve_storage_shared{id="storage/proxmox/local"} 0.0
pve_storage_shared{id="storage/proxmox/local-lvm"} 0.0
pve_storage_shared{id="storage/proxmox/vms"} 0.0
# HELP pve_guest_info VM/CT info
# TYPE pve_guest_info gauge
pve_guest_info{id="qemu/100",name="samplevm1",node="proxmox",type="qemu",tags="tag1;tag2"} 1.0
# HELP pve_storage_info Storage info
# TYPE pve_storage_info gauge
pve_storage_info{id="storage/proxmox/local",node="proxmox",storage="local"} 1.0
pve_storage_info{id="storage/proxmox/local-lvm",node="proxmox",storage="local-lvm"} 1.0
pve_storage_info{id="storage/proxmox/vms",node="proxmox",storage="vms"} 1.0
# HELP pve_node_info Node info
# TYPE pve_node_info gauge
pve_node_info{id="node/proxmox",level="",name="proxmox",nodeid="0"} 1.0
# HELP pve_onboot_status Proxmox vm config onboot value
# TYPE pve_onboot_status gauge
pve_onboot_status{id="qemu/201",node="proxmox",type="qemu"} 1.0
# HELP pve_version_info Proxmox VE version info
# TYPE pve_version_info gauge
pve_version_info{release="7.1",repoid="6fe299a0",version="7.1-5"} 1.0
# HELP pve_replication_duration_seconds Proxmox vm replication duration
# TYPE pve_replication_duration_seconds gauge
pve_replication_duration_seconds{id="1-0"} 7.73584
# HELP pve_replication_last_sync_timestamp_seconds Proxmox vm replication last_sync
# TYPE pve_replication_last_sync_timestamp_seconds gauge
pve_replication_last_sync_timestamp_seconds{id="1-0"} 1.713382503e+09
# HELP pve_replication_last_try_timestamp_seconds Proxmox vm replication last_try
# TYPE pve_replication_last_try_timestamp_seconds gauge
pve_replication_last_try_timestamp_seconds{id="1-0"} 1.713382503e+09
# HELP pve_replication_next_sync_timestamp_seconds Proxmox vm replication next_sync
# TYPE pve_replication_next_sync_timestamp_seconds gauge
pve_replication_next_sync_timestamp_seconds{id="1-0"} 1.7134689e+09
# HELP pve_replication_failed_syncs Proxmox vm replication fail_count
# TYPE pve_replication_failed_syncs gauge
pve_replication_failed_syncs{id="1-0"} 0.0
# HELP pve_replication_info Proxmox vm replication info
# TYPE pve_replication_info gauge
pve_replication_info{guest="qemu/1",id="1-0",source="node/proxmox1",target="node/proxmox2",type="local"} 1.0
Authentication
--------------
**Using pve.yml config file**
Example ``pve.yml`` for password authentication:
.. code:: yaml
default:
user: prometheus@pve
password: sEcr3T!
# Optional: set to false to skip SSL/TLS verification
verify_ssl: true
Example ``pve.yml`` for `token authentication`_:
.. code:: yaml
default:
user: prometheus@pve
token_name: "your-token-id"
token_value: "..."
**Using environment variables:**
If the ``PVE_USER`` environment variable exists, then configuration is taken from
the environment instead of from the ``pve.yml`` config file. The following
environment variables are respected:
* ``PVE_USER``: user name
Required for password authentication:
* ``PVE_PASSWORD``: user password
Required for `token authentication`_:
* ``PVE_TOKEN_NAME``: token name
* ``PVE_TOKEN_VALUE``: token value
Optional:
* ``PVE_VERIFY_SSL``: Either ``true`` or ``false``, whether or not to verify PVE tls
certificate. Defaults to ``true``.
* ``PVE_MODULE``: Name of the configuration module. Defaults to ``default``.
The configuration is passed directly into `proxmoxer.ProxmoxAPI()`_.
**Note on verify_ssl and certificate trust store:**
When operating PVE with self-signed certificates, then it is necessary to
either import the certificate into the local trust store (see this `SE answer`_
for Debian/Ubuntu) or add ``verify_ssl: false`` to the config dict as a sibling
to the credentials. Note that PVE `supports Let's Encrypt`_ out ouf the box. In
many cases setting up trusted certificates is the better option than operating
with self-signed certs.
Proxmox VE Configuration
------------------------
For security reasons it is essential to add a user with read-only access
(PVEAuditor role) for the purpose of metrics collection.
Refer to the `Proxmox Documentation`_ for the several ways of creating a user.
Once created, assign the user the `/` path permission.
Prometheus Configuration
------------------------
The PVE exporter can be deployed either directly on a Proxmox VE node or
onto a separate machine.
Example config for PVE exporter running on PVE node:
.. code:: yaml
scrape_configs:
- job_name: 'pve'
static_configs:
- targets:
- 192.168.1.2:9221 # Proxmox VE node with PVE exporter.
- 192.168.1.3:9221 # Proxmox VE node with PVE exporter.
metrics_path: /pve
params:
module: [default]
cluster: ['1']
node: ['1']
Example config for PVE exporter running on Prometheus host:
.. code:: yaml
scrape_configs:
- job_name: 'pve'
static_configs:
- targets:
- 192.168.1.2 # Proxmox VE node.
- 192.168.1.3 # Proxmox VE node.
metrics_path: /pve
params:
module: [default]
cluster: ['1']
node: ['1']
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 127.0.0.1:9221 # PVE exporter.
**Note on alerting:**
You can do VM tag based alerting, by using joins on ``pve_guest_info`` metric. For
example, alerting only when VM with `critical` tag is down:
.. code:: promql
(pve_guest_info{tags=~".*critical.*"} * on(id) group_left(name) pve_up{}) == 0
**Note on scraping large clusters:**
It is adviced to setup separate jobs to collect ``cluster`` metrics and
``node`` metrics in larger deployments. Scraping any node in a cluster with the
url params set to ``cluster=1&node=0`` results in the same set of metrics. Hence
cluster metrics can be scraped efficiently from a single node or from a subset
of cluster nodes (e.g., a different node selected on every scrape via
round-robin DNS).
Node metrics can only be scraped from a given node. In order to compile a
complete set of node metrics it is necessary to scrape every node in a cluster
with url params set to ``cluster=0&node=1``.
Grafana Dashboards
------------------
* `Proxmox via Prometheus by Pietro Saccardi`_
.. |Build Status| image:: https://github.com/prometheus-pve/prometheus-pve-exporter/actions/workflows/ci.yml/badge.svg
:target: https://github.com/prometheus-pve/prometheus-pve-exporter/actions/workflows/ci.yml
.. |Package Version| image:: https://img.shields.io/pypi/v/prometheus-pve-exporter.svg
:target: https://pypi.python.org/pypi/prometheus-pve-exporter
.. _wiki: https://github.com/prometheus-pve/prometheus-pve-exporter/wiki
.. _`token authentication`: https://pve.proxmox.com/wiki/User_Management#pveum_tokens
.. _`proxmoxer.ProxmoxAPI()`: https://pypi.python.org/pypi/proxmoxer
.. _`SE answer`: https://askubuntu.com/a/1007236
.. _`supports Let's Encrypt`: https://pve.proxmox.com/pve-docs/pve-admin-guide.html#sysadmin_certificate_management
.. _`Proxmox Documentation`: https://pve.proxmox.com/pve-docs/pve-admin-guide.html#pveum_permission_management
.. _`Proxmox via Prometheus by Pietro Saccardi`: https://grafana.com/grafana/dashboards/10347-proxmox-via-prometheus/
Raw data
{
"_id": null,
"home_page": null,
"name": "prometheus-pve-exporter",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "prometheus, exporter, network, monitoring, proxmox",
"author": null,
"author_email": "Lorenz Schori <lo@znerol.ch>",
"download_url": "https://files.pythonhosted.org/packages/e7/a6/975f7c017d55bb38ba4b5daab65cce58edda472470f409755f60b7bd49fd/prometheus_pve_exporter-3.4.7.tar.gz",
"platform": null,
"description": "Prometheus Proxmox VE Exporter\n==============================\n\n|Build Status| |Package Version|\n\nThis is an exporter that exposes information gathered from Proxmox VE\nnode for use by the Prometheus monitoring system.\n\nInstallation\n------------\n\nRequires Python 3.9 or better.\n\nUsing pip:\n==========\n\n.. code:: shell\n\n python3 -m pip install prometheus-pve-exporter\n pve_exporter --help\n\nUsing docker:\n=============\n\n.. code:: shell\n\n docker pull prompve/prometheus-pve-exporter\n\nExample: Display usage message:\n\n.. code:: shell\n\n docker run -it --rm prompve/prometheus-pve-exporter --help\n\n\nExample: Run the image with a mounted configuration file and published port:\n\n.. code:: shell\n\n docker run --init --name prometheus-pve-exporter -d -p 127.0.0.1:9221:9221 -v /path/to/pve.yml:/etc/prometheus/pve.yml prompve/prometheus-pve-exporter\n\nPrometheus PVE Exporter will now be reachable at http://localhost:9221/.\n\nUsage\n-----\n\n::\n\n usage: pve_exporter [-h] [--collector.status | --no-collector.status]\n [--collector.version | --no-collector.version]\n [--collector.node | --no-collector.node]\n [--collector.cluster | --no-collector.cluster]\n [--collector.resources | --no-collector.resources]\n [--collector.config | --no-collector.config]\n [--collector.replication | --no-collector.replication]\n [--config.file CONFIG_FILE]\n [--web.listen-address WEB_LISTEN_ADDRESS]\n [--server.keyfile SERVER_KEYFILE]\n [--server.certfile SERVER_CERTFILE]\n\n options:\n -h, --help show this help message and exit\n --config.file CONFIG_FILE\n Path to config file (/etc/prometheus/pve.yml)\n --web.listen-address WEB_LISTEN_ADDRESS\n Address on which to expose metrics and web server.\n ([::]:9221)\n --server.keyfile SERVER_KEYFILE\n SSL key for server\n --server.certfile SERVER_CERTFILE\n SSL certificate for server\n\n cluster collectors:\n cluster collectors are run if the url parameter cluster=1 is set and\n skipped if the url parameter cluster=0 is set on a scrape url.\n\n --collector.status, --no-collector.status\n Exposes Node/VM/CT-Status\n --collector.version, --no-collector.version\n Exposes PVE version info\n --collector.node, --no-collector.node\n Exposes PVE node info\n --collector.cluster, --no-collector.cluster\n Exposes PVE cluster info\n --collector.resources, --no-collector.resources\n Exposes PVE resources info\n\n node collectors:\n node collectors are run if the url parameter node=1 is set and skipped if\n the url parameter node=0 is set on a scrape url.\n\n --collector.config, --no-collector.config\n Exposes PVE onboot status\n --collector.replication, --no-collector.replication\n Exposes PVE replication info\n\n\nUse `[::]` in the `--web.listen-address` flag in order to bind to both IPv6 and\nIPv4 sockets on dual stacked machines.\n\nVisit http://localhost:9221/pve?target=1.2.3.4&cluster=1&node=1 where 1.2.3.4\nis the IP of the Proxmox VE node to get metrics from. Specify the ``module``\nrequest parameter, to choose which module to use from the config file.\n\nThe ``target`` request parameter defaults to ``localhost``. Hence if\n``pve_exporter`` is deployed directly on the proxmox host, ``target``\ncan be omitted.\n\nUse the `--collector.X` / `--no-collector.X` flags to enable disable selected\ncollectors.\n\nNote that that the config collector results in one API call per guest VM/CT.\nIt is therefore recommended to disable this collector using the\n`--no-collector.config` flag on big deployments.\n\nSee the wiki_ for more examples and docs.\n\nExported Metrics\n----------------\n\nHere's an example of the metrics exported.\n\n::\n\n # HELP pve_up Node/VM/CT-Status is online/running\n # TYPE pve_up gauge\n pve_up{id=\"node/proxmox\"} 1.0\n pve_up{id=\"qemu/100\"} 1.0\n # HELP pve_disk_size_bytes Storage size in bytes (for type 'storage'), root image size for VMs (for types 'qemu' and 'lxc').\n # TYPE pve_disk_size_bytes gauge\n pve_disk_size_bytes{id=\"qemu/100\"} 6.8719476736e+010\n pve_disk_size_bytes{id=\"node/proxmox\"} 3.1044079616e+010\n pve_disk_size_bytes{id=\"storage/proxmox/local\"} 3.1044079616e+010\n pve_disk_size_bytes{id=\"storage/proxmox/local-lvm\"} 6.9243764736e+010\n pve_disk_size_bytes{id=\"storage/proxmox/vms\"} 1.934882766848e+012\n # HELP pve_disk_usage_bytes Used disk space in bytes (for type 'storage'), used root image space for VMs (for types 'qemu' and 'lxc').\n # TYPE pve_disk_usage_bytes gauge\n pve_disk_usage_bytes{id=\"qemu/100\"} 0.0\n pve_disk_usage_bytes{id=\"node/proxmox\"} 1.7571426304e+010\n pve_disk_usage_bytes{id=\"storage/proxmox/local\"} 1.7571426304e+010\n pve_disk_usage_bytes{id=\"storage/proxmox/local-lvm\"} 6.619703908e+09\n pve_disk_usage_bytes{id=\"storage/proxmox/vms\"} 8.32870981632e+011\n # HELP pve_memory_size_bytes Number of available memory in bytes (for types 'node', 'qemu' and 'lxc').\n # TYPE pve_memory_size_bytes gauge\n pve_memory_size_bytes{id=\"qemu/100\"} 1.7179869184e+010\n pve_memory_size_bytes{id=\"node/proxmox\"} 6.739961856e+010\n # HELP pve_memory_usage_bytes Used memory in bytes (for types 'node', 'qemu' and 'lxc').\n # TYPE pve_memory_usage_bytes gauge\n pve_memory_usage_bytes{id=\"qemu/100\"} 1.6573280275e+010\n pve_memory_usage_bytes{id=\"node/proxmox\"} 5.3907812352e+010\n # HELP pve_network_transmit_bytes The amount of traffic in bytes that was sent from the guest over the network since it was started. (for types 'qemu' and 'lxc')\n # TYPE pve_network_transmit_bytes gauge\n pve_network_transmit_bytes{id=\"qemu/100\"} 7.75070828e+09\n # HELP pve_network_receive_bytes The amount of traffic in bytes that was sent to the guest over the network since it was started. (for types 'qemu' and 'lxc')\n # TYPE pve_network_receive_bytes gauge\n pve_network_receive_bytes{id=\"qemu/100\"} 1.529756162e+09\n # HELP pve_disk_write_bytes The amount of bytes the guest wrote to its block devices since the guest was started. This info is not available for all storage types. (for types 'qemu' and 'lxc')\n # TYPE pve_disk_write_bytes gauge\n pve_disk_write_bytes{id=\"qemu/100\"} 1.50048127488e+011\n # HELP pve_disk_read_bytes The amount of bytes the guest read from its block devices since the guest was started. This info is not available for all storage types. (for types 'qemu' and 'lxc')\n # TYPE pve_disk_read_bytes gauge\n pve_disk_read_bytes{id=\"qemu/100\"} 7.473739264e+09\n # HELP pve_cpu_usage_ratio CPU utilization (for types 'node', 'qemu' and 'lxc').\n # TYPE pve_cpu_usage_ratio gauge\n pve_cpu_usage_ratio{id=\"qemu/100\"} 0.105009724408557\n pve_cpu_usage_ratio{id=\"node/proxmox\"} 0.984243806697115\n # HELP pve_cpu_usage_limit Number of available CPUs (for types 'node', 'qemu' and 'lxc').\n # TYPE pve_cpu_usage_limit gauge\n pve_cpu_usage_limit{id=\"qemu/100\"} 1.0\n pve_cpu_usage_limit{id=\"node/proxmox\"} 4.0\n # HELP pve_uptime_seconds Uptime of node or virtual guest in seconds (for types 'node', 'qemu' and 'lxc').\n # TYPE pve_uptime_seconds gauge\n pve_uptime_seconds{id=\"qemu/100\"} 315039.0\n pve_uptime_seconds{id=\"node/proxmox\"} 315069.0\n # HELP pve_storage_shared Whether or not the storage is shared among cluster nodes\n # TYPE pve_storage_shared gauge\n pve_storage_shared{id=\"storage/proxmox/local\"} 0.0\n pve_storage_shared{id=\"storage/proxmox/local-lvm\"} 0.0\n pve_storage_shared{id=\"storage/proxmox/vms\"} 0.0\n # HELP pve_guest_info VM/CT info\n # TYPE pve_guest_info gauge\n pve_guest_info{id=\"qemu/100\",name=\"samplevm1\",node=\"proxmox\",type=\"qemu\",tags=\"tag1;tag2\"} 1.0\n # HELP pve_storage_info Storage info\n # TYPE pve_storage_info gauge\n pve_storage_info{id=\"storage/proxmox/local\",node=\"proxmox\",storage=\"local\"} 1.0\n pve_storage_info{id=\"storage/proxmox/local-lvm\",node=\"proxmox\",storage=\"local-lvm\"} 1.0\n pve_storage_info{id=\"storage/proxmox/vms\",node=\"proxmox\",storage=\"vms\"} 1.0\n # HELP pve_node_info Node info\n # TYPE pve_node_info gauge\n pve_node_info{id=\"node/proxmox\",level=\"\",name=\"proxmox\",nodeid=\"0\"} 1.0\n # HELP pve_onboot_status Proxmox vm config onboot value\n # TYPE pve_onboot_status gauge\n pve_onboot_status{id=\"qemu/201\",node=\"proxmox\",type=\"qemu\"} 1.0\n # HELP pve_version_info Proxmox VE version info\n # TYPE pve_version_info gauge\n pve_version_info{release=\"7.1\",repoid=\"6fe299a0\",version=\"7.1-5\"} 1.0\n # HELP pve_replication_duration_seconds Proxmox vm replication duration\n # TYPE pve_replication_duration_seconds gauge\n pve_replication_duration_seconds{id=\"1-0\"} 7.73584\n # HELP pve_replication_last_sync_timestamp_seconds Proxmox vm replication last_sync\n # TYPE pve_replication_last_sync_timestamp_seconds gauge\n pve_replication_last_sync_timestamp_seconds{id=\"1-0\"} 1.713382503e+09\n # HELP pve_replication_last_try_timestamp_seconds Proxmox vm replication last_try\n # TYPE pve_replication_last_try_timestamp_seconds gauge\n pve_replication_last_try_timestamp_seconds{id=\"1-0\"} 1.713382503e+09\n # HELP pve_replication_next_sync_timestamp_seconds Proxmox vm replication next_sync\n # TYPE pve_replication_next_sync_timestamp_seconds gauge\n pve_replication_next_sync_timestamp_seconds{id=\"1-0\"} 1.7134689e+09\n # HELP pve_replication_failed_syncs Proxmox vm replication fail_count\n # TYPE pve_replication_failed_syncs gauge\n pve_replication_failed_syncs{id=\"1-0\"} 0.0\n # HELP pve_replication_info Proxmox vm replication info\n # TYPE pve_replication_info gauge\n pve_replication_info{guest=\"qemu/1\",id=\"1-0\",source=\"node/proxmox1\",target=\"node/proxmox2\",type=\"local\"} 1.0\n\nAuthentication\n--------------\n\n**Using pve.yml config file**\n\nExample ``pve.yml`` for password authentication:\n\n.. code:: yaml\n\n default:\n user: prometheus@pve\n password: sEcr3T!\n # Optional: set to false to skip SSL/TLS verification\n verify_ssl: true\n\nExample ``pve.yml`` for `token authentication`_:\n\n.. code:: yaml\n\n default:\n user: prometheus@pve\n token_name: \"your-token-id\"\n token_value: \"...\"\n\n**Using environment variables:**\n\nIf the ``PVE_USER`` environment variable exists, then configuration is taken from\nthe environment instead of from the ``pve.yml`` config file. The following\nenvironment variables are respected:\n\n* ``PVE_USER``: user name\n\nRequired for password authentication:\n\n* ``PVE_PASSWORD``: user password\n\nRequired for `token authentication`_:\n\n* ``PVE_TOKEN_NAME``: token name\n* ``PVE_TOKEN_VALUE``: token value\n\nOptional:\n\n* ``PVE_VERIFY_SSL``: Either ``true`` or ``false``, whether or not to verify PVE tls\n certificate. Defaults to ``true``.\n* ``PVE_MODULE``: Name of the configuration module. Defaults to ``default``.\n\nThe configuration is passed directly into `proxmoxer.ProxmoxAPI()`_.\n\n**Note on verify_ssl and certificate trust store:**\n\nWhen operating PVE with self-signed certificates, then it is necessary to\neither import the certificate into the local trust store (see this `SE answer`_\nfor Debian/Ubuntu) or add ``verify_ssl: false`` to the config dict as a sibling\nto the credentials. Note that PVE `supports Let's Encrypt`_ out ouf the box. In\nmany cases setting up trusted certificates is the better option than operating\nwith self-signed certs.\n\nProxmox VE Configuration\n------------------------\n\nFor security reasons it is essential to add a user with read-only access\n(PVEAuditor role) for the purpose of metrics collection.\n\nRefer to the `Proxmox Documentation`_ for the several ways of creating a user.\nOnce created, assign the user the `/` path permission.\n\nPrometheus Configuration\n------------------------\n\nThe PVE exporter can be deployed either directly on a Proxmox VE node or\nonto a separate machine.\n\nExample config for PVE exporter running on PVE node:\n\n.. code:: yaml\n\n scrape_configs:\n - job_name: 'pve'\n static_configs:\n - targets:\n - 192.168.1.2:9221 # Proxmox VE node with PVE exporter.\n - 192.168.1.3:9221 # Proxmox VE node with PVE exporter.\n metrics_path: /pve\n params:\n module: [default]\n cluster: ['1']\n node: ['1']\n\nExample config for PVE exporter running on Prometheus host:\n\n.. code:: yaml\n\n scrape_configs:\n - job_name: 'pve'\n static_configs:\n - targets:\n - 192.168.1.2 # Proxmox VE node.\n - 192.168.1.3 # Proxmox VE node.\n metrics_path: /pve\n params:\n module: [default]\n cluster: ['1']\n node: ['1']\n relabel_configs:\n - source_labels: [__address__]\n target_label: __param_target\n - source_labels: [__param_target]\n target_label: instance\n - target_label: __address__\n replacement: 127.0.0.1:9221 # PVE exporter.\n\n**Note on alerting:**\n\nYou can do VM tag based alerting, by using joins on ``pve_guest_info`` metric. For\nexample, alerting only when VM with `critical` tag is down:\n\n.. code:: promql\n\n (pve_guest_info{tags=~\".*critical.*\"} * on(id) group_left(name) pve_up{}) == 0\n\n**Note on scraping large clusters:**\n\nIt is adviced to setup separate jobs to collect ``cluster`` metrics and\n``node`` metrics in larger deployments. Scraping any node in a cluster with the\nurl params set to ``cluster=1&node=0`` results in the same set of metrics. Hence\ncluster metrics can be scraped efficiently from a single node or from a subset\nof cluster nodes (e.g., a different node selected on every scrape via\nround-robin DNS).\n\nNode metrics can only be scraped from a given node. In order to compile a\ncomplete set of node metrics it is necessary to scrape every node in a cluster\nwith url params set to ``cluster=0&node=1``.\n\n\nGrafana Dashboards\n------------------\n\n* `Proxmox via Prometheus by Pietro Saccardi`_\n\n.. |Build Status| image:: https://github.com/prometheus-pve/prometheus-pve-exporter/actions/workflows/ci.yml/badge.svg\n :target: https://github.com/prometheus-pve/prometheus-pve-exporter/actions/workflows/ci.yml\n.. |Package Version| image:: https://img.shields.io/pypi/v/prometheus-pve-exporter.svg\n :target: https://pypi.python.org/pypi/prometheus-pve-exporter\n.. _wiki: https://github.com/prometheus-pve/prometheus-pve-exporter/wiki\n.. _`token authentication`: https://pve.proxmox.com/wiki/User_Management#pveum_tokens\n.. _`proxmoxer.ProxmoxAPI()`: https://pypi.python.org/pypi/proxmoxer\n.. _`SE answer`: https://askubuntu.com/a/1007236\n.. _`supports Let's Encrypt`: https://pve.proxmox.com/pve-docs/pve-admin-guide.html#sysadmin_certificate_management\n.. _`Proxmox Documentation`: https://pve.proxmox.com/pve-docs/pve-admin-guide.html#pveum_permission_management\n.. _`Proxmox via Prometheus by Pietro Saccardi`: https://grafana.com/grafana/dashboards/10347-proxmox-via-prometheus/\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Proxmox VE exporter for the Prometheus monitoring system.",
"version": "3.4.7",
"project_urls": {
"Homepage": "https://github.com/prometheus-pve/prometheus-pve-exporter"
},
"split_keywords": [
"prometheus",
" exporter",
" network",
" monitoring",
" proxmox"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "feabdab0842c83e4138b65cc93c18dc19e595ed51fe9b778ac800d40cff572ee",
"md5": "284d1ee772fbe686d04bfedd41ad1e22",
"sha256": "8c3e52ca65c05328b200d26b04a32f50be61330cc42ac21e3d7c1dd328788f8a"
},
"downloads": -1,
"filename": "prometheus_pve_exporter-3.4.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "284d1ee772fbe686d04bfedd41ad1e22",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 18815,
"upload_time": "2024-12-17T21:24:36",
"upload_time_iso_8601": "2024-12-17T21:24:36.533644Z",
"url": "https://files.pythonhosted.org/packages/fe/ab/dab0842c83e4138b65cc93c18dc19e595ed51fe9b778ac800d40cff572ee/prometheus_pve_exporter-3.4.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e7a6975f7c017d55bb38ba4b5daab65cce58edda472470f409755f60b7bd49fd",
"md5": "6a11ffde96a98123523d419dec7ff664",
"sha256": "0318ed560a30d5a574bd2b92adeeacf5ced1bb6fd4e90ea49e6abb074e580a73"
},
"downloads": -1,
"filename": "prometheus_pve_exporter-3.4.7.tar.gz",
"has_sig": false,
"md5_digest": "6a11ffde96a98123523d419dec7ff664",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 48716,
"upload_time": "2024-12-17T21:24:38",
"upload_time_iso_8601": "2024-12-17T21:24:38.631378Z",
"url": "https://files.pythonhosted.org/packages/e7/a6/975f7c017d55bb38ba4b5daab65cce58edda472470f409755f60b7bd49fd/prometheus_pve_exporter-3.4.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-17 21:24:38",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "prometheus-pve",
"github_project": "prometheus-pve-exporter",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "prometheus-pve-exporter"
}