Работа системного аккаунтинга

Материал из 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). 
    остальные поля идентичны формату файлов статистики
Была ли эта информация полезной? Да | Нет
Личные инструменты