Tracing and observability of Lingua Franca applications. Xronos Dashboard is built on top of the Xronos Trace Plugin, InfluxDB, Telegraf and Grafana.
Start the Xronos Dashboard:
docker compose up
InfluxDB, Telegraf and Grafana services will start.
http://localhost:8086
admin
linguafranca
http://localhost:8186/telegraf
localhost:8094
http://localhost:3000
admin
linguafranca
Lag is the time difference between the logical tag of events and the physical times at which they are handled. Lag captures how the physical timeline deviates logical timeline of the application. An application that is overloaded will typically exhibit growing lags. Lags in the order of seconds is unusual and likely indicates a fault.
There are two phenomena that contribute to lag: reaction execution time and (for federated applications) network communication time. Lag may be reduced by:
min_spacing
on actions or period
on timersAll of these make different trade-offs to handle execution time and communication latencies.
Reaction Execution graphs are similar to Gantt charts. They visualize execution sequencing and time. The length of each bar represents the execution time of each reaction. The opacity of each bar represents the logical timeline of the reactor, with darker opacity corresponding with more recent logical timestamps (or microsteps).
Generic Lingua Franca reactors to publish to Xronos Dashboard are located in InfluxPublisher/. Each language provides an InfluxLinePublisher
reactor, and example applications to publish to the dashboard.
Python: InfluxPublisher/py
See InfluxPublisher/README.md to build and run the example publishers.
You can find additional examples in the examples directory.
Grafana is configured by default to look for dashboards in the /dashboards
path of the container. You can provide your own dashboards by mapping a folder from your host into this location.
This reference repository is not meant for a production environment. If deploying onto public servers, create your own environment files with approprately stored passwords and map into the containers:
influxdb/influxdb.conf
telegraf/telefraf.conf
grafana/grafana.conf