mirror of https://github.com/status-im/consul.git
Basic proxy telemetry working; not sure if it's too ugly; need to instrument things we care about
This commit is contained in:
parent
a7038454fd
commit
7649d630c6
|
@ -1064,6 +1064,9 @@ func (s *HTTPServer) AgentConnectProxyConfig(resp http.ResponseWriter, req *http
|
||||||
// Add telemetry config
|
// Add telemetry config
|
||||||
telemetry := s.agent.config.TelemetryConfig(false)
|
telemetry := s.agent.config.TelemetryConfig(false)
|
||||||
if len(telemetry) > 0 {
|
if len(telemetry) > 0 {
|
||||||
|
// Rely on the fact that TelemetryConfig makes a new map each call to
|
||||||
|
// override the prefix here without affecting other callers.
|
||||||
|
telemetry["MetricsPrefix"] = "consul.proxy." + target.ID
|
||||||
config["telemetry"] = telemetry
|
config["telemetry"] = telemetry
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2816,7 +2816,7 @@ func TestAgentConnectCALeafCert_goodNotLocal(t *testing.T) {
|
||||||
r.Fatalf("leaf has not updated")
|
r.Fatalf("leaf has not updated")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Got a new leaf. Sanity check it's a whole new key as well as differnt
|
// Got a new leaf. Sanity check it's a whole new key as well as different
|
||||||
// cert.
|
// cert.
|
||||||
if issued.PrivateKeyPEM == issued2.PrivateKeyPEM {
|
if issued.PrivateKeyPEM == issued2.PrivateKeyPEM {
|
||||||
r.Fatalf("new leaf has same private key as before")
|
r.Fatalf("new leaf has same private key as before")
|
||||||
|
@ -2903,14 +2903,14 @@ func TestAgentConnectProxyConfig_Blocking(t *testing.T) {
|
||||||
"local_service_address": "127.0.0.1:8000",
|
"local_service_address": "127.0.0.1:8000",
|
||||||
"bind_port": float64(1234),
|
"bind_port": float64(1234),
|
||||||
"connect_timeout_ms": float64(500),
|
"connect_timeout_ms": float64(500),
|
||||||
"telemetry": telemetryDefaults,
|
"telemetry": makeTelemetryDefaults("test"),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
ur, err := copystructure.Copy(expectedResponse)
|
ur, err := copystructure.Copy(expectedResponse)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
updatedResponse := ur.(*api.ConnectProxyConfig)
|
updatedResponse := ur.(*api.ConnectProxyConfig)
|
||||||
updatedResponse.ContentHash = "8f68aa2a4ba81b06"
|
updatedResponse.ContentHash = "29d7e419862bc848"
|
||||||
upstreams := updatedResponse.Config["upstreams"].([]interface{})
|
upstreams := updatedResponse.Config["upstreams"].([]interface{})
|
||||||
upstreams = append(upstreams,
|
upstreams = append(upstreams,
|
||||||
map[string]interface{}{
|
map[string]interface{}{
|
||||||
|
@ -3248,9 +3248,11 @@ func TestAgentConnectProxyConfig_aclServiceReadDeny(t *testing.T) {
|
||||||
require.True(acl.IsErrPermissionDenied(err))
|
require.True(acl.IsErrPermissionDenied(err))
|
||||||
}
|
}
|
||||||
|
|
||||||
var telemetryDefaults = map[string]interface{}{
|
func makeTelemetryDefaults(targetID string) map[string]interface{} {
|
||||||
"FilterDefault": true,
|
return map[string]interface{}{
|
||||||
"MetricsPrefix": "consul",
|
"FilterDefault": true,
|
||||||
|
"MetricsPrefix": "consul.proxy." + targetID,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAgentConnectProxyConfig_ConfigHandling(t *testing.T) {
|
func TestAgentConnectProxyConfig_ConfigHandling(t *testing.T) {
|
||||||
|
@ -3304,7 +3306,7 @@ func TestAgentConnectProxyConfig_ConfigHandling(t *testing.T) {
|
||||||
"bind_address": "0.0.0.0",
|
"bind_address": "0.0.0.0",
|
||||||
"bind_port": 10000, // "randomly" chosen from our range of 1
|
"bind_port": 10000, // "randomly" chosen from our range of 1
|
||||||
"local_service_address": "127.0.0.1:8000", // port from service reg
|
"local_service_address": "127.0.0.1:8000", // port from service reg
|
||||||
"telemetry": telemetryDefaults,
|
"telemetry": makeTelemetryDefaults(reg.ID),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -3333,7 +3335,7 @@ func TestAgentConnectProxyConfig_ConfigHandling(t *testing.T) {
|
||||||
"bind_address": "0.0.0.0",
|
"bind_address": "0.0.0.0",
|
||||||
"bind_port": 10000, // "randomly" chosen from our range of 1
|
"bind_port": 10000, // "randomly" chosen from our range of 1
|
||||||
"local_service_address": "127.0.0.1:8000", // port from service reg
|
"local_service_address": "127.0.0.1:8000", // port from service reg
|
||||||
"telemetry": telemetryDefaults,
|
"telemetry": makeTelemetryDefaults(reg.ID),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -3362,7 +3364,7 @@ func TestAgentConnectProxyConfig_ConfigHandling(t *testing.T) {
|
||||||
"bind_address": "0.0.0.0",
|
"bind_address": "0.0.0.0",
|
||||||
"bind_port": 10000, // "randomly" chosen from our range of 1
|
"bind_port": 10000, // "randomly" chosen from our range of 1
|
||||||
"local_service_address": "127.0.0.1:8000", // port from service reg
|
"local_service_address": "127.0.0.1:8000", // port from service reg
|
||||||
"telemetry": telemetryDefaults,
|
"telemetry": makeTelemetryDefaults(reg.ID),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -3398,7 +3400,7 @@ func TestAgentConnectProxyConfig_ConfigHandling(t *testing.T) {
|
||||||
"local_service_address": "127.0.0.1:8000", // port from service reg
|
"local_service_address": "127.0.0.1:8000", // port from service reg
|
||||||
"connect_timeout_ms": 1000,
|
"connect_timeout_ms": 1000,
|
||||||
"foo": "bar",
|
"foo": "bar",
|
||||||
"telemetry": telemetryDefaults,
|
"telemetry": makeTelemetryDefaults(reg.ID),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -3441,7 +3443,7 @@ func TestAgentConnectProxyConfig_ConfigHandling(t *testing.T) {
|
||||||
"bind_port": float64(1024),
|
"bind_port": float64(1024),
|
||||||
"local_service_address": "127.0.0.1:9191",
|
"local_service_address": "127.0.0.1:9191",
|
||||||
"connect_timeout_ms": float64(2000),
|
"connect_timeout_ms": float64(2000),
|
||||||
"telemetry": telemetryDefaults,
|
"telemetry": makeTelemetryDefaults(reg.ID),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -265,6 +265,10 @@ func (w *AgentConfigWatcher) handler(blockVal watch.BlockingParamVal,
|
||||||
ProxiedServiceNamespace: "default",
|
ProxiedServiceNamespace: "default",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if t, ok := resp.Config["telemetry"].(map[string]interface{}); ok {
|
||||||
|
cfg.Telemetry = t
|
||||||
|
}
|
||||||
|
|
||||||
// Unmarshal configs
|
// Unmarshal configs
|
||||||
err := mapstructure.Decode(resp.Config, &cfg.PublicListener)
|
err := mapstructure.Decode(resp.Config, &cfg.PublicListener)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -7,6 +7,7 @@ import (
|
||||||
|
|
||||||
"github.com/hashicorp/consul/api"
|
"github.com/hashicorp/consul/api"
|
||||||
"github.com/hashicorp/consul/connect"
|
"github.com/hashicorp/consul/connect"
|
||||||
|
"github.com/hashicorp/consul/lib"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Proxy implements the built-in connect proxy.
|
// Proxy implements the built-in connect proxy.
|
||||||
|
@ -44,6 +45,15 @@ func (p *Proxy) Serve() error {
|
||||||
if cfg == nil {
|
if cfg == nil {
|
||||||
// Initial setup
|
// Initial setup
|
||||||
|
|
||||||
|
// Setup telemetry if configured
|
||||||
|
if len(newCfg.Telemetry) > 0 {
|
||||||
|
p.logger.Printf("[DEBUG] got Telemetry confg: %v", newCfg.Telemetry)
|
||||||
|
_, err := lib.StartupTelemetry(newCfg.Telemetry)
|
||||||
|
if err != nil {
|
||||||
|
p.logger.Printf("[ERR] proxy telemetry config error: %s", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Setup Service instance now we know target ID etc
|
// Setup Service instance now we know target ID etc
|
||||||
service, err := newCfg.Service(p.client, p.logger)
|
service, err := newCfg.Service(p.client, p.logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue