Skydive relies on two main components:

  • skydive agent, has to be started on each node where the topology and flows informations will be captured
  • skydive analyzer, the node collecting data captured by the agents



  • Go >= 1.11
  • libpcap (dev)
  • libxml2 (dev)
  • libvirt (dev)
  • protoc >= 3.0
  • protobuf
  • npm



Below how to install the minimal required dependencies for Fedora and Ubuntu.


sudo dnf install -y git make patch golang findutils protobuf-c-compiler protobuf-devel \
  npm libpcap-devel libxml2-devel libvirt-devel


sudo apt-get install -y git make patch golang findutils protobuf-compiler libprotobuf-dev \
  npm libpcap0.8-dev libxml2-dev libvirt-dev


Create a dedicated GOPATH.

For example:

mkdir $HOME/go
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$PATH

then get and build Skydive

mkdir -p $GOPATH/src/
git clone \
cd $GOPATH/src/

eBPF support

Skydive can leverage eBPF programs for topology and flow capture. This provides a lightweight solution for retrieving topology information such as process socket information and for packet processing within the kernel.

Some extra dependencies are required :

  • llvm
  • clang
  • kernel-headers / linux-libc-dev
  • bcc / bcc-devel

To enable the eBPF support :

make install WITH_EBPF=true

DPDK flow capture support

Skydive support flow capture from DPDK NICs. This allows starting flow capture on-demand on DPDK interface like any other interface.

Some extra dependencies are required :

  • numactl-devel
  • kernel-devel

To enable the DPDK support :

make install WITH_DPDK=true

The DPDK probe requires some configuration adjustments. Below the DPDK configuration section :

  # DPDK port listening flows from
    # - 0
    # - 1

  # nb workers per port
  # workers: 4

  # debug message every n seconds
  # debug: 1

Ports to be used need to be un-commented or added.

Third Parties

Collectd plugin

Skydive comes with a Collectd plugin which allows to expose Collectd metrics to the Skydive topology. The plugin has to be started on the same host than Skydive agents and will update the Host node of the Skydive topology.

In order to compile the Skydive Collectd plugin one need to have the Collectd sources.

export COLLECTD_SRC=/tmp/collectd

git clone $COLLECTD_SRC
cd $GOPATH/src/

make contrib.collectd

A share library is generated in contrib/collectd folder.

In order to use it, it has to be copied in the collectd plugin folder. In order to configure it the following section has to be added to the collectd config file.

LoadPlugin skydive
<Plugin skydive>
    Address ""
    Username ""
    Password ""
  • Address is the Skydive agent address
  • Username Skydive cluster authentication user name
  • Password Skydive cluster authentication password


In order to get memory metrics from Collectd:

LoadPlugin memory

LoadPlugin skydive
<Plugin skydive>
    Address ""
    Username ""
    Password ""

All the Collectd metrics are currently reported in a Collectd sub-key of the Host topology node.

skydive client query 'G.V().HasKey("Collectd").Values("Collectd")