Работа системного аккаунтинга
Материал из ISPWiki
Системный аккаунтинг - функциональная возможность ядра операционной системы (Linux/FreeBSD) производить учет потребленных ресурсов каждым запущенным в системе процессом. Для этого ядро для каждого запущенного процесса в системе в момент его завершения записывает в служебный файл (pacct) информацию о том, кем был процесс запущен, с каким кодом завершен, сколько процессорного времени потратил, сколько операций ввода/вывода сделал и т.д. (подробнее см. man 5 acct). Таким образом, с помощью системного аккаунтинга становится возможным производить подсчет использованных ресурсов сервера тем или иным пользователем.
ISPmanager поддерживает учет следующих ресурсов:
- средний расход оперативной памяти;
- пользовательское и системной время CPU;
- общее время работы программы;
- количество операции ввода/вывода.
Для этого при установке функциональной возможности "Системный аккаунтинг" через меню Возможности (ISPmanager) происходит добавление задание в Сron по ежечасному запуску программы acctstat.
acctstat
acctstat - программа, осуществляющая чтение служебного файла pacct, агрегирование и запись статистики в текстовой форме в файлы, а также ротацию последних.
Программа имеет следующие ключи запуска:
-n - не запоминать последнюю прочитанную позицию. Следующий вызов acctstat начнет чтение с той же позиции, что и текущий вызов -p - вывести статистику на экран, не записывая её в файл статистики -a - показывать статистику для всех пользователей системы -g - не транслировать GID в имена групп. -f - указать путь до файла pacct
Программа работает по следующему алгоритму:
- если программа запущена в 00 часов, выполнить ротацию файлов статистики,
- если не указан ключ -f, получить от ISPmanager путь до файла pacct (директива path pacct в ispmgr.conf),
- если не указан ключ -а, получить список пользователей ISPmanager,
- найти нужное смещение в файле pacct. При необходимости произвести поиск в архивных файлах,
- произвести анализ статистических данных, начиная с найденного смещения. Учет производится по группе, т.е. в статистику пользователя попадают все пользователи, у которых gid равен gid пользователя (ftp-аккаунты и др.),
- если не указана опция -p, записать статистику в файлы *-daily.log, использовав текущие дату и время, иначе - вывести информацию на экран. При этом если указаны ключи -p и -a, то статистика отобразится для всех пользователей системы, а не только для тех, которые видны в ISPmanager,
- если не указана опция -n, сохранить текущее смещение.
Файлы статистики
Файлы статистики располагаются в папке /usr/local/ispmgr/var/resource-usage.
Файлы *-daily.log - текстовый файл (для каждого пользователя свой), в который производится ежечасный сбор статистики. Имеет следующий формат (каждая строка соответствует одного запуску acctstat)
unixstamp user_time system_time elapsed_time average_mem io
где unixstamp - дата и время сбора статистики в формате Unix,
user_time - затраченное процессорное время в режиме пользователя (сек),
system_time - затраченное процессорное время в режиме ядра (сек),
elapsed_time - суммарное время, прошедшее от старта процессов до их завершения (сек),
average_mem - средний расход оперативной памяти (КБ),
io - количество операции ввода-вывода (шт.).
Файл *.log - текстовый файл (для каждого пользователя свой), в который производится ежедневная агрегация статистики, собранной за день. Формат файла полностью идентичен предыдущему, за исключением того, что в первом поле хранится только дата.
Формат вывода на экран
Если запуск pacct сопровождается ключом -p, то утилита выводит данные на экран в следующем формате:
groupname|gid user_time system_time elapsed_time average_mem io
где groupname|gid - имя группы или ее gid (в зависимости от отсутствия или наличия ключа -g).
остальные поля идентичны формату файлов статистики
