gULP - (generic) Unified Log Processor.
Project description
the graphical, universal Log processor for incident response!
made with :heart: by Mentat.
description
Gulp is a powerful software tool designed to streamline incident response and analysis. Its core features includes:
-
Data Ingestion Plugins: Gulp can ingest data from a variety of sources, thanks to its versatile plugin system.
-
OpenSearch and ECS: Gulp is built on OpenSearch and uses the Elasticsearch Common Scheme (ECS) as its ingestion format, ensuring compatibility and ease of use.
-
High-Speed Multiprocessing Engine: Gulp's engine is designed for speed, offering fast ingestion and querying capabilities through multiprocessing.
-
Query using SIGMA rules: Gulp supports querying using Sigma Rules, allowing for easy, one-click queries with thousands of rules in parallel.
-
Collaboration Platform: Gulp includes a collaboration platform, enabling teams to work together on the same incident. Features include note-taking, highlighting, and link adding.
-
An innovative UI: Gulp's user interface includes multiple on-screen per-context(i.e. a log source) zoomable timelines for visualizing events, making it easier to understand and analyze incidents.
-
Scalable: Gulp is designed with scalability in mind. As your data and team grow, you can simply add more gulp nodes, more cores to increase parallel ingestion and query capabilities, more OpenSearch and PostgreSQL nodes. This makes Gulp a flexible solution that can adapt to your evolving needs!
-
Python based: Gulp is written in Python, leveraging open-source libraries whenever possible. This maximizes ease of adoption from the community, as Python is widely used and understood.
architecture
plugins development
integration with other applications
gulp can be of course integrated with other applications !
both websocket and REST API is available!
installation
install our pypi package and run the necessary services via the example docker-compose and you should be good to go with the backend:
WARNING: pip installation works only with python3.13 (tested) and 3.12, 3.14 is currently not supported because some dependencies have not yet released compatible versions.
set -e
curl -o .env https://raw.githubusercontent.com/mentat-is/gulp/develop/.env \
&& curl -o docker-compose.yml https://raw.githubusercontent.com/mentat-is/gulp/develop/docker-compose.yml \
&&pip install mentat-gulp
then, start the docker compose to start the necessary services:
docker compose up -d
and finally start the backend creating a fresh collab database and operation:
gulp --reset-collab --create some_operation
gulp creates a default configuration in
$HOME/.config/gulp/gulp_cfg.jsonif not already present and starts listening onhttp://localhost:8080
for advanced deployment, always check the following:
pypi/docker registry versions may be outdated... to use the bleeding edge version of gulp, install from sources and use the 'develop' branches.
clients
environment variables
the following environment variables may be set to override configuration options.
-
GULP_BIND_TO_ADDR,GULP_BIND_TO_PORT: if set, gulp will listen to this interface and port (either, the default0.0.0.0,8080is used).- for the override to work, both
GULP_BIND_TO_ADDRandGULP_BIND_TO_PORTmust be specified, either the value of one alone is ignored.
- for the override to work, both
-
GULP_WORKING_DIR: this is the working directory for gulp (defaults to~/.config/gulp), which contains:gulp_cfg.json: the configuration, initialized with template if not presentplugins: optional extra plugins (have precedence over$INSTALLDIR/plugins)mapping_files: optional extra mapping files (have precedence over$INSTALLDIR/mapping_files)certs: optional SSL certificates for HTTPSingest_localdirectory to store big files for quick ingestion (ingest_localAPI)tmp_uploadfolder to cache partial uploads during ingestion
-
GULP_OPENSEARCH_URL: if set, overridesopensearch_urlin the configuration to. -
GULP_POSTGRES_URL: if set, overridespostgres_urlin the configuration. -
GULP_REDIS_URL: if set, overridesredis_urlin the configuration. -
GULP_S3_URL: if set, overridess3_urlin the configuration. -
GULP_INTEGRATION_TEST: this may be set during tests to disable debug features if they're enabled
exposed services
using the default docker-compose.yml with no profile set. further profiles (i.e.
dev,metrics) may expose additional services, check the compose file for details.
gulp
- gulp swagger page on http://localhost:8080/docs
- gulp web UI on http://localhost:3000
- user/pwd:
admin/admin(default gulp admin user)
- user/pwd:
postgreSQL
-
postgreSQL on localhost:5432
- user/pwd:
postgres/Gulp1234!
- user/pwd:
-
adminer on http://localhost:8001 to manage postgreSQL (use
--profile dev)- server/user/pwd:
postgres/postgres/Gulp1234!
- server/user/pwd:
OpenSearch
-
opensearch on http://localhost:9200
- user/pwd:
admin/Gulp1234!
- user/pwd:
-
elasticvue on http://localhost:8082 to visualize OpensSearch indexes (use
--profile dev) -
opensearch dashboards on http://localhost:5001 for a more comprehensive OpenSearch management.
redis
-
redis on localhost:6379
- user/pwd:
default/Gulp1234!
- user/pwd:
-
redis insight on http://localhost:5540 to manage redis (use
--profile dev)
MinIO
-
minio on http://localhost:9000
- user/pwd:
admin/Gulp1234! - this is used as S3-compatible filestore for plugins which may need it.
- user/pwd:
SSL
to use SSL, the following configuration options and files variables may be provided:
OpenSearch
- Gulp configuration
opensearch_verify_certs: set tofalseto skip server verification
- certificate files
$GULP_WORKING_DIR/certs/opensearch-ca.pem: CA certificate for Gulp to connect to the Opensearch server$GULP_WORKING_DIR/certs/opensearch.pem: client certificate for Gulp to connect to the Opensearch server$GULP_WORKING_DIR/certs/opensearch.key: passwordless client certificate key
PostgreSQL
- Gulp configuration
postgres_ssl: use SSL for postgres connection, set tofalseto not use.postgres_verify_certs: set tofalseto skip server verification
- certificate files
$GULP_WORKING_DIR/certs/postgres-ca.pem: CA certificate for Gulp to connect to the PostgreSQL server$GULP_WORKING_DIR/certs/postgres.pem: client certificate for Gulp to connect to PostgreSQL server$GULP_WORKING_DIR/certs/postgres.key: client certificate key
gulp
- Gulp configuration
https_enforce: set totrueto enforce connection to Gulp only through HTTPShttps_enforce_client_certs: set totrueto enforce check of client certificates signed bygulp-ca.pemCA
- certificate files
$GULP_WORKING_DIR/certs/gulp-ca.pem: Gulp CA$GULP_WORKING_DIR/certs/gulp.pem: Gulp server certificate$GULP_WORKING_DIR/certs/gulp.key: Gulp server certificate key
redis & minIO
check their specific documentation: basically you have to put certificates in $GULP_WORKING_DIR/certs, whcih is mounted in the containers, and tweak their configuration.
commandline examples
default startup, creates collab database with an operation names test_operation on the very first run.
gulp
to detect if gulp has already run once check for
~/.config/gulp/.first_run_doneand delete it to revert to first run on the next run.
deletes data related to ALL existing operations, both on collaboration database and OpenSearch.
gulp --reset-collab
deletes data related to ALL existing operations, both on collaboration database and OpenSearch, in the end creates/recreates my_operation.
gulp --reset-collab --create my_operation
acts only on my_operation: creates/recreates operation, deletes all related data both on collaboration database and OpenSearch.
gulp --create my_operation
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mentat_gulp-1.6.52.tar.gz.
File metadata
- Download URL: mentat_gulp-1.6.52.tar.gz
- Upload date:
- Size: 19.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06b500c307606f9d0216e4204af8cd02c0af2195779dc4dde28033ebab2ff7ee
|
|
| MD5 |
a6012a5ae4f5ce89da9a9c2bfbef8df5
|
|
| BLAKE2b-256 |
eed7eb2cef71373e2395ce955f14bec07fe6cfd6e9c41752a984897fb2cd2181
|
File details
Details for the file mentat_gulp-1.6.52-py3-none-any.whl.
File metadata
- Download URL: mentat_gulp-1.6.52-py3-none-any.whl
- Upload date:
- Size: 469.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aac640416d82c9815ff17ac2fbadff4a4983e7b539e9c2b8b6a98557161828f6
|
|
| MD5 |
7573bc88784e94d3013c4c89146985ea
|
|
| BLAKE2b-256 |
2753f5ba98f1444b3fd49eb07da02e83997e5d9646ce2c37ee590c82bf1763de
|