Skip to main content

FIX protocol translator — parse FIX logs to human-readable JSON and forward to logging platforms.

Project description

FIXTranslator

Build Status Release License: Apache-2.0 PyPi

FIXTranslator parses FIX (Financial Information eXchange) protocol logs (4.x and 5.x / FIXT) into structured JSON and human-readable output, and forwards parsed events to common logging platforms (Splunk, Datadog, CloudWatch, ELK). It preserves the original raw FIX and provides connectors, example pipelines and a small web UI for side-by-side raw vs translated view.

This repo contains:

  • fixparser/ — Python FastAPI parser service (REST endpoints + minimal UI)
  • logstash/ & fluentbit/ — example integration pipeline configs
  • docker/ — Dockerfile + docker-compose for local demo (parser, logstash, fluentbit, localstack)
  • docs/integrations/ — how-to guides for Splunk, Datadog, AWS, etc.
  • CI / release workflows in .github/workflows/

Quickstart (local, 5–10 min)

Requirements:

  • Docker & docker-compose
  • jq (optional but handy)
  • (optional) gh CLI for releases
  1. Clone:
git clone https://github.com/Terrenus/FIXTranslator.git
cd FIXTranslator
  1. Start demo services (parser + Logstash + Fluent Bit + LocalStack):
docker compose -f docker/docker-compose.yml up --build
  1. Open UI:
  1. Use validate script:
./validate.sh http://localhost:9000/parse
  1. Append a test FIX line to trigger Fluent Bit tails:
echo '8=FIX.4.4|9=176|35=D|49=CLIENT12|56=BROKER03|11=demo1|55=EUR/USD|54=1|38=1000|40=2|44=1.1850|60=20250929-12:00:00|10=000|' >> sample_fix_messages.txt
  1. Check logs:
docker compose -f docker/docker-compose.yml logs -f fixparser fluentbit logstash

Endpoints

  • POST /parse — accepts single or batched messages (JSON or plain text); tolerant to keys raw, log, message and Fluent Bit batched arrays. Returns parsed JSON, flattened fields, summary, detail, and errors.

  • POST /parse/batch — optional batch endpoint (array input).

  • GET /ui — minimal HTML UI for side-by-side raw & translated display.

Example: curl the parser

# single message
payload=$(jq -n --arg raw "8=FIX.4.4|9=176|35=D|49=CLIENT|56=BROKER|11=123|55=EUR/USD|54=1|38=1000|40=2|44=1.13|60=20250929-12:00:00|10=000|" '{"raw":$raw}')
curl -s -X POST http://localhost:9000/parse -H "Content-Type: application/json" -d "$payload" | jq

# batched (Fluent Bit style)
payload='[{"log":"8=FIX.4.4|9=176|35=D|49=CLIENT|56=BROKER|11=123|55=EUR/USD|54=1|38=1000|40=2|44=1.13|60=20250929-12:00:00|10=000|"}]'
curl -s -X POST http://localhost:9000/parse -H "Content-Type: application/json" -d "$payload" | jq

Configuration

  • Dictionaries: drop QuickFIX-style XML dictionary files under fixparser/dicts/ (e.g., FIX44.xml, FIX50SP2.xml). The parser will load available XMLs on startup.

  • Environment variables (parser):

    • PORT — port to run on (default 9000)

    • CLOUDWATCH_ENDPOINT_URL — optional LocalStack endpoint for CloudWatch testing

    • SPLUNK_HEC_URL / SPLUNK_HEC_TOKEN — optional auto-forward configuration

    • DATADOG_API_KEY — optional auto-forward configuration

See fixparser/exporters.py for exporter helpers.

Developing

Create and activate a venv:

python -m venv .venv && . .venv/bin/activate
pip install -r requirements.txt

Run server locally:

uvicorn fixparser.main:app --reload --port 9000

Run tests:

pytest -q

Contributing & Code of Conduct

Please see CONTRIBUTING.md and CODE_OF_CONDUCT.md.

License

Apache License 2.0 — see LICENSE.

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

fixtranslator-0.1.0.tar.gz (126.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fixtranslator-0.1.0-py3-none-any.whl (117.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fixtranslator-0.1.0.tar.gz
  • Upload date:
  • Size: 126.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for fixtranslator-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f465aafdbaf99458978d869e4e613f28aa1ade1bdfb01395a3d3eee0fbd14692
MD5 f64f932734eb1b060c382e4a446efe98
BLAKE2b-256 abb1d833daf3dc130ae55d526e24e9979c3f7083fef111d19040dfb193d600a6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fixtranslator-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 117.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for fixtranslator-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 14e3a9168f16777e28e14ee8bb0f7f1877ac8a6f54b33ec06474652eca1db60b
MD5 cd832e1806fb0fb6e28d812fcde76466
BLAKE2b-256 772a3b90e8216e5f24e6e1780e7c0f245151890dda66ebe53a160c0ee74d2a8e

See more details on using hashes here.

Supported by

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