sentry-rate-limit

Rate limiter for the sentry.


Install
pip install sentry-rate-limit==0.0.2

Documentation

Sentry Rate Limit

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ обСспСчиваСт Π³ΠΈΠ±ΠΊΠΈΠΉ способ управлСния количСством ошибок Π½Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ/ΠΏΡ€ΠΎΠ΅ΠΊΡ‚/ΠΊΠ»ΡŽΡ‡.

ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ трСбования

  • Python >= 3.9
  • PostgreSQL >= 11.8
  • Sentry API auth token

    Authentication token permissions: org:read project:read project:write

Запуск прилоТСния

  1. Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ratelimit/config.example.py Π² ratelimit/config.py
  2. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ настройки Π² Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ratelimit/config.py, Ссли это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ
  3. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ зависимости pip install -r requirements.txt
  4. Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ python setup.py install
  5. Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ sentry-rate-limit

Запуск прилоТСния Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Python

  1. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ python3 -m venv .venv
  2. ΠΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅:
    • source .venv/bin/activate - для Linux ΠΈ MacOS
    • .venv\Scripts\activate.bat - для Windows
    • deactivate - для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ
  3. Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ratelimit/config.example.py Π² ratelimit/config.py
  4. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ настройки Π² Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ratelimit/config.py, Ссли это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ
  5. Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ зависимости pip install -r requirements.txt
  6. Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ python setup.py install
  7. Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ sentry-rate-limit

Запуск прилоТСния Π² Docker

  1. Π‘ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π·
docker build --file ./docker/Dockerfile --tag YOUR_IMAGE_NAME . --no-cache
  1. Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
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 (example https://sentry.io)
  • SENTRY_BEARER_TOKEN: Π’ΠΎΠΊΠ΅Π½ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅)

PostgreSQL

  • POSTGRES_DB_NAME: НазваниС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (default postgres)
  • POSTGRES_DB_USER: Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (default postgres)
  • POSTGRES_DB_PASSWORD: ΠŸΠ°Ρ€ΠΎΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
  • POSTGRES_HOST: Имя хоста (default localhost)
  • POSTGRES_PORT: ΠŸΠΎΡ€Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ (default 5432)

Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

  • LOGGING_ENABLE: Активация логирования (default False)
  • LOGGING_LEVEL: Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ логирования (default debug)
  • LOGGING_FILE_NAME: НазваниС Ρ„Π°ΠΉΠ»Π° для Π»ΠΎΠ³ΠΎΠ²

Π”Ρ€ΡƒΠ³ΠΈΠ΅

  • DEFAULT_LIMIT_COUNT: ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ошибок (default 300)
  • DEFAULT_LIMIT_WINDOW: Π’Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π² сСкундах (default 60)
  • MIN_LIMIT_COUNT: МинимальноС количСство ошибок, допускаСмых Π·Π° 1 ΠΌΠΈΠ½ΡƒΡ‚Ρƒ (default 60)

Бписок команд

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄:

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.