/itclog

Сценарий для журналирования ресурсов заданного процесса (сервис на bash)

Primary LanguageShell

Сценарий для журналирования ресурсов заданного процесса (сервис на bash)

Порядок работы со сценарием

  1. Для запуска запустить itclog_start.sh или itclog.sh start
  2. Для просмотра статуса запустить itclog_status.sh или itclog.sh status
  3. Для останова запустить itclog_stop.sh или itclog.sh stop
  4. Для перезапуска запустить itclog_restart.sh или itclog.sh restart
  5. Для безусловного останова запустить itclog_kill.sh или itclog.sh kill
  6. Для удаления ВСЕХ логов itclog_clean.sh или itclog.sh clean

Настройка

Все настройки производятся корректировкой файла "itclog.conf.sh". Главное - это установить переменную CMD, которая определяет имя процесса, ресурсы которого записываются в журнал через заданные промежутки времени.

Формат логов

Логи имеют формат CSV (common separated value). Первой строкой идут названия столбцов:

  1. DateTime - дата/время в формате YYYY.MM.DD-hh:mm:ss
  2. PID - идентификатор процесса
  3. RSz - объем занятой процессом резидентной физической памяти в килобайтах (1024 байта)
  4. VSz - объем занятой процессом виртуальной памяти в килобайтах (1024 байта)
  5. Mem - процент занятой процессом общей памяти
  6. CPU - процент загрузки процессора данным процессом
  7. User - имя пользователя, от имени которого запущен процесс
  8. UpTime - время работы процесса
  9. Command - команда, с помощью которой был запущен процесс

Особенности работы

Работа сценария основана на использовании утилиты ps.

В каталоге, где размещается сценарий itclog.sh при запуске сценария создается файл itclog.pid, который содержит PID фонового процесса.

Создается два типа файлов журналов в формате CSV:

  • itclog.csv- информация обновляется раз в час, если не заданно в конфигурации иное. Ротация логов не производится, файл непрерывно увеличивается.

  • itclog.N.csv - оперативный лог обновляется раз в минуту (если иное не задано в конфигурации), N изменяется от 0 до 9 каждый час. Таким образом, оперативная информация хранится за последние 9-10 часов. Последний (текущий) лог имеет N=0 (т.е. производится т.н. "ротация" логов).

Как посмотреть заполнение лога "в реальном времени"

Используйте например такую команду:

tail -n 1 -f itclog.0.csv

или

tail -f itclog.csv

BUGS

  • Сценарий данной версии не будет корректно работать, если имя программы (CMD) содержит пробелы.
  • По хорошему нужно добавить flock для надежного предотвращения повторного запуска сценария как фонового процесса.