Setup Configuration

Following is a step by step guide on how to setup and run the FMADIO LXC Market Data Gap container.

1) Download Market2JSON LXC container

Start by downloading the latest LXC container from

For example downloading using curl

fmadio@fmadio100v2-228U:/tmp$ curl -O -k https://firmware.fmad.io/download/container/https://firmware.fmad.io/download/container/market2json-202309221505.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  267M  100  267M    0     0   490k 

2) untar the lxc into /opt/fmadio/lxc/

Unpack the container in the /opt/fmadio/lxc dir, this requires root

fmadio@fmadio100v2-228U:/mnt/store0/lxc/lib/lxc$ sudo mv market2json-202309221505.tar.gz  .

fmadio@fmadio100v2-228U:/mnt/store0/lxc/lib/lxc$ sudo tar xf market2json-202309221505.tar.gz

2) Configures the containers IP Address

This does basic network configuration of the Marke2JSON LXC. By default its configured for a bridged address running on the same physical interface as man0 of the FMADIO Host system.

e.g. it needs a new IP address on the same subnet as the FMADIO Host.

cd /opt/fmadio/lxc/market2json-xxxx/
sudo su
./install.lua

NOTE: this must be run as root

root@fmadio100v2-228U:/mnt/store0/lxc/lib/lxc/market2json-202309221505# ./install.lua
fmad fmadlua Oct 18 2022 (/opt/fmadio/bin/fmadiolua ./install.lua )
mkdir /mnt/store0/log/lxc/market2json -p
touch /opt/fmadio/queue/lxc_ring_market_cme
touch /opt/fmadio/queue/lxc_ring_market_eurex
touch /opt/fmadio/queue/lxc_ring_market_nasdaq
touch /opt/fmadio/queue/lxc_ring_market_siac_cqs
touch /opt/fmadio/queue/lxc_ring_market_siac_cts
touch /opt/fmadio/queue/lxc_ring_market_siac_opra
Container IP Address? (e.g. 192.168.1.100)
192.168.2.177
Container Netmask? (e.g. 24 for  255.255.255.0)
24
Container Gateway? (e.g. 192.168.1.1)
192.168.2.1
Container DNS? (e.g. 192.168.1.1)
192.168.2.1
----------------------
IP     : 192.168.2.177
CIDR   : 24
NETMASK: 255.255.255.0
GW     : 192.168.2.1
DNS    : 192.168.2.1

.
.
.


echo fmadio100v2-228U-market2json> rootfs/etc/hostname
done 14.834738Sec 0.247246Min
root@fmadio100v2-228U:/mnt/store0/lxc/lib/lxc/market2json-20221014# 

NOTE: This setups all the internal LXC rings, there is no need to manually configure the rings

3) Check the status of the FMADIO lxc

using the utility

fmadiocli

Check the status of all the lxc,

show lxc status

Example output shown below

Sat Sep 23 03:03:03 2023] > show lxc status
[Sat Sep 23 03:03:03 2023] Enable     : true
[Sat Sep 23 03:03:03 2023] RingCnt    : 1
[Sat Sep 23 03:03:03 2023]
[Sat Sep 23 03:03:04 2023] Name                 OnBoot     Install    State      Desc
[Sat Sep 23 03:03:04 2023] ---------------------------------------------------------------------------------------------------------------------------------
[Sat Sep 23 03:03:04 2023] market2json-202309221636 false      yes        STOPPED
[Sat Sep 23 03:03:04 2023] ---------------------------------------------------------------------------------------------------------------------------------
[Sat Sep 23 03:03:04 2023] >

The container should be listed above. To automatically start the container at boot run

config lxc boot <container name>

Example output shown below.

[Sat Sep 23 03:04:22 2023] > config lxc boot market2json-202309221636
[Sat Sep 23 03:04:23 2023] Set container [market2json-202309221636] to boot on system start

