bstatd

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (6)

просмотр истории страницы
{toc:maxLevel=3}

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

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

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

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

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

{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}