Sentry によるデータのクリーンアップ

1. Sentry プログラムのルート ディレクトリの.env設定を変更します。

SENTRY_EVENT_RETENTION_DAYS=14

2. データソフトクリーニング

ワーカーコンテナを入力します。

docker exec -it sentry_onpremise_worker_1 /bin/bash

データを何日間保持するか。クリーンアップでは、delete コマンドを使用して postgresql データを削除しますが、削除、更新、その他の操作では、対応する行を DEAD としてマークするだけで、ディスク領域は実際には解放されません。

sentry cleanup --days 14

3. PostgreSQL データのクリーニング

PostgreSQL コンテナを入力します。

docker exec -it sentry_onpremise_postgres_1 /bin/bash

クリーンアップを実行します。

vacuumdb -U postgres -d postgres -v -f --analyze

4.crontabスケジュールされた清掃を追加し、企業のデータ量に応じて時間を調整します

0 16 * * 5 cd /App/sentry && { time docker-compose run --rm worker cleanup --days 14; } &> /tmp/sentry-cleanup.log
0 16 * * 6 { time docker exec -i $(docker ps --format "table {
   
   {.Names}}" | grep postgres) vacuumdb -U postgres -d postgres -v -f --analyze; } &> /tmp/sentry-vacuumdb.log

5. データベースのクリーニングの 3 番目のステップに時間がかかりすぎて完了できない場合は、空のテーブルを直接作成してから、nodestore_nodeクリーニングの 3 番目のステップを実行できます。

PostgreSQL コンテナを入力します。

docker exec -it sentry_onpremise_postgres_1 /bin/bash

PostgreSQL データベースにログインします。

su - postgres
psql

テーブルを削除する前後で、テーブルが占有している領域を確認できます。一般に、nodestore_nodeデータ テーブルが最も大きなディスク領域を占有しています。

SELECT
    table_schema || '.' || table_name AS table_full_name,
    pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"')) AS size
FROM information_schema.tables
ORDER BY
pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC limit 10;

新しいバックアップ テーブルと名前変更方法を組み合わせると、Sentry サービスの通常の動作に影響を与えることなくデータを削除できます。この操作には時間がかかる場合があります。tmux次のscreenツールを使用してバックグラウンドで実行できます。

ALTER TABLE nodestore_node RENAME TO nodestore_node_old;
CREATE TABLE nodestore_node (LIKE nodestore_node_old INCLUDING ALL);
ALTER TABLE nodestore_node_old DISABLE TRIGGER ALL;
DROP TABLE nodestore_node_old CASCADE;

おすすめ

転載: blog.csdn.net/dongsong1117/article/details/130284378