TCP RTT

Présentation

Le check TCP RTT transmet les délais d’aller-retour entre le host de l’Agent et tout host avec lequel il communique. Ce check est passif et ne transmet que les durées RTT pour les paquets envoyés et reçus à l’extérieur du check. Le check n’envoie aucun paquet.

Ce check est uniquement fourni avec les paquets 64 bits DEB et RPM de l’Agent v5 de Datadog. Pour d’autres versions de l’Agent, consultez la section relative à l’utilisation de Datadog avec go-metro (en anglais) afin de découvrir comment créer le binaire go-metro.

Implémentation

Installation

Le check utilise les timestamps fournis par la bibliothèque PCAP pour calculer l’intervalle de temps entre tout paquet sortant et l’accusé de réception TCP correspondant. Pour cette raison, vous devez installer et configurer PCAP.

Les systèmes basés sur Debian doivent utiliser l’une des commandes suivantes :

$ sudo apt-get install libcap
$ sudo apt-get install libcap2-bin

Les systèmes basés sur Redhat doivent utiliser l’une des commandes suivantes :

$ sudo yum install libcap
$ sudo yum install compat-libcap1

Enfin, configurez PCAP :

$ sudo setcap cap_net_raw+ep /opt/datadog-agent/bin/go-metro

Configuration

Modifiez le fichier go-metro.d/conf.yaml dans le dossier conf.d/ à la racine du répertoire de configuration de votre Agent. Consultez le fichier d’exemple go-metro.d/conf.yaml pour découvrir toutes les options de configuration disponibles :

L’exemple suivant récupère les durées TCP RTT pour app.datadoghq.com et 192.168.0.22 :

init_config:
    snaplen: 512
    idle_ttl: 300
    exp_ttl: 60
    statsd_ip: 127.0.0.1
    statsd_port: 8125
    log_to_file: true
    log_level: info

instances:
    - interface: eth0
      tags:
          - env:prod
      ips:
          - 45.33.125.153
      hosts:
          - app.datadoghq.com

Validation

Pour vérifier que le check fonctionne correctement, assurez-vous que les métriques system.net.tcp.rtt s’affichent dans l’interface Datadog. En outre, si vous exécutez sudo /etc/init.d/datadog-agent status, le message suivant devrait s’afficher :

datadog-agent.service - "Datadog Agent"
  Loaded: loaded (/lib/...datadog-agent.service; enabled; vendor preset: enabled)
  Active: active (running) since Thu 2016-03-31 20:35:27 UTC; 42min ago
 Process: 10016 ExecStop=/opt/.../supervisorctl -c /etc/dd-....conf shutdown (code=exited, status=0/SUCCESS)
 Process: 10021 ExecStart=/opt/.../start_agent.sh (code=exited, status=0/SUCCESS)
Main PID: 10025 (supervisord)
  CGroup: /system.slice/datadog-agent.service
          ├─10025 /opt/datadog-...python /opt/datadog-agent/bin/supervisord -c /etc/dd-agent/supervisor.conf
          ├─10043 /opt/datadog-...python /opt/datadog-agent/agent/dogstatsd.py --use-local-forwarder
          ├─10044 /opt/datadog-agent/bin/go-metro -cfg=/etc/dd-agent/conf.d/go-metro.yaml
          ├─10046 /opt/datadog-.../python /opt/datadog-agent/agent/ddagent.py
          └─10047 /opt/datadog-.../python /opt/datadog-agent/agent/agent.py foreground --use-local-forwarder

Si le check TCP RTT a démarré, une ligne go-metro similaire à celle ci-dessus doit s’afficher :

Il s’agit d’un check passif. Ainsi, les métriques sont uniquement transmises si des paquets sont activement envoyés aux hosts mentionnés dans le fichier yaml.

Données collectées

Métriques

system.net.tcp.rtt
(gauge)
The TCP round trip time.
Shown as millisecond
system.net.tcp.rtt.avg
(gauge)
The average TCP round trip time as typically computed by the TCP stack.
Shown as millisecond
system.net.tcp.rtt.jitter
(gauge)
The TCP round trip time jitter.
Shown as millisecond