[Sat Sep 23 03:04:24 2023] > show lxc status
[Sat Sep 23 03:04:25 2023] Enable     : true
[Sat Sep 23 03:04:25 2023] RingCnt    : 1
[Sat Sep 23 03:04:25 2023]
[Sat Sep 23 03:04:25 2023] Name                 OnBoot     Install    State      Desc
[Sat Sep 23 03:04:25 2023] ---------------------------------------------------------------------------------------------------------------------------------
[Sat Sep 23 03:04:25 2023] market2json-202309221636 true       yes        STOPPED
[Sat Sep 23 03:04:25 2023] ---------------------------------------------------------------------------------------------------------------------------------
[Sat Sep 23 03:04:25 2023] >

4) Check status of FMADIO ring buffer

The Market2JSON container relies on the FMADIO Host to feed it data. It receives this data using the FMADIO LXC Ring structure.

The data sent from the host to the LXC Ring can be filtered using BPF filter and pushed automatically using the Push LXC configuration

The install script will automatically create all the rings it supports. To check they have been created , run the following command

show ring status

Example output shown below. Note system may require a reboot for the ring to become active.

[Sat Sep 23 03:06:59 2023] > show ring status
[Sat Sep 23 03:06:59 2023] Name                                     : Path                                                         :     Status :          Pkt Put :          Pkt Get : Pkt Queued : Desc
[Sat Sep 23 03:06:59 2023] -----------------------------------------+--------------------------------------------------------------+------------+------------------+------------------+------------+------------------------------------
[Sat Sep 23 03:06:59 2023] lxc_market2json_cboejp_prod_boe          : /opt/fmadio/queue/lxc_market2json_cboejp_prod_boe            :     online :                0 :                0 :          0 :
[Sat Sep 23 03:06:59 2023] lxc_market2json_cboejp_prod_pitch        : /opt/fmadio/queue/lxc_market2json_cboejp_prod_pitch          :     online :                0 :                0 :          0 :
[Sat Sep 23 03:06:59 2023] lxc_market2json_cboejp_uat_boe           : /opt/fmadio/queue/lxc_market2json_cboejp_uat_boe             :     online :                0 :                0 :          0 :
[Sat Sep 23 03:06:59 2023] lxc_market2json_cboejp_uat_pitch         : /opt/fmadio/queue/lxc_market2json_cboejp_uat_pitch           :     online :                0 :                0 :          0 :
[Sat Sep 23 03:06:59 2023] lxc_market2json_cme                      : /opt/fmadio/queue/lxc_market2json_cme                        :     online :                0 :                0 :          0 :
[Sat Sep 23 03:06:59 2023] lxc_market2json_eurex                    : /opt/fmadio/queue/lxc_market2json_eurex                      :     online :                0 :                0 :          0 :
[Sat Sep 23 03:06:59 2023] lxc_market2json_euronext_sbe             : /opt/fmadio/queue/lxc_market2json_euronext_sbe               :     online :      189,943,420 :      189,943,420 :          0 :
[Sat Sep 23 03:06:59 2023] lxc_market2json_lse_mitch                : /opt/fmadio/queue/lxc_market2json_lse_mitch                  :     online :                0 :                0 :          0 :
[Sat Sep 23 03:06:59 2023] lxc_market2json_nasdaq_itch              : /opt/fmadio/queue/lxc_market2json_nasdaq_itch                :     online :                0 :                0 :          0 :
[Sat Sep 23 03:06:59 2023] lxc_market2json_siac_cqs                 : /opt/fmadio/queue/lxc_market2json_siac_cqs                   :     online :                0 :                0 :          0 :
[Sat Sep 23 03:06:59 2023] lxc_market2json_siac_cts                 : /opt/fmadio/queue/lxc_market2json_siac_cts                   :     online :                0 :                0 :          0 :
[Sat Sep 23 03:06:59 2023] lxc_market2json_siac_opra                : /opt/fmadio/queue/lxc_market2json_siac_opra                  :     online :                0 :                0 :          0 :
[Sat Sep 23 03:06:59 2023] -----------------------------------------+--------------------------------------------------------------+------------+------------------+------------------+------------+------------------------------------
[Sat Sep 23 03:06:59 2023] >

This can be very helpful when monitoring how much traffic is going to each ring.

