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/
  • Integrated exporter layer for Splunk, Datadog, and AWS CloudWatch
  • Custom FIX dictionary upload — supports proprietary or extended FIX tag definitions.
  • Batch parse endpoint — process multiple FIX messages in a single request for higher throughput.

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:
  • Parser UI: http://localhost:9000/ui — paste a |-separated FIX message or a SOH \x01 message and click Parse.
  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. Supports specified dictionary ?dict_name=custom_fix44

  • POST /parse/batch — optional batch endpoint (array input). Supports specified dictionary ?dict_name=custom_fix44

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

  • POST /upload_dict?name=custom_fix44 — by passing in curl -F "file=@/path/to/custom_fix44.xml"

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

Exporter Integrations

FIXTranslator can automatically forward parsed FIX logs to popular monitoring platforms:

Platform Integration Docs
Splunk HEC Native HTTP Exporter docs/integrations/splunk.md
Datadog Logs API Direct JSON POST docs/integrations/datadog.md
AWS CloudWatch boto3 integration docs/integrations/aws.md
Logstash & Fluent Bit File / HTTP pipelines docs/integrations/logstash_fluentbit.md

Set these environment variables to activate exporters:

EXPORT_ENABLED=true
EXPORT_MODE=mock   # or 'live' for production

Mock mode logs events locally for demo and testing, while live mode uses real API credentials for end-to-end streaming.

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.2.tar.gz (136.1 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.2-py3-none-any.whl (122.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for fixtranslator-0.1.2.tar.gz
Algorithm Hash digest
SHA256 4333b0f006f18ec36acf7232560359c953a66aae4cf21f38579056b85d466876
MD5 5b950e25ca49daf5dac72435ae5bc53c
BLAKE2b-256 f78362e49a2b234ee782a949c77e2983f097efa3fa13c5d592caecd080ad1f65

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for fixtranslator-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6b8bf00dd3b71b3de4fd5ecda7acf77c70616865bb217e8181237c9c725f75a8
MD5 ac71bbbed8a600dd74e56da1089e8639
BLAKE2b-256 3f6421a1a443ce392558c255f8dfb9be0af8e339e7016bcde0f2db00d68c7030

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