-
Notifications
You must be signed in to change notification settings - Fork 4.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Expose Envoy's /stats for statsd agents (#7173)
* Expose Envoy /stats for statsd agents; Add testcases * Remove merge conflict leftover * Add support for prefix instead of path; Fix docstring to mirror these changes * Add new config field to docs; Add testcases to check that /stats/prometheus is exposed as well * Parametrize matchType (prefix or path) and value * Update website/source/docs/connect/proxies/envoy.md Co-Authored-By: Paul Banks <[email protected]> Co-authored-by: Paul Banks <[email protected]>
- Loading branch information
1 parent
6404967
commit a335aa5
Showing
8 changed files
with
274 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
services { | ||
name = "s1" | ||
port = 8080 | ||
connect { | ||
sidecar_service { | ||
proxy { | ||
upstreams = [ | ||
{ | ||
destination_name = "s2" | ||
local_bind_port = 5000 | ||
config { | ||
protocol = "http" | ||
} | ||
} | ||
] | ||
config { | ||
protocol = "http" | ||
envoy_stats_bind_addr = "0.0.0.0:1239" | ||
} | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
services { | ||
name = "s2" | ||
port = 8181 | ||
connect { | ||
sidecar_service { | ||
proxy { | ||
config { | ||
protocol = "http" | ||
} | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
#!/bin/bash | ||
|
||
set -eEuo pipefail | ||
|
||
gen_envoy_bootstrap s1 19000 primary | ||
gen_envoy_bootstrap s2 19001 primary |
62 changes: 62 additions & 0 deletions
62
test/integration/connect/envoy/case-stats-proxy/verify.bats
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
#!/usr/bin/env bats | ||
|
||
load helpers | ||
|
||
@test "s1 proxy admin is up on :19000" { | ||
retry_default curl -f -s localhost:19000/stats -o /dev/null | ||
} | ||
|
||
@test "s2 proxy admin is up on :19001" { | ||
retry_default curl -f -s localhost:19001/stats -o /dev/null | ||
} | ||
|
||
@test "s1 proxy listener should be up and have right cert" { | ||
assert_proxy_presents_cert_uri localhost:21000 s1 | ||
} | ||
|
||
@test "s2 proxy listener should be up and have right cert" { | ||
assert_proxy_presents_cert_uri localhost:21001 s2 | ||
} | ||
|
||
@test "s2 proxy should be healthy" { | ||
assert_service_has_healthy_instances s2 1 | ||
} | ||
|
||
@test "s1 upstream should have healthy endpoints for s2" { | ||
# protocol is configured in an upstream override so the cluster name is customized here | ||
assert_upstream_has_endpoints_in_status 127.0.0.1:19000 1a47f6e1~s2.default.primary HEALTHY 1 | ||
} | ||
|
||
@test "s1 upstream should be able to connect to s2 with http/1.1" { | ||
run retry_default curl --http1.1 -s -f -d hello localhost:5000 | ||
[ "$status" -eq 0 ] | ||
[ "$output" = "hello" ] | ||
} | ||
|
||
@test "s1 proxy should be exposing the /stats prefix" { | ||
# Should have http metrics. This is just a sample one. Require the metric to | ||
# be present not just found in a comment (anchor the regexp). | ||
retry_default \ | ||
must_match_in_stats_proxy_response localhost:1239 \ | ||
'stats' '^http.envoy_metrics.downstream_rq_active' | ||
|
||
# Response should include the the local cluster request. | ||
retry_default \ | ||
must_match_in_stats_proxy_response localhost:1239 \ | ||
'stats' 'cluster.local_agent.upstream_rq_active' | ||
|
||
# Response should include the http public listener. | ||
retry_default \ | ||
must_match_in_stats_proxy_response localhost:1239 \ | ||
'stats' 'http.public_listener_http' | ||
|
||
# /stats/prometheus should also be reachable and labelling the local cluster. | ||
retry_default \ | ||
must_match_in_stats_proxy_response localhost:1239 \ | ||
'stats/prometheus' '[\{,]local_cluster="s1"[,}]' | ||
|
||
# /stats/prometheus should also be reachable and exposing metrics. | ||
retry_default \ | ||
must_match_in_stats_proxy_response localhost:1239 \ | ||
'stats/prometheus' 'envoy_http_downstream_rq_active' | ||
} |
Oops, something went wrong.