5) Start the Market2JSON container

Start the Market2JSON container either directly with the lxc-start command or use the fmadiocli

config lxc start market2json-xxxx

Example of sucessful operation is shown below

[Sat Sep 23 03:08:28 2023] > config lxc start market2json-202309221636
[Sat Sep 23 03:08:29 2023] sudo lxc-start -n market2json-202309221636 --logfile /tmp/lxc_market2json-202309221636_1695438509485442048
[Sat Sep 23 03:08:30 2023]
[Sat Sep 23 03:08:30 2023] use the following on a shell to attach to the conatiners console
[Sat Sep 23 03:08:30 2023] sudo lxc-attach -n market2json-202309221636
[Sat Sep 23 03:08:30 2023]
[Sat Sep 23 03:08:30 2023] >

If an error is shown, its likely the ring names or ip address are misconfigured. Please contact support@fmad.io for further assitance

6) Attach to the Market2JSON container

Attach to the container using the command line

sudo lxc-attach -n market2json-xxxxx

Example shown below

fmadio@fmadio100v2-228U:/opt/fmadio/lxc$ sudo lxc-attach -n market2json-202309221636
root@fmadio100v2-228U-market2json:/#

Once inside the container check the status of the initialization

 systemctl status fmadio-firstboot

Example output shown below, indiciates its still active. Please wait a few minutes for that setup to complete.

After a few minutes the firstboot status will look like below, indiciating initialization is complete.

Once system has started a Grafana login page is presented at port 3000 of the assigned IP address.

Username: admin Password -> contact support@fmad.io

7) Use systemctl to enable/start specific protocols to use

Go to the directory

/etc/systemd/system

And list all the FMADIO services provided

root@fmadio100v2-228U-market2json:/etc/systemd/system# ls -al fmadio*
-rw-r--r-- 1 root root 335 Sep 22 16:38 fmadio-firstboot.service
-rw-r--r-- 1 root root 539 Sep 23 03:10 fmadio-market2json-decode-cboejp_prod_boe_v1.service
-rw-r--r-- 1 root root 554 Sep 23 03:10 fmadio-market2json-decode-cboejp_prod_pitch_v1.service
-rw-r--r-- 1 root root 534 Sep 23 03:10 fmadio-market2json-decode-cboejp_uat_boe_v1.service
-rw-r--r-- 1 root root 546 Sep 23 03:10 fmadio-market2json-decode-cboejp_uat_pitch_v1.service
-rw-r--r-- 1 root root 538 Sep 23 03:10 fmadio-market2json-decode-euronext_v4.13.service
-rw-r--r-- 1 root root 496 Sep 23 03:10 fmadio-market2json-gap-cme_mdp3_v1.service
-rw-r--r-- 1 root root 505 Sep 23 03:10 fmadio-market2json-gap-eurex_eobi_v9.service
-rw-r--r-- 1 root root 535 Sep 23 03:10 fmadio-market2json-gap-euronext_v4.13.service
-rw-r--r-- 1 root root 514 Sep 23 03:10 fmadio-market2json-gap-lse_mitch_v11.service
-rw-r--r-- 1 root root 523 Sep 23 03:10 fmadio-market2json-gap-nasdaq_itch_v5.service
-rw-r--r-- 1 root root 505 Sep 23 03:10 fmadio-market2json-gap-siac_cqs_v1.service
-rw-r--r-- 1 root root 505 Sep 23 03:10 fmadio-market2json-gap-siac_cts_v1.service
-rw-r--r-- 1 root root 510 Sep 23 03:10 fmadio-market2json-gap-siac_opra_v4.service
root@fmadio100v2-228U-market2json:/etc/systemd/system#

Depending on which Market, enable the appropriate service

In this example we are using Euronext, thus enabling the service is as below

systemctl enable fmadio-market2json-gap-euronext_v4.13.service

Then start the service

systemctl start fmadio-market2json-gap-euronext_v4.13.service

Check the status

systemctl status fmadio-market2json-gap-euronext_v4.13.service

If all is configured correctly, the output looks like the following

