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 Size of storage device
# 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 Disk usage in bytes
# 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 Size of memory
# 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 Memory usage in bytes
# 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 Number of bytes transmitted over the network
# TYPE pve_network_transmit_bytes gauge
pve_network_transmit_bytes{id="qemu/100"} 7.75070828e+09
# HELP pve_network_receive_bytes Number of bytes received over the network
# TYPE pve_network_receive_bytes gauge
pve_network_receive_bytes{id="qemu/100"} 1.529756162e+09
# HELP pve_disk_write_bytes Number of bytes written to storage
# TYPE pve_disk_write_bytes gauge
pve_disk_write_bytes{id="qemu/100"} 1.50048127488e+011
# HELP pve_disk_read_bytes Number of bytes read from storage
# TYPE pve_disk_read_bytes gauge
pve_disk_read_bytes{id="qemu/100"} 7.473739264e+09
# HELP pve_cpu_usage_ratio CPU usage (value between 0.0 and pve_cpu_usage_limit)
# 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 Maximum allowed CPU usage
# 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 Number of seconds since the last boot
# 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/da/bd/9afcbecdd61ac17ef554b77a3429340cdbed9b2618d68c1b98c8cd3bd49d/prometheus_pve_exporter-3.4.5.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 Size of storage device\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 Disk usage in bytes\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 Size of memory\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 Memory usage in bytes\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 Number of bytes transmitted over the network\n # TYPE pve_network_transmit_bytes gauge\n pve_network_transmit_bytes{id=\"qemu/100\"} 7.75070828e+09\n # HELP pve_network_receive_bytes Number of bytes received over the network\n # TYPE pve_network_receive_bytes gauge\n pve_network_receive_bytes{id=\"qemu/100\"} 1.529756162e+09\n # HELP pve_disk_write_bytes Number of bytes written to storage\n # TYPE pve_disk_write_bytes gauge\n pve_disk_write_bytes{id=\"qemu/100\"} 1.50048127488e+011\n # HELP pve_disk_read_bytes Number of bytes read from storage\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 usage (value between 0.0 and pve_cpu_usage_limit)\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 Maximum allowed CPU usage\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 Number of seconds since the last boot\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.5",
"project_urls": {
"Homepage": "https://github.com/prometheus-pve/prometheus-pve-exporter"
},
"split_keywords": [
"prometheus",
" exporter",
" network",
" monitoring",
" proxmox"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c1df17a8fbbea536ce9a742f1425628cbb7f3301b41c90988eeb6a0c563dd34d",
"md5": "271d55a306f3479a4eb6ca230362ac86",
"sha256": "c558e55891221c27c7b077f8b5b7f89bb430796d2d5d1f436d680daf3a656229"
},
"downloads": -1,
"filename": "prometheus_pve_exporter-3.4.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "271d55a306f3479a4eb6ca230362ac86",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 18531,
"upload_time": "2024-09-16T18:26:49",
"upload_time_iso_8601": "2024-09-16T18:26:49.464050Z",
"url": "https://files.pythonhosted.org/packages/c1/df/17a8fbbea536ce9a742f1425628cbb7f3301b41c90988eeb6a0c563dd34d/prometheus_pve_exporter-3.4.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "dabd9afcbecdd61ac17ef554b77a3429340cdbed9b2618d68c1b98c8cd3bd49d",
"md5": "9ba911ad9816a86fb71d320b9825d999",
"sha256": "26cbf8e6a2b52996099fd0a5a246976be15558e110ce83d7f6e3f6e95010e32a"
},
"downloads": -1,
"filename": "prometheus_pve_exporter-3.4.5.tar.gz",
"has_sig": false,
"md5_digest": "9ba911ad9816a86fb71d320b9825d999",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 48210,
"upload_time": "2024-09-16T18:26:51",
"upload_time_iso_8601": "2024-09-16T18:26:51.559963Z",
"url": "https://files.pythonhosted.org/packages/da/bd/9afcbecdd61ac17ef554b77a3429340cdbed9b2618d68c1b98c8cd3bd49d/prometheus_pve_exporter-3.4.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-16 18:26:51",
"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"
}