feat(go.d/pkg/web): add "force_http2" option (#19047)
Ilya Mashchenko committed
Nov 20, 2024 at 16:28 UTC
6ef270c7445f67bafd5ec3d203bf36b4e73a7fbb
113 files changed
+236
-51
src/go/plugin/go.d/modules/activemq/testdata/config.json
+2
-1
@@ -21,5 +21,6 @@
21
"tls_ca": "ok",
22
"tls_cert": "ok",
23
"tls_key": "ok",
24
- "tls_skip_verify": true
24
+ "tls_skip_verify": true,
25
+ "force_http2": true
26
}
src/go/plugin/go.d/modules/activemq/testdata/config.yaml
+1
@@ -20,3 +20,4 @@ tls_ca: "ok"
20
tls_cert: "ok"
21
tls_key: "ok"
22
tls_skip_verify: yes
23
+force_http2: yes
src/go/plugin/go.d/modules/apache/config_schema.json
+7
-1
@@ -30,6 +30,11 @@
30
"description": "If set, the client will not follow HTTP redirects automatically.",
31
"type": "boolean"
32
},
33
+ "force_http2": {
34
+ "title": "Force HTTP2",
35
+ "description": "If set, forces the use of HTTP/2 protocol for all requests, even over plain TCP (h2c).",
36
+ "type": "boolean"
37
+ },
38
"username": {
39
"title": "Username",
40
"description": "The username for basic authentication.",
@@ -143,7 +148,8 @@
148
"update_every",
149
"url",
150
"timeout",
146
- "not_follow_redirects"
151
+ "not_follow_redirects",
152
+ "force_http2"
153
]
154
},
155
{
src/go/plugin/go.d/modules/apache/metadata.yaml
+4
@@ -119,6 +119,10 @@ modules:
119
description: Redirect handling policy. Controls whether the client follows redirects.
120
default_value: no
121
required: false
122
+ - name: force_http2
123
+ description: Forces the use of HTTP/2 protocol for all requests, even over plain TCP (h2c).
124
+ default_value: no
125
+ required: false
126
- name: tls_skip_verify
127
description: Server certificate chain and hostname validation policy. Controls whether the client performs this check.
128
default_value: no
src/go/plugin/go.d/modules/apache/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/apache/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/bind/testdata/config.json
+1
@@ -17,5 +17,6 @@
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
"tls_skip_verify": true,
20
+ "force_http2": true,
21
"permit_view": "ok"
22
}
src/go/plugin/go.d/modules/bind/testdata/config.yaml
+1
@@ -15,4 +15,5 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
19
permit_view: "ok"
src/go/plugin/go.d/modules/cassandra/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/cassandra/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/ceph/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/ceph/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/clickhouse/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/clickhouse/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/cockroachdb/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/cockroachdb/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/consul/testdata/config.json
+2
-1
@@ -17,5 +17,6 @@
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
"tls_skip_verify": true,
20
- "acl_token": "ok"
20
+ "acl_token": "ok",
21
+ "force_http2": true
22
}
src/go/plugin/go.d/modules/consul/testdata/config.yaml
+1
@@ -16,3 +16,4 @@ tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
acl_token: "ok"
19
+force_http2: yes
src/go/plugin/go.d/modules/coredns/testdata/config.json
+1
@@ -17,6 +17,7 @@
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
"tls_skip_verify": true,
20
+ "force_http2": true,
21
"per_server_stats": {
22
"includes": [
23
"ok"
src/go/plugin/go.d/modules/coredns/testdata/config.yaml
+1
@@ -15,6 +15,7 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
19
per_server_stats:
20
includes:
21
- "ok"
src/go/plugin/go.d/modules/couchbase/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/couchbase/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/couchdb/testdata/config.json
+1
@@ -17,6 +17,7 @@
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
"tls_skip_verify": true,
20
+ "force_http2": true,
21
"node": "ok",
22
"databases": "ok"
23
}
src/go/plugin/go.d/modules/couchdb/testdata/config.yaml
+1
@@ -15,5 +15,6 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
19
node: "ok"
20
databases: "ok"
src/go/plugin/go.d/modules/dnsdist/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/dnsdist/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/docker_engine/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/docker_engine/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/dockerhub/testdata/config.json
+1
@@ -17,6 +17,7 @@
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
"tls_skip_verify": true,
20
+ "force_http2": true,
21
"repositories": [
22
"ok"
23
]
src/go/plugin/go.d/modules/dockerhub/testdata/config.yaml
+1
@@ -15,5 +15,6 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
19
repositories:
20
- "ok"
src/go/plugin/go.d/modules/elasticsearch/testdata/config.json
+1
@@ -17,6 +17,7 @@
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
"tls_skip_verify": true,
20
+ "force_http2": true,
21
"cluster_mode": true,
22
"collect_node_stats": true,
23
"collect_cluster_health": true,
src/go/plugin/go.d/modules/elasticsearch/testdata/config.yaml
+1
@@ -15,6 +15,7 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
19
cluster_mode: yes
20
collect_node_stats: yes
21
collect_cluster_health: yes
src/go/plugin/go.d/modules/envoy/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/envoy/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/fluentd/testdata/config.json
+1
@@ -17,5 +17,6 @@
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
"tls_skip_verify": true,
20
+ "force_http2": true,
21
"permit_plugin_id": "ok"
22
}
src/go/plugin/go.d/modules/fluentd/testdata/config.yaml
+1
@@ -15,4 +15,5 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
19
permit_plugin_id: "ok"
src/go/plugin/go.d/modules/geth/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/geth/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/haproxy/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/haproxy/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/hdfs/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/hdfs/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/httpcheck/testdata/config.json
+1
@@ -17,6 +17,7 @@
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
"tls_skip_verify": true,
20
+ "force_http2": true,
21
"status_accepted": [
22
123
23
],
src/go/plugin/go.d/modules/httpcheck/testdata/config.yaml
+1
@@ -15,6 +15,7 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
19
status_accepted:
20
- 123
21
response_match: "ok"
src/go/plugin/go.d/modules/icecast/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/icecast/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/ipfs/testdata/config.json
+1
@@ -17,6 +17,7 @@
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
"tls_skip_verify": true,
20
+ "force_http2": true,
21
"pinapi": false,
22
"repoapi": false
23
}
src/go/plugin/go.d/modules/ipfs/testdata/config.yaml
+1
@@ -15,5 +15,6 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
19
pinapi: no
20
repoapi: no
src/go/plugin/go.d/modules/k8s_kubelet/testdata/config.json
+1
@@ -17,5 +17,6 @@
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
"tls_skip_verify": true,
20
+ "force_http2": true,
21
"token_path": "ok"
22
}
src/go/plugin/go.d/modules/k8s_kubelet/testdata/config.yaml
+1
@@ -15,4 +15,5 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
19
token_path: "ok"
src/go/plugin/go.d/modules/k8s_kubeproxy/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/k8s_kubeproxy/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/lighttpd/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/lighttpd/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/logstash/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/logstash/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/maxscale/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/maxscale/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/monit/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/monit/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/nginx/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/nginx/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/nginxplus/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/nginxplus/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/nginxunit/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/nginxunit/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/nginxvts/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/nginxvts/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/phpdaemon/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/phpdaemon/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/phpfpm/testdata/config.json
+1
@@ -17,6 +17,7 @@
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
"tls_skip_verify": true,
20
+ "force_http2": true,
21
"socket": "ok",
22
"address": "ok",
23
"fcgi_path": "ok"
src/go/plugin/go.d/modules/phpfpm/testdata/config.yaml
+1
@@ -15,6 +15,7 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
19
socket: "ok"
20
address: "ok"
21
fcgi_path: "ok"
src/go/plugin/go.d/modules/pihole/testdata/config.json
+1
@@ -17,5 +17,6 @@
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
"tls_skip_verify": true,
20
+ "force_http2": true,
21
"setup_vars_path": "ok"
22
}
src/go/plugin/go.d/modules/pihole/testdata/config.yaml
+1
@@ -15,4 +15,5 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
19
setup_vars_path: "ok"
src/go/plugin/go.d/modules/powerdns/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/powerdns/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/powerdns_recursor/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/powerdns_recursor/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/prometheus/testdata/config.json
+1
@@ -17,6 +17,7 @@
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
"tls_skip_verify": true,
20
+ "force_http2": true,
21
"name": "ok",
22
"app": "ok",
23
"label_prefix": "ok",
src/go/plugin/go.d/modules/prometheus/testdata/config.yaml
+1
@@ -15,6 +15,7 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
19
name: "ok"
20
app: "ok"
21
label_prefix: "ok"
src/go/plugin/go.d/modules/pulsar/testdata/config.json
+1
@@ -17,6 +17,7 @@
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
"tls_skip_verify": true,
20
+ "force_http2": true,
21
"topic_filter": {
22
"includes": [
23
"ok"
src/go/plugin/go.d/modules/pulsar/testdata/config.yaml
+1
@@ -15,6 +15,7 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
19
topic_filter:
20
includes:
21
- "ok"
src/go/plugin/go.d/modules/puppet/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/puppet/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/rabbitmq/testdata/config.json
+1
@@ -17,5 +17,6 @@
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
"tls_skip_verify": true,
20
+ "force_http2": true,
21
"collect_queues_metrics": true
22
}
src/go/plugin/go.d/modules/rabbitmq/testdata/config.yaml
+1
@@ -15,4 +15,5 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
19
collect_queues_metrics: yes
src/go/plugin/go.d/modules/riakkv/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/riakkv/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/rspamd/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/rspamd/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/scaleio/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/scaleio/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/squid/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/squid/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/supervisord/testdata/config.json
+2
-1
@@ -7,5 +7,6 @@
7
"tls_ca": "ok",
8
"tls_cert": "ok",
9
"tls_key": "ok",
10
- "tls_skip_verify": true
10
+ "tls_skip_verify": true,
11
+ "force_http2": true
12
}
src/go/plugin/go.d/modules/supervisord/testdata/config.yaml
+1
@@ -7,3 +7,4 @@ tls_ca: "ok"
7
tls_cert: "ok"
8
tls_key: "ok"
9
tls_skip_verify: yes
10
+force_http2: yes
src/go/plugin/go.d/modules/tengine/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/tengine/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/tomcat/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/tomcat/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/traefik/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/traefik/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/typesense/testdata/config.json
+2
-1
@@ -17,5 +17,6 @@
17
"tls_ca": "ok",
18
"tls_cert": "ok",
19
"tls_key": "ok",
20
- "tls_skip_verify": true
20
+ "tls_skip_verify": true,
21
+ "force_http2": true
22
}
src/go/plugin/go.d/modules/typesense/testdata/config.yaml
+1
@@ -16,3 +16,4 @@ tls_ca: "ok"
16
tls_cert: "ok"
17
tls_key: "ok"
18
tls_skip_verify: yes
19
+force_http2: yes
src/go/plugin/go.d/modules/vcsa/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/vcsa/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/vernemq/testdata/config.json
+2
-1
@@ -16,5 +16,6 @@
16
"tls_ca": "ok",
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
- "tls_skip_verify": true
19
+ "tls_skip_verify": true,
20
+ "force_http2": true
21
}
src/go/plugin/go.d/modules/vernemq/testdata/config.yaml
+1
@@ -15,3 +15,4 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
src/go/plugin/go.d/modules/vsphere/testdata/config.json
+1
@@ -17,6 +17,7 @@
17
"tls_cert": "ok",
18
"tls_key": "ok",
19
"tls_skip_verify": true,
20
+ "force_http2": true,
21
"discovery_interval": 123.123,
22
"host_include": [
23
"ok"
src/go/plugin/go.d/modules/vsphere/testdata/config.yaml
+1
@@ -15,6 +15,7 @@ tls_ca: "ok"
15
tls_cert: "ok"
16
tls_key: "ok"
17
tls_skip_verify: yes
18
+force_http2: yes
19
discovery_interval: 123.123
20
host_include:
21
- "ok"
src/go/plugin/go.d/modules/windows/testdata/config.json
+2
-1
@@ -17,5 +17,6 @@
17
"tls_ca": "ok",
18
"tls_cert": "ok",
19
"tls_key": "ok",
20
- "tls_skip_verify": true
20
+ "tls_skip_verify": true,
21
+ "force_http2": true
22
}
src/go/plugin/go.d/modules/windows/testdata/config.yaml
+1
@@ -16,3 +16,4 @@ tls_ca: "ok"
16
tls_cert: "ok"
17
tls_key: "ok"
18
tls_skip_verify: yes
19
+force_http2: yes
src/go/plugin/go.d/pkg/web/client_config.go
+75
-10
@@ -3,12 +3,16 @@
3
package web
4
5
import (
6
+ "context"
7
+ "crypto/tls"
8
"errors"
9
"fmt"
10
"net"
11
"net/http"
12
"net/url"
13
14
+ "golang.org/x/net/http2"
15
+
16
"github.com/netdata/netdata/go/plugins/plugin/go.d/pkg/confopt"
17
"github.com/netdata/netdata/go/plugins/plugin/go.d/pkg/tlscfg"
18
)
@@ -34,10 +38,34 @@ type ClientConfig struct {
38
39
// TLSConfig specifies the TLS configuration.
40
tlscfg.TLSConfig `yaml:",inline" json:""`
41
+
42
+ ForceHTTP2 bool `yaml:"force_http2,omitempty" json:"force_http2"`
43
}
44
45
// NewHTTPClient returns a new *http.Client given a ClientConfig configuration and an error if any.
46
func NewHTTPClient(cfg ClientConfig) (*http.Client, error) {
47
+ var transport http.RoundTripper
48
+ var err error
49
+
50
+ if cfg.ForceHTTP2 {
51
+ transport, err = newHTTP2Transport(cfg)
52
+ } else {
53
+ transport, err = newHTTPTransport(cfg)
54
+ }
55
+ if err != nil {
56
+ return nil, err
57
+ }
58
+
59
+ client := &http.Client{
60
+ Timeout: cfg.Timeout.Duration(),
61
+ Transport: transport,
62
+ CheckRedirect: redirectFunc(cfg.NotFollowRedirect),
63
+ }
64
+
65
+ return client, nil
66
+}
67
+
68
+func newHTTPTransport(cfg ClientConfig) (*http.Transport, error) {
69
tlsConfig, err := tlscfg.NewTLSConfig(cfg.TLSConfig)
70
if err != nil {
71
return nil, fmt.Errorf("error on creating TLS config: %v", err)
@@ -52,24 +80,54 @@ func NewHTTPClient(cfg ClientConfig) (*http.Client, error) {
80
d := &net.Dialer{Timeout: cfg.Timeout.Duration()}
81
82
transport := &http.Transport{
55
- Proxy: proxyFunc(cfg.ProxyURL),
83
TLSClientConfig: tlsConfig,
84
DialContext: d.DialContext,
85
TLSHandshakeTimeout: cfg.Timeout.Duration(),
86
+ Proxy: proxyFunc(cfg.ProxyURL),
87
}
88
61
- return &http.Client{
62
- Timeout: cfg.Timeout.Duration(),
63
- Transport: transport,
64
- CheckRedirect: redirectFunc(cfg.NotFollowRedirect),
65
- }, nil
89
+ return transport, nil
90
}
91
68
-func redirectFunc(notFollowRedirect bool) func(req *http.Request, via []*http.Request) error {
69
- if follow := !notFollowRedirect; follow {
70
- return nil
92
+func newHTTP2Transport(cfg ClientConfig) (*http2Transport, error) {
93
+ tlsConfig, err := tlscfg.NewTLSConfig(cfg.TLSConfig)
94
+ if err != nil {
95
+ return nil, fmt.Errorf("error on creating TLS config: %v", err)
96
+ }
97
+
98
+ d := &net.Dialer{Timeout: cfg.Timeout.Duration()}
99
+
100
+ transport := &http2Transport{
101
+ t2: &http2.Transport{
102
+ TLSClientConfig: tlsConfig,
103
+ },
104
+ t2c: &http2.Transport{
105
+ AllowHTTP: true,
106
+ DialTLSContext: func(ctx context.Context, network, addr string, _ *tls.Config) (net.Conn, error) {
107
+ return d.DialContext(ctx, network, addr)
108
+ },
109
+ TLSClientConfig: tlsConfig,
110
+ },
111
+ }
112
+
113
+ return transport, nil
114
+}
115
+
116
+type http2Transport struct {
117
+ t2 *http2.Transport
118
+ t2c *http2.Transport
119
+}
120
+
121
+func (t *http2Transport) RoundTrip(req *http.Request) (resp *http.Response, err error) {
122
+ if req.URL.Scheme == "https" {
123
+ return t.t2.RoundTrip(req)
124
}
72
- return func(_ *http.Request, _ []*http.Request) error { return ErrRedirectAttempted }
125
+ return t.t2c.RoundTrip(req)
126
+}
127
+
128
+func (t *http2Transport) CloseIdleConnection() {
129
+ t.t2.CloseIdleConnections()
130
+ t.t2c.CloseIdleConnections()
131
}
132
133
func proxyFunc(rawProxyURL string) func(r *http.Request) (*url.URL, error) {
@@ -79,3 +137,10 @@ func proxyFunc(rawProxyURL string) func(r *http.Request) (*url.URL, error) {
137
proxyURL, _ := url.Parse(rawProxyURL)
138
return http.ProxyURL(proxyURL)
139
}
140
+
141
+func redirectFunc(notFollow bool) func(req *http.Request, via []*http.Request) error {
142
+ if notFollow {
143
+ return func(_ *http.Request, _ []*http.Request) error { return ErrRedirectAttempted }
144
+ }
145
+ return nil
146
+}