+[[external_metric_server]]
External Metric Server
----------------------
ifdef::wiki[]
:pve-toplevel:
endif::wiki[]
-Starting with {pve} 4.0, you can define external metric servers,
-which will be sent various stats about your hosts, virtual machines and storages.
+[thumbnail="screenshot/gui-datacenter-metric-server-list.png"]
+
+In {pve}, you can define external metric servers, which will periodically
+receive various stats about your hosts, virtual guests and storages.
Currently supported are:
- * graphite (see http://graphiteapp.org )
- * influxdb (see https://www.influxdata.com/time-series-platform/influxdb/ )
+ * Graphite (see https://graphiteapp.org )
+ * InfluxDB (see https://www.influxdata.com/time-series-platform/influxdb/ )
-The server definitions are saved in
- /etc/pve/status.cfg
+The external metric server definitions are saved in '/etc/pve/status.cfg', and
+can be edited through the web interface.
+[[metric_server_graphite]]
Graphite server configuration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-The definition of a server is:
+[thumbnail="screenshot/gui-datacenter-metric-server-graphite.png"]
- graphite: your-id
- server your-server
- port your-port
- path your-path
+The default port is set to *2003* and the default graphite path is *proxmox*.
-where your-port defaults to *2003*
-and your-path defaults to *proxmox*
+By default, {pve} sends the data over UDP, so the graphite server has to be
+configured to accept this. Here the maximum transmission unit (MTU) can be
+configured for environments not using the standard *1500* MTU.
-{pve} sends the data over udp, so the graphite server
-has to be configured for this
+You can also configure the plugin to use TCP. In order not to block the
+important `pvestatd` statistic collection daemon, a timeout is required to cope
+with network problems.
+[[metric_server_influxdb]]
Influxdb plugin configuration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-The definition is:
-
- influxdb: your-id
- server your-server
- port your-port
+[thumbnail="screenshot/gui-datacenter-metric-server-influxdb.png"]
-{pve} sends the data over udp, so the influxdb server
-has to be configured for this
+{pve} sends the data over UDP, so the influxdb server has to be configured for
+this. The MTU can also be configured here, if necessary.
Here is an example configuration for influxdb (on your influxdb server):
- [[udp]]
+----
+[[udp]]
enabled = true
bind-address = "0.0.0.0:8089"
database = "proxmox"
batch-size = 1000
batch-timeout = "1s"
+----
-With this configuration, your server listens on all IP addresses on
-port 8089, and writes the data in the *proxmox* database
-
-Multiple Definitions and Example
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+With this configuration, your server listens on all IP addresses on port 8089,
+and writes the data in the *proxmox* database
-The *id* is optional, but if you want to have multiple definitions of a single
-type, then the ids must be different.
+Alternatively, the plugin can be configured to use the http(s) API of InfluxDB 2.x.
+InfluxDB 1.8.x does contain a forwards compatible API endpoint for this v2 API.
-Here is an example of a finished status.cfg
+To use it, set 'influxdbproto' to 'http' or 'https' (depending on your configuration).
+By default, {pve} uses the organization 'proxmox' and the bucket/db 'proxmox'
+(They can be set with the configuration 'organization' and 'bucket' respectively).
- graphite:
- server 10.0.0.5
+Since InfluxDB's v2 API is only available with authentication, you have
+to generate a token that can write into the correct bucket and set it.
- influxdb: influx1
- server 10.0.0.6
- port 8089
+In the v2 compatible API of 1.8.x, you can use 'user:password' as token
+(if required), and can omit the 'organization' since that has no meaning in InfluxDB 1.x.
- influxdb: influx2
- server 10.0.0.7
- port 8090
+You can also set the HTTP Timeout (default is 1s) with the 'timeout' setting,
+as well as the maximum batch size (default 25000000 bytes) with the
+'max-body-size' setting (this corresponds to the InfluxDB setting with the
+same name).