all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH manager 1/5] metrics: influx: include unrecognized protocol value in error
@ 2021-03-15  8:14 Thomas Lamprecht
  2021-03-15  8:14 ` [pve-devel] [PATCH manager 2/5] metrics: influx: send along auth token on connection test too Thomas Lamprecht
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Thomas Lamprecht @ 2021-03-15  8:14 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
 PVE/Status/InfluxDB.pm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/PVE/Status/InfluxDB.pm b/PVE/Status/InfluxDB.pm
index d7ea6ce2..e5dfca39 100644
--- a/PVE/Status/InfluxDB.pm
+++ b/PVE/Status/InfluxDB.pm
@@ -192,7 +192,7 @@ sub _connect {
 	return $req;
     }
 
-    die "cannot connect to influxdb: invalid protocol\n";
+    die "cannot connect to InfluxDB: invalid protocol '$proto'\n";
 }
 
 sub test_connection {
-- 
2.29.2





^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] [PATCH manager 2/5] metrics: influx: send along auth token on connection test too
  2021-03-15  8:14 [pve-devel] [PATCH manager 1/5] metrics: influx: include unrecognized protocol value in error Thomas Lamprecht
@ 2021-03-15  8:14 ` Thomas Lamprecht
  2021-03-15  8:14 ` [pve-devel] [PATCH manager 3/5] metrics: influx: do not error out when credendtials could not be loaded Thomas Lamprecht
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Thomas Lamprecht @ 2021-03-15  8:14 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
 PVE/Status/InfluxDB.pm | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/PVE/Status/InfluxDB.pm b/PVE/Status/InfluxDB.pm
index e5dfca39..712a30ff 100644
--- a/PVE/Status/InfluxDB.pm
+++ b/PVE/Status/InfluxDB.pm
@@ -207,6 +207,11 @@ sub test_connection {
 	my $url = "${proto}://${host}:${port}/health";
 	my $ua = LWP::UserAgent->new();
 	$ua->timeout($cfg->{timeout} // 1);
+	# in the initial add connection test, the token may still be in $cfg
+	my $token = $cfg->{token} // get_credentials($id);
+	if (defined($token)) {
+	    $ua->default_header("Authorization" => "Token $token");
+	}
 	my $response = $ua->get($url);
 
 	if (!$response->is_success) {
-- 
2.29.2





^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] [PATCH manager 3/5] metrics: influx: do not error out when credendtials could not be loaded
  2021-03-15  8:14 [pve-devel] [PATCH manager 1/5] metrics: influx: include unrecognized protocol value in error Thomas Lamprecht
  2021-03-15  8:14 ` [pve-devel] [PATCH manager 2/5] metrics: influx: send along auth token on connection test too Thomas Lamprecht
@ 2021-03-15  8:14 ` Thomas Lamprecht
  2021-03-15  8:14 ` [pve-devel] [PATCH manager 4/5] metrics: influx: allow one to add an API URL-path prefix Thomas Lamprecht
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Thomas Lamprecht @ 2021-03-15  8:14 UTC (permalink / raw)
  To: pve-devel

Not a hard error, some network box (proxy) down the line could add it
for us, or it could be just not required, so ...

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
 PVE/Status/InfluxDB.pm | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/PVE/Status/InfluxDB.pm b/PVE/Status/InfluxDB.pm
