Tracing and observability of Lingua Franca applications. Xronos Dashboard is built on top of the Xronos Trace Plugin, InfluxDB, Telegraf and Grafana.
- Xronos Lingua Franca Tracing
- InfluxDB v2
- Telegraf
- Grafana
- Test publisher in Python via HTTP
- Test publisher in C via UDP sockets
Start the Xronos Dashboard:
docker compose up
InfluxDB, Telegraf and Grafana services will start.
- host:
http://localhost:8086
- username:
admin
- password:
linguafranca
- influx publishing (TCP):
http://localhost:8186/telegraf
- influx publishing (UDP):
localhost:8094
- host:
http://localhost:3000
- username:
admin
- password:
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:
- Adding logical delays on connections to account for execution time
- Using physical actions to handle external or network events
- Increasing
min_spacing
on actions orperiod
on timers - Adding deadlines to reactions to discard old events
All 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