Статус развития bstatd
Развитие службы агрегации детальной статистики bstatd завершено, новые функции в ней уже не появляются.
Из известных проблем - ошибки в подсчёте объёмов трафика по ресурсам, учёт только исходящего трафика при обработке Netflow v9, невозможность работы под большой нагрузкой. Так bstatd не участвует в процессе биллинга, эти проблемы нельзя считать критичными для работы системы.
Если представленных функций или точности работы службы Вам не достаточно, можете попробовать использовать более гибкий инструмент Nfsen:
- Из минусов - он не интегрирован в интерфейс биллинга и собранная для него статистика занимает больше места.
- Из плюсов - он работает точно, способен выдерживать существенную нагрузку, в нём можно более гибко настраивать фильтры, работает заметно быстрей и позволяет анализировать нагрузку на канал.
Структура файлов
Детальная статистика для учетных записей хранится в папке:
/app/collector/var/stat/binstat/
Например, заполняем статистику за декабрь 2015 для учетной записи с id 297:
- Создаем папку 201512 (год и месяц), в ней создаем папку с 297 (id учетки).
- В ней создаем (или копируем с биллинга, на котором есть статистика) файлы:
- days_297.bstat
- main_01_297.bstat - статистика за 1 число
- main_23_297.bstat - статистика за 23 число
- topd_297.bstat - топ статистики по дням
- topm_297.bstat - топ статистики за месяц
- total_297.bstat - суммарное статистика за месяц
Содержимое файлов
Структура таблицы
Направление (Входящий / Исходящий)
Время начала
Время конца
IP ресурса
Sport
Dport
Протокол
Объем
Не используется (оставлено для совместимости с Carbon Billing 4, ID тарифа)
Подсеть
Не используется (оставлено для совместимости с Carbon Billing 4, ID правила в подсети)
Не используется (оставлено для совместимости с Carbon Billing 4, стоимость трафика)
SNAT-адрес
total_297.bstat
-1 1448232589 1446695036 000.000.000.000 0 0 0 8008274647 0 0 0 0 000.000.000.000 1 1448232589 1446695036 000.000.000.000 0 0 0 645240342 0 0 0 0 000.000.000.000
days_297.bstat
-1 1446315474 1446400778 000.000.000.000 0 0 0 25275819 0 0 0 0 000.000.000.000 1 1446315305 1446400778 000.000.000.000 0 0 0 4247052 0 0 0 0 000.000.000.000 -1 1446400973 1446487083 000.000.000.000 0 0 0 4023584430 0 0 0 0 000.000.000.000 1 1446400973 1446487083 000.000.000.000 0 0 0 237694446 0 0 0 0 000.000.000.000
main_01_297.bstat
-1 1446315474 1446315474 010.004.001.083 138 138 17 705 0 0 0 0 000.000.000.000 1 1446315305 1446315367 111.221.029.253 0 443 6 2143 0 2 0 0 000.000.000.000 -1 1446315306 1446315367 111.221.029.253 443 0 6 4405 0 2 0 0 000.000.000.000 1 1446314769 1446315474 010.004.255.255 138 138 17 1163 0 0 0 0 000.000.000.000 -1 1446314769 1446314769 000.000.000.000 0 0 17 458 0 0 0 0 000.000.000.000 1 1446314756 1446315986 217.069.139.074 0 995 6 19702 0 2 0 0 000.000.000.000 -1 1446314756 1446315986 217.069.139.074 995 0 6 420507 0 2 0 0 000.000.000.000 1 1446314756 1446315906 188.166.049.110 0 110 6 1920 0 2 0 0 000.000.000.000 -1 1446314756 1446315906 000.000.000.000 0 0 6 1600 0 2 0 0 000.000.000.000 1 1446314756 1446315986 010.004.001.083 53 0 17 7395 0 0 0 0 000.000.000.000 -1 1446314756 1446315986 010.004.001.001 53 0 17 7395 0 0 0 0 000.000.000.000 1 1446314685 1446315975 173.194.222.109 0 993 6 8235 0 2 0 0 000.000.000.000 -1 1446314686 1446315976 173.194.222.109 993 0 6 8025 0 2 0 0 000.000.000.000 1 1446314660 1446315987 000.000.000.000 65535 65535 6 8400 0 2 0 0 000.000.000.000 -1 1446314660 1446315987 000.000.000.000 65535 65535 6 6400 0 2 0 0 000.000.000.000 1 1446314661 1446315962 000.000.000.000 65535 65535 17 6319 0 2 0 0 000.000.000.000 -1 1446314661 1446315962 000.000.000.000 65535 65535 17 9727 0 2 0 0 000.000.000.000
topd_297.bstat
1 1446686278 1446687004 178.062.227.067 0 0 0 59840 0 2 0 0 000.000.000.000 -1 1446687796 1446687796 087.242.088.094 0 0 0 59556 0 2 0 0 000.000.000.000 -1 1446695166 1446695166 185.005.137.202 0 0 0 57665 0 2 0 0 000.000.000.000 1 1446694623 1446694912 111.221.026.251 0 0 0 55088 0 2 0 0 000.000.000.000 1 1446694986 1446694986 091.227.068.116 0 0 0 54901 0 2 0 0 000.000.000.000 1 1446629375 1446629500 093.170.027.073 0 0 0 54687 0 2 0 0 000.000.000.000 -1 1446631641 1446631729 199.080.054.050 0 0 0 53364 0 2 0 0 000.000.000.000
И так далее.
Запросы из командной строки
Пример выборки кто ходил на адрес 8.8.8.8 в период с 03.12.2010 00.00 по 03.12.2010 23.59
chroot /app/collector /usr/local/bin/bstat2xml -i 8.8.8.8 -t 1291334400-$((1291334400+24*3600)) -o /tmp/guvd.xml -u 1 -f
Для перевода даты 2018-10-29 10:50:00 часовой пояс UTC в unixtime используйте ниже приведенную команду или онлайн-конвертер
date -d "2018-10-29 10:50:00 UTC" +%s
Пример выборки абонентов кто обращался на подсеть адресов 87.240.128.0-87.240.191.255 в момент времени 10.04.2020 в 23:47:28
chroot /app/collector /usr/local/bin/bstat2xml -i 87.240.128.0-87.240.191.255 -t 1586562448 -o /tmp/guvd.xml -u 1 -f
Выборка будет находиться в файле /tmp/guvd.xml
В файле будут указаны user_id (id учетной записи абонента)
Для поиска абонента по данному user_id можно использовать отчёт в конструкторе отчётов следующего содержания:
select a.name as "ФИО", a.contract_number as "Договор" from abonents a left join users u on u.abonent_id=a.id where u.id = (':user_id$')
Для вывода справки по утилите введите команду
chroot /app/collector /usr/local/bin/bstat2xml --help
Особенности
- Детальная статистика хранится по часовому поясу UTC, а не по часовому поясу сервера. И в выборке как в web интерфейсе, так и из командной строки время нужно задавать по часовому поясу UTC.
Пример: Допустим нужно посмотреть статистику на 29.10.2018 14:20:32 часовой пояс Москва. По UTC это +3 часа то есть 11:20:32. В командной строке запрос на перевод времени будет выглядеть:date -d "2018-10-29 11:20:32 UTC" +%s
- В выгрузке детальной статистики объём указан в байтах. Пример:
<size>3369</size>
Решение проблем
Нет детальной статистики в учётной записи
- Проверьте, что имеется корректная структура каталогов службы bstatd с помощью команды ls. Должны быть следующие каталоги:
/app/collector/var/stat/binstat /app/collector/var/stat/raw /app/collector/var/stat/agreg
- В каталоге /app/collector/var/stat/binstat находятся подкаталоги со структурой: /binstat/ГодМесяц/user_id То есть статистика по учётной записи 1234 за ноябрь 2019 года будет храниться в каталоге:
/app/collector/var/stat/binstat/201911/1234
Проверьте есть ли каталог учётной записи за нужный период.
Не обрабатывается сырая статистика
Накапливаются данные в каталоге сырой статистики:
/app/collector/var/stat/raw
Процесс bstatd был завершен неудачно не успев обработать статистику из папки /var/stat/raw . Перезапустите процесс, чтобы демон заново обработал эту статистику:
chroot /app/collector service bstatd restart