Просмотр Исходного

{toc:maxLevel=3}

h1. Статус развития bstatd

*Развитие службы агрегации детальной статистики bstatd завершено*, новые функции в ней уже не появляются.

Из известных проблем - ошибки в подсчёте объёмов трафика по ресурсам, учёт только исходящего трафика при обработке Netflow v9, невозможность работы под большой нагрузкой. Так bstatd [не участвует в процессе биллинга|CarbonBilling:Описание работы служб сбора статистики], эти проблемы нельзя считать критичными для работы системы.

Если представленных функций или точности работы службы Вам не достаточно, можете попробовать использовать [*более гибкий инструмент Nfsen*|CarbonBilling:nfsen]:
* Из минусов - он не интегрирован в интерфейс биллинга и собранная для него статистика занимает больше места.
* Из плюсов - он работает точно, способен выдерживать существенную нагрузку, в нём можно более гибко настраивать фильтры, работает заметно быстрей и позволяет анализировать нагрузку на канал.

h1. Структура файлов
Детальная статистика для учетных записей хранится в папке:
{code}/app/collector/var/stat/binstat/{code}
Например, заполняем статистику за декабрь 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 - суммарное статистика за месяц

h2. Содержимое файлов

h3. Структура таблицы
Направление (Входящий / Исходящий)
Время начала
Время конца
IP ресурса
Sport
Dport
[Протокол|https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers]
Объем
Не используется (оставлено для совместимости с Carbon Billing 4, ID тарифа)
[Подсеть|CarbonBilling:Правила и сети]
Не используется (оставлено для совместимости с Carbon Billing 4, ID правила в подсети)
Не используется (оставлено для совместимости с Carbon Billing 4, стоимость трафика)
SNAT-адрес

h3. total_297.bstat
{code}
-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
{code}
h3. days_297.bstat
{code}
-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
{code}
h3. main_01_297.bstat
{code}
-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
{code}
h3. topd_297.bstat
{code}
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
{code}
И так далее.
h1. Запросы из командной строки
Пример выборки кто ходил на адрес 8.8.8.8 в период с 03.12.2010 00.00 по 03.12.2010 23.59
{code}
chroot /app/collector
/usr/local/bin/bstat2xml -i 8.8.8.8 -t 1291334400-$((1291334400+24*3600)) -o /tmp/guvd.xml -u 1 -f
{code}
Для перевода даты 2018-10-29 10:50:00 часовой пояс UTC в unixtime используйте ниже приведенную команду или онлайн-конвертер
{code}
date -d "2018-10-29 10:50:00 UTC" +%s
{code}
Пример выборки абонентов кто обращался на подсеть адресов 87.240.128.0-87.240.191.255 в момент времени 10.04.2020 в 23:47:28
{code}
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
{code}
Выборка будет находиться в файле /tmp/guvd.xml
В файле будут указаны user_id (id учетной записи абонента)
Для поиска абонента по данному user_id можно использовать отчёт в конструкторе отчётов следующего содержания:
{code}
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$')
{code}
Для вывода справки по утилите введите команду
{code}
chroot /app/collector /usr/local/bin/bstat2xml --help
{code}

h1. Особенности
* Детальная статистика хранится по часовому поясу UTC, а не по часовому поясу сервера. И в выборке как в web интерфейсе, так и из командной строки время нужно задавать по часовому поясу UTC.
Пример: Допустим нужно посмотреть статистику на 29.10.2018 14:20:32 часовой пояс Москва. По UTC это +3 часа то есть 11:20:32. В командной строке запрос на перевод времени будет выглядеть:
{code}
date -d "2018-10-29 11:20:32 UTC" +%s
{code}
* В выгрузке детальной статистики объём указан в байтах. Пример:
{code}
<size>3369</size>
{code}

h1. Решение проблем
h4. Нет детальной статистики в учётной записи
# Проверьте, что имеется корректная структура каталогов службы bstatd с помощью команды ls. Должны быть следующие каталоги:
{code}
/app/collector/var/stat/binstat
/app/collector/var/stat/raw
/app/collector/var/stat/agreg
{code}
# В каталоге /app/collector/var/stat/binstat находятся подкаталоги со структурой: /binstat/ГодМесяц/user_id То есть статистика по учётной записи 1234 за ноябрь 2019 года будет храниться в каталоге:
{code}
/app/collector/var/stat/binstat/201911/1234
{code}
Проверьте есть ли каталог учётной записи за нужный период.

h4. Не обрабатывается сырая статистика
Накапливаются данные в каталоге сырой статистики:
{code}
/app/collector/var/stat/raw
{code}
Процесс *bstatd* был завершен неудачно не успев обработать статистику из папки /var/stat/raw . Перезапустите процесс, чтобы демон заново обработал эту статистику:
{code}
chroot /app/collector service bstatd restart
{code}