{"id":19454257,"url":"https://github.com/light-hat/smart_ids","last_synced_at":"2025-04-14T23:33:37.466Z","repository":{"id":260827147,"uuid":"876965150","full_name":"light-hat/smart_ids","owner":"light-hat","description":"🧠🛡️ Web service for detecting network attacks in PCAP using ML.","archived":false,"fork":false,"pushed_at":"2025-02-21T21:07:44.000Z","size":137,"stargazers_count":30,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-28T11:39:11.222Z","etag":null,"topics":["api","django","django-rest-framework","docker","forensics","forensics-tools","machine-learning","pcap-analyzer","python","triton-inference-server"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/light-hat.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-22T21:14:12.000Z","updated_at":"2025-03-09T12:21:12.000Z","dependencies_parsed_at":"2024-11-02T21:24:24.504Z","dependency_job_id":"d8ac4e06-1c5f-4b79-8a0f-080778b3dc45","html_url":"https://github.com/light-hat/smart_ids","commit_stats":null,"previous_names":["light-hat/smart_ids"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/light-hat%2Fsmart_ids","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/light-hat%2Fsmart_ids/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/light-hat%2Fsmart_ids/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/light-hat%2Fsmart_ids/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/light-hat","download_url":"https://codeload.github.com/light-hat/smart_ids/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248979848,"owners_count":21193051,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","django","django-rest-framework","docker","forensics","forensics-tools","machine-learning","pcap-analyzer","python","triton-inference-server"],"created_at":"2024-11-10T17:08:51.404Z","updated_at":"2025-04-14T23:33:37.459Z","avatar_url":"https://github.com/light-hat.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e Smart IDS \u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/light-hat/smart_ids/actions\"\u003e\u003cimg alt=\"Unit test status\" src=\"https://img.shields.io/badge/Python-3.12-3776AB.svg?style=flat\u0026logo=python\u0026logoColor=white\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/light-hat/smart_ids/actions\"\u003e\u003cimg alt=\"Pylint status\" src=\"https://github.com/light-hat/smart_ids/workflows/Pylint/badge.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/light-hat/smart_ids/actions\"\u003e\u003cimg alt=\"Bandit SAST status\" src=\"https://github.com/light-hat/smart_ids/workflows/SAST/badge.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/psf/black\"\u003e\u003cimg alt=\"Code style: black\" src=\"https://img.shields.io/badge/code%20style-black-000000.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://app.fossa.com/projects/git%2Bgithub.com%2Flight-hat%2Fsmart_ids?ref=badge_shield\" alt=\"FOSSA Status\"\u003e\u003cimg src=\"https://app.fossa.com/api/projects/git%2Bgithub.com%2Flight-hat%2Fsmart_ids.svg?type=shield\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n![Alt](https://repobeats.axiom.co/api/embed/86a17b1aa2bcd2cc76f8195775f83884a84e3b2b.svg \"Repobeats analytics image\")\n\n\u003cp align=\"center\"\u003e\n\n\u003cimg src=\"https://img.shields.io/badge/nVIDIA-%2376B900.svg?style=for-the-badge\u0026logo=nVIDIA\u0026logoColor=white\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/cuda-000000.svg?style=for-the-badge\u0026logo=nVIDIA\u0026logoColor=green\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/python-3670A0?style=for-the-badge\u0026logo=python\u0026logoColor=ffdd54\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/django-%23092E20.svg?style=for-the-badge\u0026logo=django\u0026logoColor=white\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/DJANGO-REST-ff1709?style=for-the-badge\u0026logo=django\u0026logoColor=white\u0026color=ff1709\u0026labelColor=gray\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/celery-%23a9cc54.svg?style=for-the-badge\u0026logo=celery\u0026logoColor=ddf4a4\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/numpy-%23013243.svg?style=for-the-badge\u0026logo=numpy\u0026logoColor=white\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/redis-%23DD0031.svg?style=for-the-badge\u0026logo=redis\u0026logoColor=white\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/postgres-%23316192.svg?style=for-the-badge\u0026logo=postgresql\u0026logoColor=white\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/nginx-%23009639.svg?style=for-the-badge\u0026logo=nginx\u0026logoColor=white\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge\u0026logo=docker\u0026logoColor=white\"\u003e\n\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\nA web service that detects network attacks using ML methods. The project implements GPU-accelerated inference, asynchronous processing of PCAP dumps of network traffic and flexible search based on processing results.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\nEnglish |\n\u003ca href=\"https://github.com/light-hat/smart_ids/blob/master/Readme.ru.md\"\u003eРусский\u003c/a\u003e\n\u003c/p\u003e\n\n## Contents\n\n\u003c!-- TOC --\u003e\n  * [Contents](#contents)\n  * [About model](#about-model)\n  * [Requirements](#requirements)\n  * [Deployment](#deployment)\n    * [Preparing the server](#preparing-the-server)\n    * [Configuration](#configuration)\n    * [Run](#run)\n  * [Operation](#operation)\n    * [API Documentation](#api-documentation)\n    * [Admin panel](#admin-panel)\n  * [License](#license)\n\u003c!-- TOC --\u003e\n\n## About model\n\nThe [rdpahalavan/bert-network-packet-flow-header-payload](https://huggingface.co/rdpahalavan/bert-network-packet-flow-header-payload) ML model was used to detect attacks.\n\nA Jupyter Notebook with model details is [here](https://github.com/TPs-ESIR-S9/PcapFileAnalysis/blob/main/NetworkPcapAnalysis.ipynb).\n\nPCAP samples are [here](https://github.com/TPs-ESIR-S9/PcapFileAnalysis/tree/main/PcapSamples).\n\nThe model has 24 output classes:\n\n```python\n['Analysis',\n 'Backdoor',\n 'Bot',\n 'DDoS',\n 'DoS',\n 'DoS GoldenEye',\n 'DoS Hulk',\n 'DoS SlowHTTPTest',\n 'DoS Slowloris',\n 'Exploits',\n 'FTP Patator',\n 'Fuzzers',\n 'Generic',\n 'Heartbleed',\n 'Infiltration',\n 'Normal',\n 'Port Scan',\n 'Reconnaissance',\n 'SSH Patator',\n 'Shellcode',\n 'Web Attack - Brute Force',\n 'Web Attack - SQL Injection',\n 'Web Attack - XSS',\n 'Worms']\n```\n\n## Requirements\n\n| Requirement | Value        |\n|-------------|--------------|\n| CPU         | `4 cores`    |\n| RAM         | `32 GB`      |\n| Disk        | `150 GB`     |\n| GPU         | `16 GB VRAM` |\n\n\n## Usage\n\n### API Documentation\n\nAPI documented using Swagger (`drf-spectacular`).\n\nAPI testing: `http://127.0.0.1/api/docs/`\n\nYAML: `http://127.0.0.1/api/schema/`\n\n### Admin panel\n\nThe service admin area is available at `http://127.0.0.1/admin`.\n\nFirst login credentials: `admin:admin`.\n\n\u003e [!IMPORTANT]\n\u003e It is recommended to change the credentials immediately after deployment to more stable ones.\n\n### Tasks monitoring\n\nMonitoring Celery tasks with Flower: `http://127.0.0.1:5555/`.\n\n## Deployment\n\n\u003e [!NOTE]\n\u003e Testing was carried out on a server running Ubuntu 22.04 with a Tesla T4 GPU.\n\n### Preparing the server\n\n\u003e [!TIP]\n\u003e First, you should install Docker and Docker Compose on your server using this [instruction](https://docs.docker.com/engine/install/ubuntu/) from the official Docker website.\n\nWhen `Docker` is installed, check your GPU drivers:\n\n```shell\nnvidia-smi\n```\n\n\u003cdetails\u003e\n  \u003csummary\u003e👀 What should be in the answer?\u003c/summary\u003e\n\n\u003chr /\u003e\n\n```\nSat Jan  4 01:37:28 2025       \n+---------------------------------------------------------------------------------------+\n| NVIDIA-SMI 535.183.01             Driver Version: 535.183.01   CUDA Version: 12.2     |\n|-----------------------------------------+----------------------+----------------------+\n| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |\n| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |\n|                                         |                      |               MIG M. |\n|=========================================+======================+======================|\n|   0  Tesla T4                       Off | 00000000:00:06.0 Off |                  Off |\n| N/A   49C    P0              28W /  70W |    783MiB / 16384MiB |      0%      Default |\n|                                         |                      |                  N/A |\n+-----------------------------------------+----------------------+----------------------+\n```\n\n\u003chr /\u003e\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e👀 How to install drivers for GPU?\u003c/summary\u003e\n\n\u003chr /\u003e\n\nInstall tools for compiling drivers and kernel headers:\n\n```shell\nsudo apt update\nsudo apt-get install build-essential linux-headers-$(uname -r)\n```\n\nNext, find the available driver versions:\n\n```shell\nubuntu-drivers devices\n```\n\nFind a similar line in the output:\n\n```text\n...\ndriver   : nvidia-driver-535 - distro non-free recommended\n...\n```\n\nThis is the driver version you need to install. Let's do this:\n\n```shell\nsudo apt-get install nvidia-driver-535\n```\n\nThen restart the server:\n\n```shell\nsudo reboot\n```\n\nAfter rebooting, check your GPU drivers again:\n\n```shell\nnvidia-smi\n```\n\n\u003chr /\u003e\n\n\u003c/details\u003e\n\nAfter that, check if the `NVIDIA Container Toolkit` is installed on the server:\n\n```shell\ndpkg -l | grep nvidia-container-toolkit\n```\n\n\u003cdetails\u003e\n  \u003csummary\u003e👀 What should be in the answer?\u003c/summary\u003e\n\n\u003chr /\u003e\n\n```\nii  nvidia-container-toolkit          1.17.3-1          amd64     NVIDIA Container toolkit\nii  nvidia-container-toolkit-base     1.17.3-1          amd64     NVIDIA Container Toolkit Base\n\n```\n\n\u003chr /\u003e\n\n\u003c/details\u003e\n\n\u003e [!TIP]\n\u003e If this answer is empty, here is a [manual](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) from the official website on how to install NVIDIA Container Toolkit.\n\n### Configuration\n\nFirst, clone the repository:\n\n```shell\ngit clone https://github.com/light-hat/smart_ids\ncd smart_ids\n```\n\nIn the root of the repository, create a `.env` file with the following content:\n\n```\nAPI_URL=127.0.0.1\nAPI_PORT=80\nPOSTGRES_HOST=db\nPOSTGRES_PORT=5432\nPOSTGRES_USER=postgres\nPOSTGRES_PASSWORD=postgres\nPOSTGRES_DB=shop_database\nFLOWER_ADMIN_PASSWORD=admin\nFLOWER_ADMIN_USER=admin\n```\n\nEnvironment variables in the configuration:\n\n- `API_URL`: URL where the service will be deployed;\n\n- `API_PORT`: port on which the service will receive requests;\n\n- `POSTGRES_HOST`: database host (service name in the docker compose stack);\n\n- `POSTGRES_PORT`: database port;\n\n- `POSTGRES_USER`: database user;\n\n- `POSTGRES_PASSWORD`: database password;\n\n- `POSTGRES_DB`: name of the database used by the service;\n\n- `FLOWER_ADMIN_USER`: username for authorization in Flower;\n\n- `FLOWER_ADMIN_PASSWORD`: password for authorization in Flower.\n\nYou can do this automatically:\n\n```shell\nmake config\n```\n\n### Run\n\nStart the application stack on Docker with the following command:\n\n```shell\nsudo make build\n```\n\n\u003cdetails\u003e\n  \u003csummary\u003e👀 What does a healthy log look like at startup?\u003c/summary\u003e\n\n\u003chr /\u003e\n\nInference log:\n\n```shell\nsudo docker compose logs triton\n```\n\n```text\ntriton-1  | \ntriton-1  | =============================\ntriton-1  | == Triton Inference Server ==\ntriton-1  | =============================\ntriton-1  | \ntriton-1  | NVIDIA Release 23.01 (build 52277748)\ntriton-1  | Triton Server Version 2.30.0\ntriton-1  | \ntriton-1  | Copyright (c) 2018-2022, NVIDIA CORPORATION \u0026 AFFILIATES.  All rights reserved.\ntriton-1  | \ntriton-1  | Various files include modifications (c) NVIDIA CORPORATION \u0026 AFFILIATES.  All rights reserved.\ntriton-1  | \ntriton-1  | This container image and its contents are governed by the NVIDIA Deep Learning Container License.\ntriton-1  | By pulling and using the container, you accept the terms and conditions of this license:\ntriton-1  | https://developer.nvidia.com/ngc/nvidia-deep-learning-container-license\ntriton-1  | \ntriton-1  | I0104 00:22:29.587736 1 pinned_memory_manager.cc:240] Pinned memory pool is created at '0x7f438a000000' with size 268435456\ntriton-1  | I0104 00:22:29.591405 1 cuda_memory_manager.cc:105] CUDA memory pool is created on device 0 with size 67108864\ntriton-1  | I0104 00:22:29.596887 1 model_lifecycle.cc:459] loading: distilbert_classifier:1\ntriton-1  | I0104 00:22:29.599877 1 onnxruntime.cc:2459] TRITONBACKEND_Initialize: onnxruntime\ntriton-1  | I0104 00:22:29.599965 1 onnxruntime.cc:2469] Triton TRITONBACKEND API version: 1.11\ntriton-1  | I0104 00:22:29.600015 1 onnxruntime.cc:2475] 'onnxruntime' TRITONBACKEND API version: 1.11\ntriton-1  | I0104 00:22:29.600051 1 onnxruntime.cc:2505] backend configuration:\ntriton-1  | {\"cmdline\":{\"auto-complete-config\":\"true\",\"min-compute-capability\":\"6.000000\",\"backend-directory\":\"/opt/tritonserver/backends\",\"default-max-batch-size\":\"4\"}}\ntriton-1  | I0104 00:22:29.622589 1 onnxruntime.cc:2563] TRITONBACKEND_ModelInitialize: distilbert_classifier (version 1)\ntriton-1  | I0104 00:22:29.623700 1 onnxruntime.cc:666] skipping model configuration auto-complete for 'distilbert_classifier': inputs and outputs already specified\ntriton-1  | I0104 00:22:29.624518 1 onnxruntime.cc:2606] TRITONBACKEND_ModelInstanceInitialize: distilbert_classifier (GPU device 0)\ntriton-1  | 2025-01-04 00:22:30.303281404 [W:onnxruntime:, session_state.cc:1030 VerifyEachNodeIsAssignedToAnEp] Some nodes were not assigned to the preferred execution providers which may or may not have an negative impact on performance. e.g. ORT explicitly assigns shape related ops to CPU to improve perf.\ntriton-1  | 2025-01-04 00:22:30.303326346 [W:onnxruntime:, session_state.cc:1032 VerifyEachNodeIsAssignedToAnEp] Rerunning with verbose output on a non-minimal build will show node assignments.\ntriton-1  | I0104 00:22:30.591136 1 model_lifecycle.cc:694] successfully loaded 'distilbert_classifier' version 1\ntriton-1  | I0104 00:22:30.591333 1 server.cc:563] \ntriton-1  | +------------------+------+\ntriton-1  | | Repository Agent | Path |\ntriton-1  | +------------------+------+\ntriton-1  | +------------------+------+\ntriton-1  | \ntriton-1  | I0104 00:22:30.591412 1 server.cc:590] \ntriton-1  | +-------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+\ntriton-1  | | Backend     | Path                                                            | Config                                                                                                                                                        |\ntriton-1  | +-------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+\ntriton-1  | | onnxruntime | /opt/tritonserver/backends/onnxruntime/libtriton_onnxruntime.so | {\"cmdline\":{\"auto-complete-config\":\"true\",\"min-compute-capability\":\"6.000000\",\"backend-directory\":\"/opt/tritonserver/backends\",\"default-max-batch-size\":\"4\"}} |\ntriton-1  | +-------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+\ntriton-1  | \ntriton-1  | I0104 00:22:30.591520 1 server.cc:633] \ntriton-1  | +-----------------------+---------+--------+\ntriton-1  | | Model                 | Version | Status |\ntriton-1  | +-----------------------+---------+--------+\ntriton-1  | | distilbert_classifier | 1       | READY  |\ntriton-1  | +-----------------------+---------+--------+\ntriton-1  | \ntriton-1  | I0104 00:22:30.668177 1 metrics.cc:864] Collecting metrics for GPU 0: Tesla T4\ntriton-1  | I0104 00:22:30.669197 1 metrics.cc:757] Collecting CPU metrics\ntriton-1  | I0104 00:22:30.669509 1 tritonserver.cc:2264] \ntriton-1  | +----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\ntriton-1  | | Option                           | Value                                                                                                                                                                                                |\ntriton-1  | +----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\ntriton-1  | | server_id                        | triton                                                                                                                                                                                               |\ntriton-1  | | server_version                   | 2.30.0                                                                                                                                                                                               |\ntriton-1  | | server_extensions                | classification sequence model_repository model_repository(unload_dependents) schedule_policy model_configuration system_shared_memory cuda_shared_memory binary_tensor_data statistics trace logging |\ntriton-1  | | model_repository_path[0]         | /models/                                                                                                                                                                                             |\ntriton-1  | | model_control_mode               | MODE_NONE                                                                                                                                                                                            |\ntriton-1  | | strict_model_config              | 0                                                                                                                                                                                                    |\ntriton-1  | | rate_limit                       | OFF                                                                                                                                                                                                  |\ntriton-1  | | pinned_memory_pool_byte_size     | 268435456                                                                                                                                                                                            |\ntriton-1  | | cuda_memory_pool_byte_size{0}    | 67108864                                                                                                                                                                                             |\ntriton-1  | | response_cache_byte_size         | 0                                                                                                                                                                                                    |\ntriton-1  | | min_supported_compute_capability | 6.0                                                                                                                                                                                                  |\ntriton-1  | | strict_readiness                 | 1                                                                                                                                                                                                    |\ntriton-1  | | exit_timeout                     | 30                                                                                                                                                                                                   |\ntriton-1  | +----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\ntriton-1  | \ntriton-1  | I0104 00:22:30.673629 1 grpc_server.cc:4819] Started GRPCInferenceService at 0.0.0.0:8001\ntriton-1  | I0104 00:22:30.674047 1 http_server.cc:3477] Started HTTPService at 0.0.0.0:8000\ntriton-1  | I0104 00:22:30.715444 1 http_server.cc:184] Started Metrics Service at 0.0.0.0:8002\n```\n\nAPI log:\n\n```shell\nsudo docker compose logs api\n```\n\n```text\napi-1  | DB not yet run...\napi-1  | DB did run.\napi-1  | Migrations for 'ids':\napi-1  |   ids/migrations/0001_initial.py\napi-1  |     + Create model Dump\napi-1  |     + Create model HandledPacket\napi-1  | Operations to perform:\napi-1  |   Apply all migrations: admin, auth, contenttypes, ids, sessions\napi-1  | Running migrations:\napi-1  |   Applying contenttypes.0001_initial... OK\napi-1  |   Applying auth.0001_initial... OK\napi-1  |   Applying admin.0001_initial... OK\napi-1  |   Applying admin.0002_logentry_remove_auto_add... OK\napi-1  |   Applying admin.0003_logentry_add_action_flag_choices... OK\napi-1  |   Applying contenttypes.0002_remove_content_type_name... OK\napi-1  |   Applying auth.0002_alter_permission_name_max_length... OK\napi-1  |   Applying auth.0003_alter_user_email_max_length... OK\napi-1  |   Applying auth.0004_alter_user_username_opts... OK\napi-1  |   Applying auth.0005_alter_user_last_login_null... OK\napi-1  |   Applying auth.0006_require_contenttypes_0002... OK\napi-1  |   Applying auth.0007_alter_validators_add_error_messages... OK\napi-1  |   Applying auth.0008_alter_user_username_max_length... OK\napi-1  |   Applying auth.0009_alter_user_last_name_max_length... OK\napi-1  |   Applying auth.0010_alter_group_name_max_length... OK\napi-1  |   Applying auth.0011_update_proxy_permissions... OK\napi-1  |   Applying auth.0012_alter_user_first_name_max_length... OK\napi-1  |   Applying ids.0001_initial... OK\napi-1  |   Applying sessions.0001_initial... OK\napi-1  | [2025-01-04 00:22:48 +0000] [76] [INFO] Starting gunicorn 23.0.0\napi-1  | [2025-01-04 00:22:48 +0000] [76] [INFO] Listening at: http://0.0.0.0:8000 (76)\napi-1  | [2025-01-04 00:22:48 +0000] [76] [INFO] Using worker: sync\napi-1  | [2025-01-04 00:22:48 +0000] [77] [INFO] Booting worker with pid: 77\n```\n\nWorker log:\n\n```shell\nsudo docker compose logs worker\n```\n\n```text\nworker-1  | User information: uid=0 euid=0 gid=0 egid=0\nworker-1  | \nworker-1  |   warnings.warn(SecurityWarning(ROOT_DISCOURAGED.format(\nworker-1  |  \nworker-1  |  -------------- celery@0a10f82c8415 v5.4.0 (opalescent)\nworker-1  | --- ***** ----- \nworker-1  | -- ******* ---- Linux-5.15.0-130-generic-x86_64-with-glibc2.36 2025-01-04 03:22:34\nworker-1  | - *** --- * --- \nworker-1  | - ** ---------- [config]\nworker-1  | - ** ---------- .\u003e app:         config:0x7f543c451df0\nworker-1  | - ** ---------- .\u003e transport:   redis://redis:6379//\nworker-1  | - ** ---------- .\u003e results:     redis://redis:6379/\nworker-1  | - *** --- * --- .\u003e concurrency: 4 (prefork)\nworker-1  | -- ******* ---- .\u003e task events: OFF (enable -E to monitor tasks in this worker)\nworker-1  | --- ***** ----- \nworker-1  |  -------------- [queues]\nworker-1  |                 .\u003e celery           exchange=celery(direct) key=celery\nworker-1  |                 \nworker-1  | \nworker-1  | [tasks]\nworker-1  |   . ids.tasks.process_dump_file\n\n```\n\n\u003chr /\u003e\n\n\u003c/details\u003e\n\n## License\n\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Flight-hat%2Fsmart_ids.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Flight-hat%2Fsmart_ids?ref=badge_large)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flight-hat%2Fsmart_ids","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flight-hat%2Fsmart_ids","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flight-hat%2Fsmart_ids/lists"}