
Sergey
05.09.2017
13:11:59
у вас эта информация на блюдечке внутри приложения, но нет, бл*, мы будем отправлять пакеты в ядро, потом вытаскивать их из ядра, переводя девайс в промиск, потом читать, потом считать

bebebe
05.09.2017
13:12:10

Daniel
05.09.2017
13:12:11

Nikolay
05.09.2017
13:12:25

Google

Sergey
05.09.2017
13:12:26
гланды через жопу можно конечно удалять. и это не смертельно.

Nikolay
05.09.2017
13:12:30
если весь - тогда libpcap
и для этого, повторюсь, promisc не нужен, wireshark не в promisc моде работает

bebebe
05.09.2017
13:12:59
переобувочка detected

Nikolay
05.09.2017
13:13:09
а если свой - тогда просто в приложении плюсовать и все, да

Aleksandr
05.09.2017
13:13:17
оно не смертельно, оно идиотично.
почему? если есть задача обрабатывать весь трафик программно? для этого есть ядерный механизм netfilter-queue (NFQUEUE) он дает оверхед порядка 10-30% процентов, это штатный механизм для ситуации когда нужно обработать пакет в user-space

Nikolay
05.09.2017
13:13:53

Alexander
05.09.2017
13:14:18
А еще есть куча приложений по анализу траффика. Нафига все в одном месте-то собирать?

Nikolay
05.09.2017
13:15:21

Aleksandr
05.09.2017
13:15:25

Nikolay
05.09.2017
13:15:36
а оказалось - только свой
приложения конкретного

Google

Alexander
05.09.2017
13:15:48
Наверняка, мониторинг траффика - это не осноновная задача приложения Сергея. Проще и правильней будет использовать то, что для таких задач и предназначено.

Sergey
05.09.2017
13:15:50

bebebe
05.09.2017
13:16:03
бггггг Николай наконец то начинает одуплять реальность происходящего

Nikolay
05.09.2017
13:16:25
тогда не буду всерьез воспринимать, спасибо

Daniel
05.09.2017
13:16:53
но, вообще-то, парвильно делать так:
http.Serve принимает первым параметром net.Listener
net.Listener - это интерфейс, с методом Accept
Accept возвращает net.Conn, который тоже интерфейс, с методами Read и Write
соответственно, можете нат tcp.Listener сделать свою обертку, которая по Accept будет возвращать еще одну обертку, которая будет считать байты

Sergey
05.09.2017
13:16:55

Aleksandr
05.09.2017
13:17:02

Alexander
05.09.2017
13:17:12

Sergey
05.09.2017
13:17:21

Nikolay
05.09.2017
13:17:55

Sergey
05.09.2017
13:17:58

Nikolay
05.09.2017
13:18:36
по ссылке выше была простая мидлваря, которая считает байты, в твоем случае можно что-то похожее сделать

Aleksandr
05.09.2017
13:18:41

Alexander
05.09.2017
13:20:11
В общем, начали с подсчета траффика на порту 80, и дошли до чего-то хорошего, но другого. Топикстартер феерически вопрос спросил изначально :)

Sergey
05.09.2017
13:20:25
можно. и будет работать. но криво.

Nikolay
05.09.2017
13:21:07
то, что ты написал - это то, как НАДО делать

Google

Aleksandr
05.09.2017
13:21:21

Sergey
05.09.2017
13:21:22

Nikolay
05.09.2017
13:21:31
лол.
что лол? мониторинг логов не имеет отношения к вебсерверу
не надо смешивать логику

Sergey
05.09.2017
13:21:40

Vladimir
05.09.2017
13:21:56

Nikolay
05.09.2017
13:21:58
сорри, но это наркомания

Sergey
05.09.2017
13:22:36
меж тем http.ListenAndServe() это вебсервер.

Nikolay
05.09.2017
13:23:04

Sergey
05.09.2017
13:23:13
а задача не анализировать лог.

Nikolay
05.09.2017
13:23:38
считать сумму колонки в логе - это такой же анализ, как любой другой
и он не имеет отношения к функционалу вебсервера

Sergey
05.09.2017
13:23:51
задача не анализировать лог.
задача - показывать чиселку и складывать ее в прометеус.
эта чиселка занимает в памяти приложения один мьютекс и int64

Aleksandr
05.09.2017
13:24:23

Nikolay
05.09.2017
13:24:39
ну и вот, работает у нас nginx. Мы берем его лог, суммируем и пишем в прометей, все верно. Сам nginx мы при этом никак не трогаем.

Sergey
05.09.2017
13:24:48

Google

Nikolay
05.09.2017
13:24:58

Sergey
05.09.2017
13:25:08
рынок - да
боюсь, у нас с вами различные представления о рынке.

Nikolay
05.09.2017
13:25:12
или ты будешь патч в nginx пилить для этого?
сорри, но это треш

Sergey
05.09.2017
13:25:24
"код нджинкса вечен и стабилен"
"патчат ядро только мудаки"

Aleksandr
05.09.2017
13:25:37

Sergey
05.09.2017
13:25:58

Aleksandr
05.09.2017
13:26:00

Nikolay
05.09.2017
13:26:01
это просто сторонний код, который решает какую-то задачу
он не имеет никакого отношения к логике вебсервера в принципе

Aleksandr
05.09.2017
13:26:30

Sergey
05.09.2017
13:26:36
хм, все кроме парсинга HTTP в нджинксе не имеет отношения к вебсерверу
:)
по такой логике

Nikolay
05.09.2017
13:27:14

Aleksandr
05.09.2017
13:27:15

Nikolay
05.09.2017
13:27:25
берем ELK - и вся статистика у нас на ладони
или берем прометей и пишем в него сабмиттер - то же самое

Google

Sergey
05.09.2017
13:27:38
ох епт, розовые пони

Nikolay
05.09.2017
13:27:40
причем тут вебсервер вообще?

Aleksandr
05.09.2017
13:28:04

Nikolay
05.09.2017
13:28:23

Alexander
05.09.2017
13:28:26

Sergey
05.09.2017
13:28:30

Aleksandr
05.09.2017
13:28:52

Sergey
05.09.2017
13:29:03

Nikolay
05.09.2017
13:29:26
расскажите нам
зависит от стека, который используется. В некоторых местах тупо собираются логи и обрабатываются отдельно спарком, например. В других используется ELK, в котором кибана раз в секунду обновляет агрегированную статистику.

Sergey
05.09.2017
13:29:33
вот оно что

Zaur
05.09.2017
13:29:43
ребят, подскажите почему в OSX команда go в консоле ни на что ни как не реагирует? ни ошибок ни компилирования в случае go build my.go

Sergey
05.09.2017
13:29:43
то есть для проекта уровня яндекс-метрики/директа мы считаем статистику в эластике
ок

Nikolay
05.09.2017
13:29:47
в третьих вообще Kafka и на выходе у нее агрегатор, который пишет в прометей

Sergey
05.09.2017
13:29:49
я пожалуй сольюсь нахуй
потому что это фарс

Nikolay
05.09.2017
13:30:19

Sergey
05.09.2017
13:30:36

Aleksandr
05.09.2017
13:30:51

Nikolay
05.09.2017
13:30:56

Sergey
05.09.2017
13:31:02