The eCAL-Dashboard provides functionality for monitoring the state of the eCAL middleware. The dashboard offers insights into:
- The status of the system's hosts, including their RAM, Disk, and CPU.
- The communication topology present in the system, including:
- Interactions between publishers and subscribers of the topics,
- Connections between clients and services,
- Summary data at the process level,
- Aggregated information at the host level.
- Performance metrics for both publishers and subscribers, such as write and read performance, as well as message drops.
The application consists of a Python script that polls eCAL's Monitoring API at predefined intervals. It subscribes to the "machine_state_[HOSTNAME]"-named topics, to which eCAL's Machine Monitoring Agents (MMAs) publish information regarding individual hosts (CPU, RAM, Disk, etc.). The collected data is then inserted into a SQLite database, which serves as the data source for the Grafana dashboards.
The messages sent by the MMA follow the protobuf specification provided in proto_messages\mma.proto
. This protofile stems from here and has to be considered in upgrades.
- You find the eCAL installation here.
- Additionally, install a Python Wheel for eCAL6, available from the eCAL repository. To facilitate the usage of the script prior to an official eCAL6 release, the wheel used for development is provided and can be installed using pip.
- Install Grafana on Windows like here.
Start Grafana by executing
grafana-server.exe
, located in thebin
directory Login on http://localhost:3000/login usingadmin
as username and password and import the dashboards from .../ecal-grafana-dashboard/grafana/. Add a new connection from SQLite (Probably also to install) and set theDB
Folder as Path using your individual adjustments. - You may want to use a Virtual Environment like here
- Before starting the monitoring application, ensure that the required packages are installed. These can be found in the requirements.txt file in this folder. The requirements can be installed using the command:
pip install -r requirements.txt
- To install a WSL on Windows follow the instructions here.
- Install Python version 3.12.X and set as standard.
- Then you need to follow the eCAL installation here.
- Install the corresponding Ubuntu Python wheel from here.
sudo apt-get install eclipse_ecal[...].whl
- Install Grafana in WSL like here. Start Grafana Server:
sudo systemctl start grafana-server
Login on http://localhost:3000/login using admin
as username and password and import the dashboards from .../ecal-grafana-dashboard/grafana/. Add a new connection from SQLite (Probably also to install) and set /mnt/c/Users/XXXXXXX/Documents/XXXXXX/ecal-grafana-dashboard/db/ecal_monitoring.db
as Path using your individual adjustments.
- Use a Virtual Environment like here
- Ensure that the required packages are installed. These can be found in the
requirements.txt
file. The requirements can be installed using the command:
pip install -r requirements.txt
- In
monitor.py
andmonitoring_json.py
adjust path to where DB is saved. Also create a DB folder.
To monitor the eCAL middleware using the eCAL-Dashboard, follow these steps:
- Start the MMAs on the system's hosts using the script ecal_mma.exe (Windows), which can be found in the
\bin
folder of a host's eCAL directory. - In root of the Repo start the Virtual Environment.
- Execute the script with the following command:
python monitoring_json.py --interval 1
The --interval
flag specifies the polling interval; in this case, the Monitoring API is polled every second. Appending --verbose
will provide verbose output from the script. The monitoring script creates a database named ecal_monitoring.db
in the \db
directory, which is then accessed by the Grafana server.
- Start eCAL MMA
/usr/bin/ecal_mma-5.13.3
- In root of the Repo start the Virtual Environment
source .venv/bin/activate
- Start Script
python3 monitoring_json.py --interval 1
Copyright (c) 2025 d-fine GmbH
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.