Menu
Grafana Cloud

Warning

Network metrics is an experimental under development feature, expect breaking changes.

Network metrics

Grafana Beyla can be configured to provide network metrics between different endpoints. For example, between physical nodes, containers, Kubernetes pods, services, etc.

Get started

To get started using Beyla networking metrics, consult the quickstart setup documentation, and for advanced configuration, consult the configuration documentation.

Metric attributes

Network metrics provides a single metric:

  • beyla.network.flow.bytes, if it is exported via OpenTelemetry.
  • beyla_network_flow_bytes_total, if it is exported by a Prometheus endpoint.

The metric represents a counter of the Number of bytes observed between two network endpoints, and can have the attributes in the following table.

By default, only the following attributes are reported: k8s.src.owner.name, k8s.src.namespace, k8s.dst.owner.name, k8s.dst.namespace, and k8s.cluster.name.

Attribute name (OpenTelemetry / Prometheus)Description
beyla.ip / beyla_ipLocal IP address of the Beyla instance that emitted the metric
transportL4 Transport protocol (for example, TCP or UDP)
src.address / src_addressSource IP address of Network flow
dst.address / dst_addressDestination IP address of Network flow
src.port / src_portSource port of Network flow
dst.port / dst_portDestination port of Network flow
src.name / src_nameName of Network flow source: Kubernetes name, host name, or IP address
dst.name / dst_nameName of Network flow destination: Kubernetes name, host name, or IP address
src.cidr / src_cidrIf the cidrs configuration section is set, the CIDR that matches the source IP address
dst.cidr / dst_cidrIf the cidrs configuration section is set, the CIDR that matches the destination IP address
k8s.src.namespace / k8s_src_namespaceKubernetes namespace of the source of the flow
k8s.dst.namespace / k8s_dst_namespaceKubernetes namespace of the destination of the flow
k8s.src.name / k8s_src_nameName of the source Pod, Service, or Node
k8s.dst.name / k8s_dst_nameName of the destination Pod, Service, or Node
k8s.src.type / k8s_src_typeType of the source: Pod, Node, or Service
k8s.dst.type / k8s_dst_typeType of the destination: Pod, Node, or Service
k8s.src.owner.name / k8s_src_owner_nameName of the owner of the source Pod. If there is no owner, the Pod name is used
k8s.dst.owner.name / k8s_dst_owner_nameName of the owner of the destination Pod. If there is no owner, the Pod name is used
k8s.src.owner.type / k8s_src_owner_typeType of the owner of the source Pod: Deployment, DaemonSet, ReplicaSet, StatefulSet, or Pod if there is no owner
k8s.dst.owner.type / k8s_dst_owner_typeType of the owner of the destination Pod: Deployment, DaemonSet, ReplicaSet, StatefulSet, or Pod if there is no owner
k8s.src.node.ip / k8s_src_node_ipIP address of the source Node
k8s.dst.node.ip / k8s_dst_node_ipIP address of the destination Node
k8s.src.node.name / k8s_src.node_nameName of the source Node
k8s.dst.node.name / k8s_dst.node_nameName of the destination Node
k8s.cluster.name / k8s_cluster_nameName of the Kubernetes cluster. Beyla can auto-detect it on Google Cloud, Microsoft Azure, and Amazon Web Services. For other providers, set the BEYLA_KUBE_CLUSTER_NAME property

How to specify reported attributes

If the metric with all the possible attributes is reported it might lead to a cardinality explosion, especially when including external traffic in the src.address/dst.address attributes.

You can specify which attributes are allowed in the Beyla configuration, to aggregate the metric by them.

For example:

yaml
network:
  enable: true
  allowed_attributes:
    - k8s.src.owner.name
    - k8s.src.namespace
    - k8s.dst.owner.name
    - k8s.dst.namespace
    - k8s.cluster.name

In this example, the bytes metric is the aggregated by the source and destination owners. This is, all the pods from a given Deployment/StatefulSet/ReplicaSet/DaemonSet.