Sentry Rate Limit
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π³ΠΈΠ±ΠΊΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ/ΠΏΡΠΎΠ΅ΠΊΡ/ΠΊΠ»ΡΡ.
ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ
- Python >= 3.9
- PostgreSQL >= 11.8
- Sentry API auth token
Authentication token permissions:
org:read
project:read
project:write
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- Π‘ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
ratelimit/config.example.py
Π²ratelimit/config.py
- ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π² ΡΠ°ΠΉΠ»Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
ratelimit/config.py
, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ - Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
pip install -r requirements.txt
- Π‘ΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
python setup.py install
- ΠΠ°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
sentry-rate-limit
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ Python
- Π‘ΠΎΠ·Π΄Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅
python3 -m venv .venv
- ΠΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅:
-
source .venv/bin/activate
- Π΄Π»Ρ Linux ΠΈ MacOS -
.venv\Scripts\activate.bat
- Π΄Π»Ρ Windows -
deactivate
- Π΄Π»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Π² Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ
-
- Π‘ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
ratelimit/config.example.py
Π²ratelimit/config.py
- ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π² ΡΠ°ΠΉΠ»Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
ratelimit/config.py
, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ - Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
pip install -r requirements.txt
- Π‘ΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
python setup.py install
- ΠΠ°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
sentry-rate-limit
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Docker
- Π‘ΠΎΠ±ΡΠ°ΡΡ ΠΎΠ±ΡΠ°Π·
docker build --file ./docker/Dockerfile --tag YOUR_IMAGE_NAME . --no-cache
- ΠΠ°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
docker run --name YOUR_NAME --rm -it YOUR_IMAGE_NAME
ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΡΡΠΊΠ° Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π² Docker
docker run --name YOUR_NAME \
-e "SENTRY_BEARER_TOKEN=00000000000000000000000000000000" \
-e "LOGGING_ENABLE=True" \
-e "LOGGING_LEVEL=info" \
--rm -it YOUR_IMAGE_NAME
Environment variables
Sentry
-
SENTRY_URL
: URL Π°Π΄ΡΠ΅Ρ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Sentry (examplehttps://sentry.io
) -
SENTRY_BEARER_TOKEN
: Π’ΠΎΠΊΠ΅Π½ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ (ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅)
PostgreSQL
-
POSTGRES_DB_NAME
: ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ (defaultpostgres
) -
POSTGRES_DB_USER
: ΠΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (defaultpostgres
) -
POSTGRES_DB_PASSWORD
: ΠΠ°ΡΠΎΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ -
POSTGRES_HOST
: ΠΠΌΡ Ρ ΠΎΡΡΠ° (defaultlocalhost
) -
POSTGRES_PORT
: ΠΠΎΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ (default5432
)
ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
-
LOGGING_ENABLE
: ΠΠΊΡΠΈΠ²Π°ΡΠΈΡ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ (defaultFalse
) -
LOGGING_LEVEL
: Π£ΡΠΎΠ²Π΅Π½Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ (defaultdebug
) -
LOGGING_FILE_NAME
: ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Π΄Π»Ρ Π»ΠΎΠ³ΠΎΠ²
ΠΡΡΠ³ΠΈΠ΅
-
DEFAULT_LIMIT_COUNT
: ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ (default300
) -
DEFAULT_LIMIT_WINDOW
: ΠΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ (default60
) -
MIN_LIMIT_COUNT
: ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ, Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΠΌΡΡ Π·Π° 1 ΠΌΠΈΠ½ΡΡΡ (default60
)
Π‘ΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠΌΠ°Π½Π΄
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄:
Usage: sentry-rate-limit [OPTIONS] COMMAND [ARGS]...
Sentry Rate Limit this is a utility for setting limits in.
Options:
--version Show the version and exit.
--help Show this message and exit.
Commands:
add Add data to the database.
cleanup Delete data without dependencies.
delete Delete data from the database.
describe DESCRIBE.
get GET.
help Show this message and exit.
init Initialize the tables in the database.
set Set the speed limit in sentry.
sync Syncs data from Sentry.
update Update the data in the database.
ΠΠΎΠΌΠ°Π½Π΄Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
ΠΠΎΠΌΠ°Π½Π΄Π° - init
Usage: sentry-rate-limit init [OPTIONS]
Initialize the tables in the database.
Options:
--help Show this message and exit.
ΠΠΎΠΌΠ°Π½Π΄Π° - add
ΠΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
ΠΠ΅Π»ΡΠ·Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅Ρ Π² Sentry
-
--limit-count
- ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π»ΠΈΠΌΠΈΡ Π½Π° Π²ΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡEΡΠ»ΠΈ Π»ΠΈΠΌΠΈΡ Π½Π΅ ΡΠΊΠ°Π·Π°Π½, Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΠΉ Π»ΠΈΠΌΠΈΡ:
default_limit_count
Π² ΡΠ°ΠΉΠ»Π΅ratelimit/config.py
-
--desc
- Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π΄Π»Ρ Π»ΠΈΠΌΠΈΡΠ°
Usage: sentry-rate-limit add [OPTIONS]
Add data to the database.
Examples:
$ sentry-rate-limit add --organization-name test --limit-count 300 --desc "Testing."
$ sentry-rate-limit add --organization-name test --limit-count 300
$ sentry-rate-limit add --organization-name test
Options:
-o, --organization-name TEXT Organization name. Not display name.
-l, --limit-count INTEGER Limit count.
-d, --desc TEXT Description.
--help Show this message and exit.
ΠΠΎΠΌΠ°Π½Π΄Π° - delete
Π£Π΄Π°Π»ΡΠ΅Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
Usage: sentry-rate-limit delete [OPTIONS]
Delete data from the database.
Examples:
$ sentry-rate-limit delete --organization-name test
Options:
-o, --organization-name TEXT Organization name. Not display name.
--help Show this message and exit.
ΠΠΎΠΌΠ°Π½Π΄Π° - describe
- Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅
ΠΠΎΠΌΠ°Π½Π΄Π° - get
- Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅
ΠΠΎΠΌΠ°Π½Π΄Π° - update
ΠΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ Π»ΠΈΠΌΠΈΡΡ Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ/ΠΏΡΠΎΠ΅ΠΊΡ/ΠΊΠ»ΡΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ .
Usage: sentry-rate-limit update [OPTIONS] COMMAND [ARGS]...
Update the data in the database.
Options:
--help Show this message and exit.
Commands:
limit Update limit.
Usage: sentry-rate-limit update limit [OPTIONS]
Update limit.
Examples:
$ sentry-rate-limit update limit --organization-name test --limit-count 500 --desc "Testing."
$ sentry-rate-limit update limit --organization-name test --project-name LoadTest --limit-count 100
$ sentry-rate-limit update limit --organization-name test --project-name LoadTest --public-key cec9dfceb0b74c1c9a5e3c135585f364 --limit-count 50
Options:
-o, --organization-name TEXT Organization name. Not display name.
-p, --project-name TEXT Project name.
-k, --public-key TEXT Public key.
-l, --limit-count INTEGER Limit count. [required]
-d, --desc TEXT Description.
--help Show this message and exit.
ΠΠΎΠΌΠ°Π½Π΄Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
ΠΠΎΠΌΠ°Π½Π΄Π° cleanup
ΠΠ°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π±Π΅Π· Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
Usage: sentry-rate-limit cleanup [OPTIONS]
Delete data without dependencies.
Options:
--help Show this message and exit.
ΠΠΎΠΌΠ°Π½Π΄Π° set
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π»ΠΈΠΌΠΈΡΡ Π² sentry.
Usage: sentry-rate-limit set [OPTIONS]
Set the speed limit in sentry.
Options:
--help Show this message and exit.
ΠΠΎΠΌΠ°Π½Π΄Π° sync
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΠ΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ sentry ΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
Usage: sentry-rate-limit sync [OPTIONS]
Syncs data from Sentry.
Options:
-L, --limit-only Sync only limits.
-N, --no-limit Sync all except limits.
--help Show this message and exit.