index 712a30ff..137aec1b 100644
--- a/PVE/Status/InfluxDB.pm
+++ b/PVE/Status/InfluxDB.pm
@@ -208,7 +208,7 @@ sub test_connection {
 	my $ua = LWP::UserAgent->new();
 	$ua->timeout($cfg->{timeout} // 1);
 	# in the initial add connection test, the token may still be in $cfg
-	my $token = $cfg->{token} // get_credentials($id);
+	my $token = $cfg->{token} // get_credentials($id, 1);
 	if (defined($token)) {
 	    $ua->default_header("Authorization" => "Token $token");
 	}
@@ -330,11 +330,14 @@ sub set_credentials {
 }
 
 sub get_credentials {
-    my ($id) = @_;
+    my ($id, $silent) = @_;
 
     my $cred_file = cred_file_name($id);
 
-    return PVE::Tools::file_get_contents($cred_file);
+    my $creds = eval { PVE::Tools::file_get_contents($cred_file) };
+    warn "could not load credentials for '$id': $@\n" if $@ && !$silent;
+
+    return $creds;
 }
 
 sub on_add_hook {
-- 
2.29.2





^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] [PATCH manager 4/5] metrics: influx: allow one to add an API URL-path prefix
  2021-03-15  8:14 [pve-devel] [PATCH manager 1/5] metrics: influx: include unrecognized protocol value in error Thomas Lamprecht
  2021-03-15  8:14 ` [pve-devel] [PATCH manager 2/5] metrics: influx: send along auth token on connection test too Thomas Lamprecht
  2021-03-15  8:14 ` [pve-devel] [PATCH manager 3/5] metrics: influx: do not error out when credendtials could not be loaded Thomas Lamprecht
@ 2021-03-15  8:14 ` Thomas Lamprecht
  2021-03-15  8:14 ` [pve-devel] [PATCH manager 5/5] ui: metrics: influxdb: add support for new api-path-prefix field Thomas Lamprecht
  2021-03-15 14:32 ` [pve-devel] applied-series: [PATCH manager 1/5] metrics: influx: include unrecognized protocol value in error Dominik Csapak
  4 siblings, 0 replies; 7+ messages in thread
From: Thomas Lamprecht @ 2021-03-15  8:14 UTC (permalink / raw)
  To: pve-devel

I normally use a reverse proxy in front of my influxdb instances,
proxying all from the /influx/ path to the only locally listening
influxdb. So here I'd need to set "influx" as api-path-prefix.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
 PVE/Status/InfluxDB.pm | 23 +++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/PVE/Status/InfluxDB.pm b/PVE/Status/InfluxDB.pm
index 137aec1b..542d8006 100644
--- a/PVE/Status/InfluxDB.pm
+++ b/PVE/Status/InfluxDB.pm
@@ -38,6 +38,12 @@ sub properties {
 	    type => 'string',
 	    optional => 1,
 	},
+	'api-path-prefix' => {
+	    description => "An API path prefix inserted between '<host>:<port>/' and '/api2/'."
+	        ." Can be useful if the InfluxDB service runs behind a reverse proxy.",
+	    type => 'string',
+	    optional => 1,
+	},
 	influxdbproto => {
 	    type => 'string',
 	    enum => ['udp', 'http', 'https'],
@@ -64,6 +70,7 @@ sub options {
 	influxdbproto => { optional => 1},
 	timeout => { optional => 1},
 	'max-body-size' => { optional => 1 },
+	'api-path-prefix' => { optional => 1 },
    };
 }
 
@@ -161,6 +168,16 @@ sub _disconnect {
     return;
 }
 
+sub _get_v2url {
+    my ($cfg, $api_path) = @_;
+    my ($proto, $host, $port) = $cfg->@{qw(influxdbproto server port)};
+    my $api_prefix = $cfg->{'api-path-prefix'} // '/';
+    if ($api_prefix ne '' && $api_prefix =~ m!^/*(.+)/*$!) {
+	$api_prefix = "/$1/";
+    }
+    return "${proto}://${host}:${port}${api_prefix}api/v2/${api_path}";
+}
+
 sub _connect {
     my ($class, $cfg, $id) = @_;
 
@@ -182,7 +199,7 @@ sub _connect {
 	my $token = get_credentials($id);
 	my $org = $cfg->{organization} // 'proxmox';
 	my $bucket = $cfg->{bucket} // 'proxmox';
-	my $url = "${proto}://${host}:${port}/api/v2/write?org=${org}&bucket=${bucket}";
+	my $url = _get_v2url($cfg, "write?org=${org}&bucket=${bucket}");
 
 	my $req = HTTP::Request->new(POST => $url);
 	if (defined($token)) {
@@ -202,9 +219,7 @@ sub test_connection {
     if ($proto eq 'udp') {
 	return $class->SUPER::test_connection($cfg, $id);
     } elsif ($proto =~ m/^https?$/) {
-	my $host = $cfg->{server};
-	my $port = $cfg->{port};
-	my $url = "${proto}://${host}:${port}/health";
+	my $url = _get_v2url($cfg, "health");
 	my $ua = LWP::UserAgent->new();
 	$ua->timeout($cfg->{timeout} // 1);
 	# in the initial add connection test, the token may still be in $cfg
-- 
2.29.2





^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] [PATCH manager 5/5] ui: metrics: influxdb: add support for new api-path-prefix field
  2021-03-15  8:14 [pve-devel] [PATCH manager 1/5] metrics: influx: include unrecognized protocol value in error Thomas Lamprecht
                   ` (2 preceding siblings ...)
  2021-03-15  8:14 ` [pve-devel] [PATCH manager 4/5] metrics: influx: allow one to add an API URL-path prefix Thomas Lamprecht
@ 2021-03-15  8:14 ` Thomas Lamprecht
  2021-03-15 14:32 ` [pve-devel] applied-series: [PATCH manager 1/5] metrics: influx: include unrecognized protocol value in error Dominik Csapak
  4 siblings, 0 replies; 7+ messages in thread
From: Thomas Lamprecht @ 2021-03-15  8:14 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
---
 www/manager6/dc/MetricServerView.js | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/www/manager6/dc/MetricServerView.js b/www/manager6/dc/MetricServerView.js
index edb40cc5..c599886f 100644
--- a/www/manager6/dc/MetricServerView.js
+++ b/www/manager6/dc/MetricServerView.js
@@ -247,6 +247,7 @@ Ext.define('PVE.dc.InfluxDBEdit', {
 			    me.up('inputpanel').down('field[name=organization]').setDisabled(isUdp);
 			    me.up('inputpanel').down('field[name=bucket]').setDisabled(isUdp);
 			    me.up('inputpanel').down('field[name=token]').setDisabled(isUdp);
+			    me.up('inputpanel').down('field[name=api-path-prefix]').setDisabled(isUdp);
 			    me.up('inputpanel').down('field[name=mtu]').setDisabled(!isUdp);
 			    me.up('inputpanel').down('field[name=timeout]').setDisabled(isUdp);
 			    me.up('inputpanel').down('field[name=max-body-size]').setDisabled(isUdp);
@@ -300,6 +301,16 @@ Ext.define('PVE.dc.InfluxDBEdit', {
 	    ],
 
 	    advancedColumn1: [
+		{
+		    xtype: 'proxmoxtextfield',
+		    name: 'api-path-prefix',
+		    fieldLabel: gettext('API Path Prefix'),
+		    allowBlank: true,
+		    disabled: true,
+		    cbind: {
+			deleteEmpty: '{!isCreate}',
+		    },
+		},
 		{
 		    xtype: 'proxmoxintegerfield',
 		    name: 'timeout',
-- 
2.29.2





^ permalink raw reply	[flat|nested] 7+ messages in thread

* [pve-devel] applied-series: [PATCH manager 1/5] metrics: influx: include unrecognized protocol value in error
  2021-03-15  8:14 [pve-devel] [PATCH manager 1/5] metrics: influx: include unrecognized protocol value in error Thomas Lamprecht
                   ` (3 preceding siblings ...)
  2021-03-15  8:14 ` [pve-devel] [PATCH manager 5/5] ui: metrics: influxdb: add support for new api-path-prefix field Thomas Lamprecht
@ 2021-03-15 14:32 ` Dominik Csapak
  2021-03-15 15:04   ` Thomas Lamprecht
  4 siblings, 1 reply; 7+ messages in thread
From: Dominik Csapak @ 2021-03-15 14:32 UTC (permalink / raw)
  To: Proxmox VE development discussion, Thomas Lamprecht

thanks, applied all 5 patches and pushed 2 small fixups after
please take a look :)




^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [pve-devel] applied-series: [PATCH manager 1/5] metrics: influx: include unrecognized protocol value in error
  2021-03-15 14:32 ` [pve-devel] applied-series: [PATCH manager 1/5] metrics: influx: include unrecognized protocol value in error Dominik Csapak
@ 2021-03-15 15:04   ` Thomas Lamprecht
  0 siblings, 0 replies; 7+ messages in thread
From: Thomas Lamprecht @ 2021-03-15 15:04 UTC (permalink / raw)
  To: Dominik Csapak, Proxmox VE development discussion

On 15.03.21 15:32, Dominik Csapak wrote:
> thanks, applied all 5 patches and pushed 2 small fixups after
> please take a look :)
> 

Thanks, both look OK!




^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-03-15 15:04 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-15  8:14 [pve-devel] [PATCH manager 1/5] metrics: influx: include unrecognized protocol value in error Thomas Lamprecht
2021-03-15  8:14 ` [pve-devel] [PATCH manager 2/5] metrics: influx: send along auth token on connection test too Thomas Lamprecht
2021-03-15  8:14 ` [pve-devel] [PATCH manager 3/5] metrics: influx: do not error out when credendtials could not be loaded Thomas Lamprecht
2021-03-15  8:14 ` [pve-devel] [PATCH manager 4/5] metrics: influx: allow one to add an API URL-path prefix Thomas Lamprecht
2021-03-15  8:14 ` [pve-devel] [PATCH manager 5/5] ui: metrics: influxdb: add support for new api-path-prefix field Thomas Lamprecht
2021-03-15 14:32 ` [pve-devel] applied-series: [PATCH manager 1/5] metrics: influx: include unrecognized protocol value in error Dominik Csapak
2021-03-15 15:04   ` Thomas Lamprecht

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal