OXIESEC PANEL
- Current Dir:
/
/
opt
/
cloudlinux
/
venv
/
lib
/
python3.11
/
site-packages
/
sentry_sdk
Server IP: 2a02:4780:11:1084:0:327f:3464:10
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
09/05/2025 09:34:06 AM
rwxr-xr-x
📄
__init__.py
1.03 KB
12/18/2024 10:23:16 AM
rw-r--r--
📁
__pycache__
-
02/07/2025 11:11:01 PM
rwxr-xr-x
📄
_compat.py
2.73 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
_functools.py
4.84 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
_lru_cache.py
5.26 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
_queue.py
11 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
_types.py
2.19 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
_werkzeug.py
3.7 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
api.py
6.05 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
attachments.py
1.77 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
client.py
22.35 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
consts.py
8.49 KB
12/18/2024 10:23:16 AM
rw-r--r--
📁
crons
-
02/07/2025 10:01:35 PM
rwxr-xr-x
📄
debug.py
1.11 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
envelope.py
9.37 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
hub.py
26.42 KB
12/18/2024 10:23:16 AM
rw-r--r--
📁
integrations
-
02/07/2025 10:01:35 PM
rwxr-xr-x
📄
monitor.py
2.97 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
profiler.py
33.18 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
py.typed
0 bytes
12/18/2024 10:23:16 AM
rw-r--r--
📄
scope.py
24.26 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
scrubber.py
3.8 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
serializer.py
12.97 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
session.py
5.43 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
sessions.py
5.76 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
tracing.py
29.04 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
tracing_utils.py
12 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
tracing_utils_py2.py
1.21 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
tracing_utils_py3.py
2.1 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
transport.py
18.13 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
utils.py
45.58 KB
12/18/2024 10:23:16 AM
rw-r--r--
📄
worker.py
4.15 KB
12/18/2024 10:23:16 AM
rw-r--r--
Editing: monitor.py
Close
import os import time from threading import Thread, Lock import sentry_sdk from sentry_sdk.utils import logger from sentry_sdk._types import TYPE_CHECKING if TYPE_CHECKING: from typing import Optional class Monitor(object): """ Performs health checks in a separate thread once every interval seconds and updates the internal state. Other parts of the SDK only read this state and act accordingly. """ name = "sentry.monitor" def __init__(self, transport, interval=10): # type: (sentry_sdk.transport.Transport, float) -> None self.transport = transport # type: sentry_sdk.transport.Transport self.interval = interval # type: float self._healthy = True self._downsample_factor = 1 # type: int self._thread = None # type: Optional[Thread] self._thread_lock = Lock() self._thread_for_pid = None # type: Optional[int] self._running = True def _ensure_running(self): # type: () -> None if self._thread_for_pid == os.getpid() and self._thread is not None: return None with self._thread_lock: if self._thread_for_pid == os.getpid() and self._thread is not None: return None def _thread(): # type: (...) -> None while self._running: time.sleep(self.interval) if self._running: self.run() thread = Thread(name=self.name, target=_thread) thread.daemon = True thread.start() self._thread = thread self._thread_for_pid = os.getpid() return None def run(self): # type: () -> None self.check_health() self.set_downsample_factor() def set_downsample_factor(self): # type: () -> None if self._healthy: if self._downsample_factor > 1: logger.debug( "[Monitor] health check positive, reverting to normal sampling" ) self._downsample_factor = 1 else: self._downsample_factor *= 2 logger.debug( "[Monitor] health check negative, downsampling with a factor of %d", self._downsample_factor, ) def check_health(self): # type: () -> None """ Perform the actual health checks, currently only checks if the transport is rate-limited. TODO: augment in the future with more checks. """ self._healthy = self.transport.is_healthy() def is_healthy(self): # type: () -> bool self._ensure_running() return self._healthy @property def downsample_factor(self): # type: () -> int self._ensure_running() return self._downsample_factor def kill(self): # type: () -> None self._running = False def __del__(self): # type: () -> None self.kill()