diff --git a/PVE/Status/Graphite.pm b/PVE/Status/Graphite.pm index 41839a43..1b196c24 100644 --- a/PVE/Status/Graphite.pm +++ b/PVE/Status/Graphite.pm @@ -50,6 +50,7 @@ sub options { return { server => {}, port => { optional => 1 }, + mtu => { optional => 1 }, proto => { optional => 1 }, timeout => { optional => 1 }, path => { optional => 1 }, diff --git a/PVE/Status/InfluxDB.pm b/PVE/Status/InfluxDB.pm index c7bc15a9..589a4936 100644 --- a/PVE/Status/InfluxDB.pm +++ b/PVE/Status/InfluxDB.pm @@ -28,6 +28,7 @@ sub options { return { server => {}, port => {}, + mtu => { optional => 1 }, disable => { optional => 1 }, }; } diff --git a/PVE/Status/Plugin.pm b/PVE/Status/Plugin.pm index d6fba529..7b27d8fc 100644 --- a/PVE/Status/Plugin.pm +++ b/PVE/Status/Plugin.pm @@ -33,6 +33,14 @@ my $defaultData = { type => 'integer', description => "server network port", }, + mtu => { + type => 'integer', + description => "MTU for metrics transmission over UDP", + default => 1500, + min => 512, + maximum => 64*1024, + optional => 1, + }, }, }; @@ -69,7 +77,10 @@ sub _disconnect { # UDP cannot do more than 64k at once. Overwrite for different protocol limits. sub _send_batch_size { my ($class, $cfg) = @_; - return 1450; # assume 1500 MTU, empty IPv6 UDP packet needs 48 bytes overhead + + # default to 1500 MTU, empty IPv6 UDP packet needs 48 bytes overhead + my $mtu = $cfg->{mtu} // 1500; + return $mtu - 50; } # call with the smalles $data chunks possible