Анализатор топологии сети и протоколов в реальном времени с открытым исходным кодом
Skydive – это анализатор топологии сети и протоколов с открытым исходным кодом в режиме реального времени.
Он направлен на обеспечение всестороннего понимания того, что происходит в сетевой инфраструктуре.
Агенты по прыжкам собирают информацию о потоках и топологии и направляют их центральному агенту для дальнейшего анализа.
Вся информация хранится в базе данных Elasticsearch.
Skydive является SDN-агностиком, но предоставляет драйверы SDN, чтобы улучшить информацию о топологии и потоках.
В настоящее время предоставляется только драйвер Neutron, но скоро появятся новые драйверы.
Топологические стандарты
В настоящее время реализованы:
OVSDB
NETLINK
NetNS
Ethtool
Потоковые стандарты
В настоящее время внедрены:
Sflow
Зависимости
Go> = 1,5
Elasticsearch> = 2.0
Установка
Убедитесь, что у вас рабочая среда Go. Затем убедитесь, что у вас установлен Godep.
# go get github.com/redhat-cip/skydive/cmd/skydive
Сетевой анализатор реального времени с открытым исходным кодом
Skydive опирается на два основных компонента:
- skydive агент, должен запускаться на каждом узле, где информация о топологии и потоках будет захвачена
- skydive анализатор , собирающий данные узла, захваченные агентами
Конфигурация
Для настройки одного узла файл конфигурации является необязательным.
Для настройки нескольких узлов анализатор IP / PORT необходимо адаптировать.
Процессы привязаны к 127.0.0.1 по умолчанию, вы можете явно изменить адрес привязки с «listen: 0.0.0.0:port» в соответствующих разделах конфигурации.
См. полный список параметров конфигурации в файле конфигурации образца etc /skydive.yml.default.
Запуск
# skydive agent [--conf etc/skydive.yml] # skydive analyzer [--conf etc/skydive.yml]
Вэб интерфейс
Для доступа к WebUI агентов или анализатора:
http://<address>:<port>
Skydive клиент
Клиент Skydive может использоваться для взаимодействия с анализатором и агентами Skydive.
Запуск без какой-либо команды приведет к возврату всех доступных команд.
# skydive client Usage: skydive client [command] Available Commands: alert Manage alerts capture Manage captures Flags: -h, --help[=false]: help for client --password="": password auth parameter --username="": username auth parameter
Указание определенной подкоманды даст использование подкоманды.
# skydive client capture
Если в файле конфигурации определен механизм аутентификации, для каждой команды необходимо использовать параметр имени пользователя и пароля.
Переменные окружения SKYDIVE_USERNAME и SKYDIVE_PASSWORD могут использоваться как значение по умолчанию для параметров командной строки имени пользователя и пароля.
Запуск захвата потоков
Клиент Skydive позволяет запускать захваты потоков по топологии Узлы / Интерфейсы
# skydive client capture create -p <пробный путь>
Формат пробного пути:
host1[Type=host]/.../node_nameN[Type=node_typeN]
Тип имени узла может быть :
- хост
- интерфейс
- пространство имен
Типы узлов могут быть:
- хост
- netns
- ovsbridge
В настоящее время поддерживаются типы целевых узлов:
- ovsbridge
- veth
- device
- internal
- tun
- bridge
Чтобы запустить захват на мосту br1 OVS на хосте host1, используется следующий путь:
# skydive client capture create -p "host1[Type=host]/br1[Type=ovsbridge]""
Подстановочный шаблон для узла узла может использоваться для запуска захвата на всех хостах.
# skydive client capture create -p "*/br1[Type=ovsbridge]"
Захват может быть определен заранее и начнется, когда узел топологии будет соответствовать.
Чтобы удалить захват:
# skydive client capture delete <пробный путь>
API
Информация о топологии доступна через HTTP или API WebSocket
Конечная точка HTTP:
# curl http://<address>:<port>/api/topology
Конечная точка WebSocket:
# ws://<address>:<port>/ws/graph
Сообщения:
NodeUpdated
NodeAdded
NodeDeleted
EdgeUpdated
EdgeAdded
EdgeDeleted