Parse FIX Protocol Messages
Parses raw FIX protocol (Financial Information eXchange) messages from financial trading gateways, extracts header, order relationship, and trade fields into a structured body map, normalizes the FIX timestamp, and prepares records for downstream log analytics.
Included Processors
Parse and Decode FIX Messages
Single OTTL pass that normalizes the FIX delimiter (SOH → pipe), parses the tag=value pairs into a log body map, renames FIX tag numbers to semantic body field names, promotes key fields to fix.* log attributes for downstream querying, decodes common FIX 4.4 enum codes (msg_type, side, order_type, ord_status, exec_type) and all five FIX reject-reason dictionaries (OrdRejReason tag 103, SessionRejectReason tag 373, BusinessRejectReason tag 380, CxlRejReason tag 434, CxlRejResponseTo tag 102) to human-readable fix.*_label attributes, derives log severity from message type and order status codes, and emits a unified fix.reject_reason_label attribute that operators can query regardless of which FIX tag carried the rejection. Replaces five previously separate processors (normalize delimiter + parse key/value + rename + promote + decode) to keep the FIX pipeline minimal.
Parse FIX Timestamp
Converts the FIX sending time string (YYYYMMDD-HH:MM:SS) to a proper OpenTelemetry timestamp on the log record. Uses Auto time-format detection so common FIX SendingTime variants are recognized without a hand-maintained strptime layout.
Enrich with Financial Industry Attributes
Adds attributes identifying the record as FIX protocol data from the financial industry, enabling consistent filtering and dashboarding downstream.
Delete Raw Timestamp Field
Removes the raw sending_time string from the body after it has been promoted to the record timestamp.
Delete Empty Values
Removes null and empty fields left by optional FIX body tags that were not present in the message, keeping the record clean for downstream ingestion.
Remove Promoted Fields from Body
Optional. Removes body fields that have been promoted to fix.* log attributes, eliminating duplication and reducing downstream ingest size. Retains fix_version, msg_seq_num, and checksum in the body. Disabled by default — enable this processor (toggle in the UI or set disabled: false) to turn body cleanup on.
Example Telemetry
Log
| Name | Before | After |
|---|---|---|
| observed_time | 2026-05-18T10:30:15Z | 2026-05-18T10:30:15Z |
| time | 2026-05-18T10:30:15Z | 2026-05-18T10:30:15Z |
| severity_text | INFO | WARN |
| severity_number | 9 | 13 |
Body
8=FIX.4.4|9=170|35=9|49=EXCHANGE|56=MM-DESK|34=7|52=20260518-10:30:15|11=CXLREQ-MM-001|41=ORD-260518-018|55=SPY|39=2|434=1|58=Too late to cancel|10=170|| 9 | 170 |
| checksum | 170 |
| client_order_id | CXLREQ-MM-001 |
| cxl_rej_reason | 1 |
| fix_version | FIX.4.4 |
| msg_seq_num | 7 |
| msg_type | 9 |
| ord_status | 2 |
| orig_client_order_id | ORD-260518-018 |
| reject_reason | Too late to cancel |
| sender_comp_id | EXCHANGE |
| symbol | SPY |
| target_comp_id | MM-DESK |
Attributes
| Name | Before | After |
|---|---|---|
| event.type | LOG | |
| fix.client_order_id | CXLREQ-MM-001 | |
| fix.cxl_rej_reason | 1 | |
| fix.cxl_rej_reason_label | Unknown Order | |
| fix.msg_type | 9 | |
| fix.msg_type_label | Order Cancel Reject | |
| fix.ord_status | 2 | |
| fix.ord_status_label | Filled | |
| fix.orig_client_order_id | ORD-260518-018 | |
| fix.reject_reason | Too late to cancel | |
| fix.reject_reason_label | Unknown Order | |
| fix.sender_comp_id | EXCHANGE | |
| fix.symbol | SPY | |
| fix.target_comp_id | MM-DESK | |
| industry | financial | |
| log.source | fix-protocol |
Resource
| Name | Before | After |
|---|---|---|
| host.name | trading-gateway-02 | trading-gateway-02 |
| service.name | fix-gateway | fix-gateway |