blob: 8730bcd4d9ae05bfe990f5497c55c9fabb1a2fbd [file] [log] [blame]
syntax = "proto3";
package dubbo.mesh.v1alpha1;
option go_package = "github.com/apache/dubbo-kubernetes/api/mesh/v1alpha1";
import "google/protobuf/struct.proto";
import "google/protobuf/wrappers.proto";
// Metrics defines configuration for metrics that should be collected and
// exposed by dataplanes.
message Metrics {
// Name of the enabled backend
string enabledBackend = 1;
// List of available Metrics backends
repeated MetricsBackend backends = 2;
}
// MetricsBackend defines metric backends
message MetricsBackend {
// Name of the backend, can be then used in Mesh.metrics.enabledBackend
string name = 1;
// Type of the backend (Dubbo ships with 'prometheus')
string type = 2;
// Configuration of the backend
google.protobuf.Struct conf = 3;
}
// PrometheusMetricsBackendConfig defines configuration of Prometheus backend
message PrometheusMetricsBackendConfig {
// Port on which a dataplane should expose HTTP endpoint with Prometheus
// metrics.
uint32 port = 1;
// Path on which a dataplane should expose HTTP endpoint with Prometheus
// metrics.
string path = 2;
// Tags associated with an application this dataplane is deployed next to,
// e.g. service=web, version=1.0.
// `service` tag is mandatory.
map<string, string> tags = 3;
// If true then endpoints for scraping metrics won't require mTLS even if mTLS
// is enabled in Mesh. If nil, then it is treated as false.
google.protobuf.BoolValue skipMTLS = 4;
// Map with the configuration of applications which metrics are going to be
// scrapped by dubbo-dp.
repeated PrometheusAggregateMetricsConfig aggregate = 5;
// Configuration of Envoy's metrics.
PrometheusEnvoyConfig envoy = 6;
// Configuration of TLS for prometheus listener.
PrometheusTlsConfig tls = 7;
}
// PrometheusAggregateMetricsConfig defines endpoints that should be scrapped
// by dubbo-dp for prometheus metrics.
// Any configuration change require sidecar restart.
message PrometheusAggregateMetricsConfig {
// Name which identify given configuration.
string name = 1;
// Port on which a service expose HTTP endpoint with Prometheus metrics.
uint32 port = 2;
// Path on which a service expose HTTP endpoint with Prometheus metrics.
string path = 3;
// If false then the application won't be scrapped. If nil, then it is treated
// as true and dubbo-dp scrapes metrics from the service.
google.protobuf.BoolValue enabled = 4;
// Address on which a service expose HTTP endpoint with Prometheus metrics.
string address = 5;
}
// PrometheusEnvoyConfig defines filters that should be passed to Envoy
// for filtering.
message PrometheusEnvoyConfig {
// FilterRegex value that is going to be passed to Envoy for filtering
// Envoy metrics.
string filterRegex = 1;
// If true then return metrics that Envoy has updated (counters incremented
// at least once, gauges changed at least once, and histograms added to at
// least once). If nil, then it is treated as false.
google.protobuf.BoolValue usedOnly = 2;
}
// PrometheusEnvoyConfig defines Tls configuration for Prometheus listener.
message PrometheusTlsConfig {
enum Mode {
// control-plane delivers certificates to the prometheus listener.
// This should be used when prometheus is running inside the Mesh.
activeMTLSBackend = 0;
// In this way user is resposible for providing certificates to dataplanes.
// Path for the certificte and the key needs to be provided to the dataplane
// by environments variables:
// * DUBBO_DATAPLANE_RUNTIME_METRICS_CERT_PATH
// * DUBBO_DATAPLANE_RUNTIME_METRICS_KEY_PATH
providedTLS = 1;
// allows disabling TLS for the prometheus listener.
disabled = 2;
}
// mode defines how configured is the TLS for Prometheus.
// Supported values, delegated, disabled, activeMTLSBackend. Default to
// `activeMTLSBackend`.
Mode mode = 1;
}