prometheus-pve-exporter


Nameprometheus-pve-exporter JSON
Version 3.4.5 PyPI version JSON
download
home_pageNone
SummaryProxmox VE exporter for the Prometheus monitoring system.
upload_time2024-09-16 18:26:51
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseApache-2.0
keywords prometheus exporter network monitoring proxmox
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            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"
}
        
Elapsed time: 0.91462s