Парсинг tcp пакетов от оборудования

10 000 руб. за проект • безналичный расчёт, электронные деньги
10 января 2016, 17:12 • 7 откликов • 83 просмотра
Основная решаемая агентом задача: Транслирование информации, получаемой из tcp пакетов, в систему мониторинга zabbix.

ОС: Linux (Debian и производные)
Предпочитаемый язык выполнения: С и С++.

Тезисно, алгоритм программы вижу себе так:
1. Запуск->Вычитка конфигурационного файла с описанием tcp пакетов (т.е. необходимо разработать конфигурационный файл с описанием типов и форматов tcp пакетов указанных в протоколе с указанием индивидуального идентификатора значащей единицы информации в пакете - динамическая вычитка конфигурации описание пакетов необходима для того, чтобы можно было руками поменять формат пакета или добавить описание нового устройства, так как разработчик железа меняет версии прошивки часто, и форматы пакетов незначительно, но меняются).

2. Вычитка конфигурационного файла настройка агента (в данном конфигурационном файле указывается какой порт будет слушать агент, а также названия "узлов сети" системы мониторинга zabbix и сопоставления идентификаторов элементов данных получаемых из tcp пакета с идентификаторами элементов данных в системе мониторинга zabbix).

3. Открыть на прослушивание tcp порт хост машины указанный в настройке агента.

4. При поступлении tcp пакета на порт необходимо: разобрать данный из пакета согласно описанию из конфигурационного файла пакетов (идентификатор типа пакета указан в одном и том же месте получаемого пакета, по этому идентификатору можно однозначно вычислить, какое описание пакета применять для его разбора) -> сопоставить значащие данных из пакета по их идентификатором с именами данных указанных в конфиг файле настройки агента (так как tcp пакет содержит данные сразу со всех портов контролируемых устройств, часть из этих данных не имеет смысла пересылать в систему мониторинга). -> сформировать текстовую строку определенного образца и передать её сторонней программе zabbix_sendler (в текстовой строке указывается: [имя узла сети системы мониторинга] - берётся из конфигурационного файла настройке агента по уникальному идентификатору контролируемого оборудования взятому из tcp пакета; [имя элемента данных системы мониторинга] - берётся из конфигурационного файла настройке агента; [значащий параметр данных] - получается из tcp пакета)

5. Передача отформатированных данных в zabbix sendler.

Дело в том, что для тестирования я на 80% уже реализовал этот обработчик, но на php. Однако PHP CLI как демон на сервере меня очень смущает (не могу ничего сказать о отказоустойчивости такого решения), а в моё случае это важно.
Также хочу пояснить, что отдаю эту задачу во фриланс, так как не имею возможности по времени самому реализовать её в короткие сроки на другом языке в виду большой загрузки по времени.

Стоимость проекта готов обсуждать.
В обязательном порядке отвечаю на Ваши вопросы =)