Скрипт парсер базы ClickHouse и формирование отчета в PDF

Гость5 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
08.10.2021

Есть приложение которое занимается аналитикой посещений, пишет данные в базу ClickHouse

Ключевые поля для работы:

packetDateTime, srcIP, dstIP, sourcePort, destinationPort, protocol.

Для отображаения графиков используется Grafana

Вот пример запроса который делает Grafana в базу ClickHouse для отображения информации которая на скриншоте:

"SELECT packetDateTime, IPv4NumToString(srcIp) as srcIP, IPv4NumToString(dstIp) as dstIP, sourcePort, destinationPort, numberOfPackets as packets, length, srcAsn, dstAsn, transform(protocol, [17, 6, 1], ['udp', 'tcp', 'icmp'], 'unknown') as protocol, IPv4NumToString(agentIpAddress) as agent,inputInterface as input, outputInterface as output, sampleRatio, arrayMap(x -> transform(x, [1, 2, 4, 8, 16, 32, 64, 128, 256, 512], ['fin', 'syn', 'rst', 'psh', 'ack', 'urg', 'ecn', 'cwr', 'nonce', 'reserved'], 'unknown'), bitmaskToArray(flags)) as TcpFlags FROM fastnetmon.traffic WHERE packetDate BETWEEN toDate(1546300799) AND toDate(1548979200) AND packetDateTime BETWEEN toDateTime(1546300799) AND toDateTime(1548979200) AND (srcIp = IPv4StringToNum('8.8.8.8') OR dstIp = IPv4StringToNum('8.8.8.8'))",

Приложение может запускать bash и JSON скрипты в Perl или Python.

Приложение передает в скрипт IP (dstIP) адрес в момент начала всплеска и окончания массовых обращений.

Задача:

Построение графика в момент сработки тригера с учетом времени 5 минут до начала и 5 минут после окончания.

Построение графика в форме кольца ASN с которых сработа тригер.

Постоение графика через минуту после начала сработки в котором будет срез 100 IP адресов с которых идут обращения.

После окончания массовых обращений сделать выборку топ 20 самых активных IP адресов с которых были обращения.

Все данные которые получены должны быть упакованы в PDF в формате отчета.

Полученный отчёт отправить через email, Telegram, Viber

За определенным dstIP необходимо закрепить одного человека или группы получателей отчета.

Заявки фрилансеров