Skip to main content

Audit any running python process.

Project description

Nogi

Build PyPI PyPI - Python Version PyPI - Status Downloads Downloads Code style: black

Toogleable events auditor for Python apps.

Live monitor Python events and user defined custome events in running Python applications.

Nogi allow you to audit your code without adding debug tracing and invasive prints. Just instantiate Nogi in your code and then send a signal to your running app to start auditing it.

Nogi allow you to enable and disable audit without restarting your application and so without loosing the context that you want to observe, by example a occuring bug.

See the example below.

For further details please read the official documentation

Install

$ pip install nogi

Usages

Simply instanciate Nogi at the begining of your code:

Nogi()

Example

Here is a concret example (see examples/sample.py):

# sample.py
import requests
import time

from nogi import Nogi

Nogi()

def main():
    for i in range(1000):
        r = requests.get(
            "https://en.wikipedia.org/wiki/Python_(programming_language)")
        print(r.status_code)
        time.sleep(1)

if __name__ == "__main__":
    main()

Run the previous code:

$ python examples/sample.py
200
200
...
200
...

Then enable the audit by sending the SIGUSR1 to the process previously launched:

$ ps ax | grep python | grep sample # to retrieve the process id (pid)
$ kill -SIGUSR1 <pid>

We are now able to collect events by running the Nogi client:

$ nogi
Starting the audit listener
Audit client listening...
event: socket.getaddrinfo
data: ('en.wikipedia.org', 443, 0, 1, 0)
event: socket.__new__
data: (<socket.socket fd=-1, family=0, type=0, proto=0>, 2, 1, 6)
event: socket.connect
data: (<socket.socket fd=4, family=2, type=1, proto=6, laddr=('0.0.0.0', 0)>, ('185.15.58.224', 443))
event: http.client.connect
data: (<urllib3.connection.HTTPSConnection object at 0x7f0b48fafbf0>, 'en.wikipedia.org', 443)
event: socket.__new__
data: (<ssl.SSLSocket fd=-1, family=0, type=0, proto=0>, 2, 1, 6)
event: http.client.send
data: (<urllib3.connection.HTTPSConnection object at 0x7f0b48fafbf0>, b'GET /wiki/Python_(programming_language) HTTP/1.1\r\nHost: en.wikipedia.org\r\nUser-Agent: python-requests/2.31.0\r\nAccept-Encoding: gzip, deflate\r\nAccept: */*\r\nConnection: keep-alive\r\n\r\n')
...

When you want to terminate your audit, simply send the SIGUSR2 signal to the same process id (pid) to stop forwarding events.

$ kill -SIGUSR2 <pid>

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nogi-0.1.0.tar.gz (12.8 kB view details)

Uploaded Source

Built Distribution

nogi-0.1.0-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file nogi-0.1.0.tar.gz.

File metadata

  • Download URL: nogi-0.1.0.tar.gz
  • Upload date:
  • Size: 12.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for nogi-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b4515d81b08d9a85f3950b9000faf6791e4541d10134884c007e3956d0beac71
MD5 e103443dd1761408827e32650f856963
BLAKE2b-256 30bbbfb0d4667f11625a1deea6534c426e8394743d06fb1361084f651b0e4a96

See more details on using hashes here.

File details

Details for the file nogi-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: nogi-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for nogi-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 97aa9ad80208e45d620e7044e5d64df9dd8ba059fdb20c208b9dcdedfb171297
MD5 03bc30137fb85496d769da6aec45113b
BLAKE2b-256 5af228de6ae0c6a6374b5d6515fc6090c36f4374f092b63d83aee3f234502873

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page