# Configuration for a metric measuring bytes sent from a server # to a client apiVersion: "config.istio.io/v1alpha2" kind: metric metadata: name: mongosentbytes namespace: default spec: value: connection.sent.bytes | 0 # uses a TCP-specific attribute dimensions: source_service: source.workload.name | "unknown" source_version: source.labels["version"] | "unknown" destination_version: destination.labels["version"] | "unknown" monitoredResourceType: '"UNSPECIFIED"' --- # Configuration for a metric measuring bytes sent from a client # to a server apiVersion: "config.istio.io/v1alpha2" kind: metric metadata: name: mongoreceivedbytes namespace: default spec: value: connection.received.bytes | 0 # uses a TCP-specific attribute dimensions: source_service: source.workload.name | "unknown" source_version: source.labels["version"] | "unknown" destination_version: destination.labels["version"] | "unknown" monitoredResourceType: '"UNSPECIFIED"' --- # Configuration for a Prometheus handler apiVersion: "config.istio.io/v1alpha2" kind: prometheus metadata: name: mongohandler namespace: default spec: metrics: - name: mongo_sent_bytes # Prometheus metric name instance_name: mongosentbytes.metric.default # Mixer instance name (fully-qualified) kind: COUNTER label_names: - source_service - source_version - destination_version - name: mongo_received_bytes # Prometheus metric name instance_name: mongoreceivedbytes.metric.default # Mixer instance name (fully-qualified) kind: COUNTER label_names: - source_service - source_version - destination_version --- # Rule to send metric instances to a Prometheus handler apiVersion: "config.istio.io/v1alpha2" kind: rule metadata: name: mongoprom namespace: default spec: match: context.protocol == "tcp" && destination.service.host == "mongodb.default.svc.cluster.local" actions: - handler: mongohandler.prometheus instances: - mongoreceivedbytes.metric - mongosentbytes.metric