Очистка базы данных и файлового хранилища

Быстрая справка

Если вы чистите базу данных и файловое хранилище впервые, ознакомьтесь со статьей полностью.

В Staffcop два хранилища.

Файловое хранилище — очищается с помощью политики Автоочистка:  Администрирование → Данные системы → Автоочистка.
В старом интерфейск: раздел Политики → папка Политики → Системные политики → Автоочистка.

База данных PostgreSQL — удаление шардов: staffcop shard drop.
Просмотр шардов — staffcop shard list.
Путь: /var/lib/postgresql/.

После очистки базы данных PostgreSQL освободите физическое пространство диска с помощью скрипта Staffcop compact. Свободный объем на диске должен быть равен весу удаляемых данных + 20% запаса.

1. Раскомментируйте строки в /usr/share/staffcop/bin/compact:

 echo "Vacuum database"
 sudo -u postgres psql staffcop -c "vacuum full"

 После обновления сервера настройка сбрасывается — повторите.

2. Запустите скрипт:

 sudo staffcop compact

Можно настроить автоочистку БД через крон

Хранение данных в Staffcop

Staffcop использует два независимых хранилища: базу данных и файловое хранилище. Хранилища чистятся по-разному.

1. База данных PostgreSQL — в базе лежат события, учет рабочего времени, извлеченные данные, перехват переписок, настройки конфигураций и политик. События разбиты на шарды по месяцам — см. статью Шардирование.

  1. Файловое хранилище — здесь хранятся теневые копии файлов, скриншоты, распакованные архивы и их кэш, пакетные снимки экрана, записи звука и видео. Данные разбиты по дням.

Внимание

Файловое хранилище занимает значительно больше места, чем база данных. Считайте объем диска заранее в зависимости от количества клиентских машин, типа данных и сроков хранения. Пересматривать эти оценки заметно сложнее, когда диск уже переполнен.

Очистка базы данных

Если диск базы данных переполнен на 95 %, прием данных от агентов прекращается. В веб-интерфейсе в правом нижнем углу выводится предупреждение.

../_images/cleanup-1.png

Для устранения удалите шарды базы данных или расширьте носитель.

Просмотр шардов БД

В веб-интерфейсе: АдминистрированиеДанные системыБаза данных.

../_images/cleanup-2.png

Или в командной строке:

staffcop shard list

Пример вывода:

../_images/cleanup-3.png

Удаление шардов БД

Перед удалением учитывайте:

Удаление через веб-интерфейс:

  1. Обозначьте флагами месяцы для удаления.

  2. Перейдите Выполнить действияУдалить данные.

В командной строке:

sudo staffcop shard drop agent_event_2021_01_01

Формат: agent_event_ГГГГ_ММ_01. В примере удаляются данные за январь 2021 года.

Физическое освобождение места после удаления данных БД

При удалении данных в БД очищаются только таблицы шардов. Связанные данные — например, список перехваченных файлов — остаются. Так устроен PostgreSQL: данные удалены, а место на диске — нет.

Освободить место физически поможет нативный скрипт Staffcop compact.

Внимание

Выполнение скрипта останавливает сервер — возможно, на длительное время. Продолжительность зависит от размера базы данных и скорости носителей. Запланируйте выполнение в нерабочее время или добавьте задание в crontab.

  1. Откройте скрипт.

sudo nano /usr/share/staffcop/bin/compact
  1. Раскомментируйте строки echo "Vacuum database" и sudo -u postgres psql staffcop -c "vacuum full".

#!/bin/bash
# USE compact
# HELP Cleanup unreffered dimensions and vaccum database
staffcop stop
echo "Cleanup dimensions"
cat sql/cleanup_dimensions.sql| bin/sql
echo "Vacuum database"
sudo -u postgres psql staffcop -c "vacuum full"
staffcop start
echo "Cleanup done"
bin/info

Предупреждение

При обновлении сервера скрипты перезаписываются, а внесенные изменения исчезают. После следующего обновления повторите настройку.

Примечание

Для vacuum full нужно столько же свободного места, сколько занимает таблица со всеми индексами плюс запас 20%.

Команда не удаляет данные из таблицы сразу. Она делает копию таблицы, переносит туда актуальные строки, заново строит индексы и только потом убирает старую версию. Процедура транзакционная. Во время исполнения vacuum full таблица полностью заблокирована даже на чтение. Приложение в это время стоит в очереди. Иногда после завершения команды приходится перезапускать кластер СУБД.

Если прервать скрипт, таблица разблокируется, но изменения откатятся.

  1. Сохраните изменения.

  2. Запустите скрипт.

sudo staffcop compact

Автоматизация настройки очистки БД

Автоматическое удаление старых данных из базы по расписанию можно настроить по инструкции Настройка еженедельной очистки базы данных.

Последнее обновление: 18.09.26

Автоочистка файлового хранилища

Для очистки хранилища в Staffcop предусмотрена системная политика Автоочистка.

Чтобы настроить политику, в разделе Политики перейдите в папку ПолитикиСистемные политики и выберите Автоочистка.

Предупреждение

Политика очищает только Файловое хранилище, с базой данных она не работает!

В новом интерфейсе политика находится в разделе: АдминистрированиеДанные системыАвтоочистка.

../_images/cleanup-4.png

Параметр

Описание

Действие при переполнении

Доступные варианты:

Удалить — удаляет 1% самых старых файлов;
Переместить — перемещает 1% самых старых файлов;
Ничего — не выполняет действий, используется только при ручной очистке

Предупреждать при заполнении файлов

Пороговый процент заполнения диска для оповещения

Предупреждать при заполнении БД

Пороговый процент заполнения базы данных для оповещения

Удалять при заполнении файлов

Удаление файлов при достижении порогового значения,
если выбрано действие Удалять

Путь для резервного копирования

Каталог для сохранения бэкапов БД при превышении порога,
если выбрано действие Переместить

Если носитель заполнится больше указанного значения, политика Staffcop выполнит указанное в настройке действие: удалит, переместит или оставит все как есть.