Network Latency Exporter
network-latency-exporter¶
Important: In some cases, TCP and UDP probes can show large packet loss not due to network problems, but due to system
settings. The net.ipv4.icmp_ratelimit
kernel parameter with a default value of 1000
prevents a node from sending "
ICMP time in-transit exceeded" reply immediately, so mtr
utility which is used in network-latency-exporter
shows
losses.
Address Important: Please note that memory consumption by network-latency-exporter depends on number of nodes where exporter will be installed and depends on number of using protocols.
The main formula is:
To avoid this behavior, set kernel variable net.ipv4.icmp_ratelimit = 0
on all nodes.
Field | Description | Scheme |
---|---|---|
install | Allows to disable create network-latency-exporter during the deployment. | bool |
name | A name of the microservice to deploy with. This name is used as the name of the microservice deployment and in labels. | string |
image | A docker image to be used for the network-latency-exporter deployment. | string |
rbac.createClusterRole | Allow creating ClusterRole. If set to false , ClusterRole must be created manually. |
bool |
rbac.createClusterRoleBinding | Allow creating ClusterRoleBinding. If set to false , ClusterRoleBinding must be created manually. |
bool |
rbac.setupSecurityContext | Allow creating PodSecurityPolicy or SecurityContextConstraints. If set to false , PodSecurityPolicy / SecurityContextConstraints must be created manually. |
bool |
rbac.privileged | If true , set parameters in PSP or SCC for ability to running container in the privileged mode and set privileged: true to the security context in the exporter's container. |
bool |
createGrafanaDashboards | Allow creating Grafana Dashboards Network Latency Overview and Network Latency Details . |
bool |
serviceAccount.create | Allow creating ServiceAccount. If set to false , ServiceAccount must be created manually. |
bool |
serviceAccount.name | Provide a name in place of network-latency-exporter for ServiceAccount. | string |
extraArgs | The level of application logging may be set using extraArgs. Set INFO or DEBUG to see informative messages about metrics collection. |
object |
discoverEnable | Allow enabling/disabling script for discovering nodes IP. | bool |
targets | List nodes with name and IP address. For example, [{"name": "node1", "ipAddress": "1.2.3.1"}, {"name": "node2", "ipAddress": "1.2.3.3"}] | object |
requestTimeout | The response time for each packet sent which the application waits response, in seconds. | integer |
timeout | The metrics collection timeout. Can be calculated as TIMEOUT = 10s + (REQUEST_TIMEOUT * PACKETS_NUM * |
string |
packetsNum | The number of packets to send per probe. | integer |
packetSize | The size of packet to sent in bytes. | integer |
checkTarget | The comma-separated list of network protocols and ports (separated by ':') through which packets are sent. The supported protocols are: UDP , TCP , ICMP . If no port is specified for the protocol, port 1 is used. |
string |
serviceMonitor.enabled | If true, a ServiceMonitor is created for a prometheus-operator . |
string |
serviceMonitor.interval | Scraping interval for Prometheus. | bool |
additionalLabels | Allows specifying custom labels for DaemonSet of network-latency-exporter . |
object |
setupSecurityContext | Allows to create PodSecurityPolicy or SecurityContextConstraints. | string |
port | The port for node-exporter daemonset and service. | int |
resources | The resources that describe the compute resource requests and limits for single pods. | v1.ResourceRequirements |
securityContext | SecurityContext holds pod-level security attributes. Default for Kubernetes, securityContext:{ runAsUser: 0, fsGroup: 2000 } . |
*v1.PodSecurityContext |
tolerations | Tolerations allow the pods to schedule onto nodes with matching taints. | []v1.Toleration |
nodeSelector | Defines which nodes the pods are scheduled on. Specified just as map[string]string. For example: \"type: compute\" | map[string]string |
affinity | If specified, the pod's scheduling constraints | *v1.Affinity |
annotations | Map of string keys and values stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. Specified just as map[string]string. For example: "annotations-key: annotation-value" | map[string]string |
labels | Map of string keys and values that can be used to organize and categorize (scope and select) objects. Specified just as map[string]string. For example: "label-key: label-value" | map[string]string |
priorityClassName | PriorityClassName assigned to the Pods to prevent them from evicting. | string |
Example:
networkLatencyExporter:
install: true
name: "network-latency-exporter"
rbac:
createClusterRole: true
createClusterRoleBinding: true
setupSecurityContext: true
privileged: false
createGrafanaDashboards: true
serviceAccount:
create: true
name: "network-latency-exporter"
image: prod.platform.system.monitoring_network-latency-exporter:latest
resources:
limits:
cpu: 200m
memory: 256Mi
requests:
cpu: 100m
memory: 128Mi
securityContext:
runAsUser: "0"
tolerations: []
nodeSelector: {}
affinity: {}
labels:
label.key: label-value
annotations:
annotation.key: annotation-value
priorityClassName: priority-class
extraArgs:
- "--log.level=debug"
requestTimeout: 5
timeout: 60s
packetsNum: 10
packetSize: 64
checkTarget: "UDP:80,TCP:80,ICMP"
serviceMonitor:
enabled: true
interval: 30s