Show the status of all decoders

root@mdgap-20220927:/etc/systemd/system# systemctl status fmadio-*
* fmadio-mdgap-cme_mdp3_v1.service - FMADIO Market Data Gap Detection
   Loaded: loaded (/etc/systemd/system/fmadio-mdgap-cme_mdp3_v1.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

* fmadio-mdgap-eurex_eobi_v9.service - FMADIO Market Data Gap Detection
   Loaded: loaded (/etc/systemd/system/fmadio-mdgap-eurex_eobi_v9.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

* fmadio-mdgap-nasdaq_itch_v5.service - FMADIO Market Data Gap Detection (Nasdaq.Equities.TotalView.Itch.v5.0.h)
   Loaded: loaded (/etc/systemd/system/fmadio-mdgap-nasdaq_itch_v5.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

* fmadio-mdgap-siac_cqs_v1.service - FMADIO Market Data Gap Detection
   Loaded: loaded (/etc/systemd/system/fmadio-mdgap-siac_cqs_v1.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

* fmadio-mdgap-siac_cts_v1.service - FMADIO Market Data Gap Detection
   Loaded: loaded (/etc/systemd/system/fmadio-mdgap-siac_cts_v1.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

* fmadio-mdgap-siac_opra_v4.service - FMADIO Market Data Gap Detection
   Loaded: loaded (/etc/systemd/system/fmadio-mdgap-siac_opra_v4.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

* fmadio-mdgap.service - FMADIO Market Data Gap Detection
   Loaded: loaded (/etc/systemd/system/fmadio-mdgap.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
root@mdgap-20220927:/etc/systemd/system#

8) Test using a manual stream_cat

For testing, run stream cat manually pushing data to the LXC. In this case we have uploaded a historical PCAP into the capture system prior, see our pcap upload documentation on how to upload data to the system.

https://docs.fmad.io/fmadio-documentation/data-download/pcap-upload

sudo stream_cat -v --ring /opt/fmadio/queue/lxc_market2json_euronext_sbe --ring-filter-bpf /opt/fmadio/queue/lxc_market2json_euronext_sbe "vlan 123 and net 224.0.1.0/24" euronext_20230701_0028

Example output

fmadio@fmadio100v2-228U:/mnt/remote0/pcap/market/euronext$ sudo stream_cat -v --ring /opt/fmadio/queue/lxc_ring_mdgap_euronext --ring-filter-bpf /opt/fmadio/queue/lxc_ring_mdgap_euronext "vlan 123" euronext_20230701_0028
Create FMAD Ring:0 [/opt/fmadio/queue/lxc_ring_mdgap_euronext]
RING[/opt/fmadio/queue/lxc_ring_mdgap_euronext                  ] Size   : 12595200 16777216
RING[/opt/fmadio/queue/lxc_ring_mdgap_euronext                  ] Version:      100      100
RING[/opt/fmadio/queue/lxc_ring_mdgap_euronext                  ] Put:0 0 0x7fe8b8ac1000
RING[/opt/fmadio/queue/lxc_ring_mdgap_euronext                  ] Get:0 0 0x7fe8b8ac2000
RING[/opt/fmadio/queue/lxc_ring_mdgap_euronext                  ] thread:0
RING[/opt/fmadio/queue/lxc_ring_mdgap_euronext                  ] worker thread start
0M Offset:    0GB ChunkID:114598304 TS:00:00:00.000.000.000 | Pending    944 MB 0.000Gbps 0.000Mpps CPUIdle:0.000 CPUFetch:0.698 CPUSend:0.000
0M Offset:    0GB ChunkID:114598321 TS:00:00:00.000.000.000 | Pending    940 MB 0.018Gbps 0.018Mpps CPUIdle:0.000 CPUFetch:0.003 CPUSend:0.000
0M Offset:    0GB ChunkID:114598337 TS:00:00:00.000.000.000 | Pending    936 MB 0.029Gbps 0.028Mpps CPUIdle:0.000 CPUFetch:0.001 CPUSend:0.000
0M Offset:    0GB ChunkID:114598345 TS:00:00:00.000.000.000 | Pending    934 MB 0.015Gbps 0.015Mpps CPUIdle:0.000 CPUFetch:0.001 CPUSend:0.000
0M Offset:    0GB ChunkID:114598361 TS:00:00:00.000.000.000 | Pending    930 MB 0.029Gbps 0.029Mpps CPUIdle:0.000 CPUFetch:0.001 CPUSend:0.000
0M Offset:    0GB ChunkID:114598371 TS:00:00:00.000.000.000 | Pending    927 MB 0.018Gbps 0.018Mpps CPUIdle:0.000 CPUFetch:0.001 CPUSend:0.000
0M Offset:    0GB ChunkID:114598379 TS:00:00:00.000.000.000 | Pending    925 MB 0.014Gbps 0.015Mpps CPUIdle:0.000 CPUFetch:0.000 CPUSend:0.000
0M Offset:    0GB ChunkID:114598387 TS:00:00:00.000.000.000 | Pending    923 MB 0.015Gbps 0.015Mpps CPUIdle:0.000 CPUFetch:0.000 CPUSend:0.000
0M Offset:    0GB ChunkID:114598396 TS:00:00:00.000.000.000 | Pending    921 MB 0.017Gbps 0.017Mpps CPUIdle:0.000 CPUFetch:0.001 CPUSend:0.000
.
.
.

Further filtering may be required, e.g. for a specific multicast port. For example Euronext filtering on port 10135 for a specific symbol

sudo stream_cat -v --ring /opt/fmadio/queue/lxc_market2json_euronext_sbe --ring-filter-bpf /opt/fmadio/queue/lxc_market2json_euronext_sbe "vlan 123 and udp and port 10135" euronext_20230701_0028

The results can be observed in the container running

journalctl  -f

Example output, the TotalPkt count increasing

Jul 01 04:40:11 fmadio100v2-228U-mdgap fmadio-mdgap.lua[1090]: status      0.299GB    2.108M      0.000Mbps      0.000Mpps      0.000Mmps Gaps:   12737 Drops:7538641014471
Jul 01 04:40:12 fmadio100v2-228U-mdgap fmadio-mdgap.lua[1087]: {"module":"market-data-gap","subsystem":"monitor"   ,"timestamp":1688186411,"uptime_min": 13.48,"IsUpPCAP":true,"IsUpMDGAP":true,"Protocol":"./omi/euronext/Euronext.Optiq.MarketDataGateway.Sbe.v4.13.h"}
Jul 01 04:40:13 fmadio100v2-228U-mdgap fmadio-mdgap.lua[1087]: {"module":"market-data-gap","subsystem":"monitor"   ,"timestamp":1688186412,"uptime_min": 13.50,"IsUpPCAP":true,"IsUpMDGAP":true,"Protocol":"./omi/euronext/Euronext.Optiq.MarketDataGateway.Sbe.v4.13.h"}
Jul 01 04:40:13 fmadio100v2-228U-mdgap fmadio[35342]: {"module":"market-data-gap","subsystem":"status"        ,"timestamp":1688186413779,"PCAPtimestamp":1683626529293444864,"PCAPTime":"2023.05.09_10:02:09.293.444.880","Location":"","Protocol":"./omi/euronext/Euronext.Optiq.MarketDataGateway.Sbe.v4.13.h","TotalByte":298782803,"TotalPkt":2107647,"TotalGap":12737,"TotalDrop":7538641014471,"TotalReset":1158618,"MarketGap_bps":0,"MarketGap_pps":0,"MarketGap_mps":0,"MarketGap_Lag":4559884485984256,"LatencyEMA":9919832,"LatencyMin":-9223372036854775808,"LatencyMax":0}
Jul 01 04:40:13 fmadio100v2-228U-mdgap fmadio-mdgap.lua[1090]: status      0.299GB    2.108M      0.000Mbps      0.000Mpps      0.000Mmps Gaps:   12737 Drops:7538641014471
Jul 01 04:40:14 fmadio100v2-228U-mdgap fmadio-mdgap.lua[1087]: {"module":"market-data-gap","subsystem":"monitor"   ,"timestamp":1688186413,"uptime_min": 13.52,"IsUpPCAP":true,"IsUpMDGAP":true,"Protocol":"./omi/euronext/Euronext.Optiq.MarketDataGateway.Sbe.v4.13.h"}
Jul 01 04:40:15 fmadio100v2-228U-mdgap fmadio-mdgap.lua[1087]: {"module":"market-data-gap","subsystem":"monitor"   ,"timestamp":1688186414,"uptime_min": 13.53,"IsUpPCAP":true,"IsUpMDGAP":true,"Protocol":"./omi/euronext/Euronext.Optiq.MarketDataGateway.Sbe.v4.13.h"}                                                                                                                                                                                                                                                                                           Jul 01 04:40:15 fmadio100v2-228U-mdgap fmadio[35364]: {"module":"market-data-gap","subsystem":"status"        ,"timestamp":1688186415787,"PCAPtimestamp":1683626529293444864,"PCAPTime":"2023.05.09_10:02:09.293.444.880","Location":"","Protocol":"./omi/euronext/Euronext.Optiq.MarketDataGateway.Sbe.v4.13.h","TotalByte":298782803,"TotalPkt":2107647,"TotalGap":12737,"TotalDrop":7538641014471,"TotalReset":1158618,"MarketGap_bps":0,"MarketGap_pps":0,"MarketGap_mps":0,"MarketGap_Lag":4559886494150144,"LatencyEMA":9919832,"LatencyMin":-9223372036854775
808,"LatencyMax":0}
Jul 01 04:40:15 fmadio100v2-228U-mdgap fmadio-mdgap.lua[1090]: status      0.299GB    2.108M      0.000Mbps      0.000Mpps      0.000Mmps Gaps:   12737 Drops:7538641014471

Or by viewing on the Grafana GUI as shown below

Assuming the above is working correctly, next is to setup automatic pushing of the data

9) Automatic Push to the Container

To configure automatic push of the data to the container we use FMADIO Push LXC commands. Reference documentation is located here

https://docs.fmad.io/fmadio-documentation/cli-reference/fmadiocli#automatic-push-to-lxc-container

Start by checking the status of the current LXC Push items

show push lxc status

Example below shows a single lxc push for IDS Suricata, there is no mdgap pushes currently configured

[Sat Jul  1 01:01:25 2023] > show push lxc status
[Sat Jul  1 01:01:25 2023]
[Sat Jul  1 01:01:25 2023] Ring name                                       : Enable :       From : Description                    : Filter Frame         : Filter BPF
[Sat Jul  1 01:01:25 2023] ------------------------------------------------+--------+------------+--------------------------------+----------------------+-----------------------------------------------------------------
[Sat Jul  1 01:01:25 2023] /opt/fmadio/queue/lxc_ring_suricata             :  false :        now :                                :                      :
[Sat Jul  1 01:01:25 2023] ------------------------------------------------+--------+------------+--------------------------------+----------------------+-----------------------------------------------------------------
[Sat Jul  1 01:01:25 2023] >

Add an automatic push using the command

config push lxc add lxc_market2json_euronext_sbe

Example output looks like the following

[Sat Jul  1 01:03:53 2023] > config push lxc add lxc_market2json_euronext_sbe
[Sat Jul  1 01:03:53 2023] New Push LXC target [/opt/fmadio/queue/lxc_market2json_euronext_sbe]
[Sat Jul  1 01:03:53 2023] >

By default the target is DISABLED can be viewed using the show push lxc status command

[Sat Jul  1 01:06:47 2023] > show push lxc status
[Sat Jul  1 01:06:49 2023]
[Sat Jul  1 01:06:49 2023] Ring name                                       : Enable :       From : Description                    : Filter Frame         : Filter BPF
[Sat Jul  1 01:06:49 2023] ------------------------------------------------+--------+------------+--------------------------------+----------------------+-----------------------------------------------------------------
[Sat Jul  1 01:06:49 2023] /opt/fmadio/queue/lxc_ring_suricata             :  false :        now :                                :                      :
[Sat Jul  1 01:06:49 2023] /opt/fmadio/queue/lxc_market2json_euronext_sbe  :  false :        now :                                :                      :
[Sat Jul  1 01:06:49 2023] ------------------------------------------------+--------+------------+--------------------------------+----------------------+-----------------------------------------------------------------
[Sat Jul  1 01:06:49 2023] >

Next add an appropriate BPF filter, in this case we want to filter on a specific Multicast group and VLAN

config push lxc filter-bpf lxc_market2json_euronext_sbe "vlan 123 and port 10135"

This is shown in the "FilterBPF" part of the status display

[Sat Jul  1 01:08:26 2023] > show push lxc status
[Sat Jul  1 01:08:27 2023] Ring name                                       : Enable :       From : Description                    : Filter Frame         : Filter BPF
[Sat Jul  1 01:08:27 2023] ------------------------------------------------+--------+------------+--------------------------------+----------------------+-----------------------------------------------------------------
[Sat Jul  1 01:08:27 2023] /opt/fmadio/queue/lxc_ring_suricata             :  false :        now :                                :                      :
[Sat Jul  1 01:08:27 2023] /opt/fmadio/queue/lxc_market2json_euronext_sbe  :  false :        now :                                :                      : vlan 123 and port 10135
[Sat Jul  1 01:08:27 2023] ------------------------------------------------+--------+------------+--------------------------------+----------------------+-----------------------------------------------------------------
[Sat Jul  1 01:08:27 2023] >

Then Enable the push

config push lxc enable lxc_market2json_euronext_sbe

Example status, the mdgap_euronext is now shown as enabled.

[Sat Jul  1 01:10:08 2023] > show push lxc status
[Sat Jul  1 01:10:09 2023] Ring name                                       : Enable :       From : Description                    : Filter Frame         : Filter BPF
[Sat Jul  1 01:10:09 2023] ------------------------------------------------+--------+------------+--------------------------------+----------------------+-----------------------------------------------------------------
[Sat Jul  1 01:10:09 2023] /opt/fmadio/queue/lxc_ring_suricata             :  false :        now :                                :                      :
[Sat Jul  1 01:10:09 2023] /opt/fmadio/queue/lxc_market2json_euronext_sbe  :   true :        now :                                :                      : vlan 177 and port 10135
[Sat Jul  1 01:10:09 2023] ------------------------------------------------+--------+------------+--------------------------------+----------------------+-----------------------------------------------------------------
[Sat Jul  1 01:10:09 2023] >

NOTE: In addition to this the Analytics schedule needs to have push_lxc enabled, shown below

10) Debug and Monitoring

The status of the gap detector queue can be monitoring using the fmadiocli

show ring status

Example shown below. In this example we see the mdgap_euronext has 458K packets on both Put (producer) and Get (consumer) meaning both the automatic push and the MDGap application are generating and consuming the data

[Sat Jul  1 01:13:42 2023] > show ring status
[Sat Jul  1 01:13:42 2023] Name                           : Path                                               :     Status :          Pkt Put :          Pkt Get : Pkt Queued : Desc
[Sat Jul  1 01:13:42 2023] -------------------------------+----------------------------------------------------+------------+------------------+------------------+------------+------------------------------------L
[Sat Jul  1 01:13:42 2023] lxc_market2json_euronext_sbe   : /opt/fmadio/queue/lxc_market2json_euronext_sbe     :     online :          485,253 :          485,253 :          0 :
[Sat Jul  1 01:13:42 2023] -------------------------------+----------------------------------------------------+------------+------------------+------------------+------------+------------------------------------
[Sat Jul  1 01:13:42 2023] >

If the counters are showing 0, it usually means there is a issue on the Producer side

If the its showing "full" / Pkt Get is 0 it means a problem on the Consumer side (MDGap)

Debug Logfiles

Host side

logfiles can be found in

/mnt/store0/log/push_lxc*

Market2JSON Container

logfiles are best using the system logfile

journalctl  -f

Last updated