Skip to content

Commit a4f83e5

Browse files
authored
Merge pull request #13 from ExamonHPC/release/v0.3.0
Release/v0.3.0
2 parents 1963666 + 1030085 commit a4f83e5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+9935
-4
lines changed

.github/CODEOWNERS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
* @fbeneventi
2+
/.github/ @fbeneventi

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44
.ipynb_*
55
examon-cache/
66
examon-cache/*
7-
7+
build
8+
site

CONTRIBUTING.md

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# Contributing to ExaMon
2+
3+
First off, thank you for considering contributing to our project!
4+
5+
## How Can I Contribute?
6+
7+
### Reporting Bugs
8+
9+
Before creating bug reports, please check the issue list as you might find out that you don't need to create one. When you are creating a bug report, please include as many details as possible:
10+
11+
* Use a clear and descriptive title
12+
* Describe the exact steps which reproduce the problem
13+
* Provide specific examples to demonstrate the steps
14+
* Describe the behavior you observed after following the steps
15+
* Explain which behavior you expected to see instead and why
16+
* Include screenshots if possible
17+
18+
### Suggesting Enhancements
19+
20+
If you have a suggestion for the project, we'd love to hear about it. Please include:
21+
22+
* A clear and detailed explanation of the feature
23+
* The motivation behind this feature
24+
* Any alternative solutions you've considered
25+
* If applicable, examples from other projects
26+
27+
### Pull Request Process
28+
29+
1. Fork the repository and create your branch from `master`
30+
2. If you've added code that should be tested, add tests
31+
3. Ensure the test suite passes
32+
4. Update the documentation if needed
33+
5. Issue that pull request!
34+
35+
#### Pull Request Guidelines
36+
37+
* Follow our coding standards (see below)
38+
* Include relevant issue numbers in your PR description
39+
* Update the README.md with details of changes if applicable
40+
* The PR must pass all CI/CD checks [TBD]
41+
* Wait for review from maintainers
42+
43+
### Development Setup
44+
45+
1. Fork and clone the repo
46+
3. Create a branch: `git checkout -b my-branch-name`
47+
48+
### Coding Standards
49+
50+
* Use consistent code formatting
51+
* Write clear commit messages following [Conventional Commits](https://www.conventionalcommits.org/)
52+
* Comment your code where necessary
53+
* Write tests for new features
54+
* Keep the code simple and maintainable
55+
56+
### Commit Messages
57+
58+
We follow a basic specification:
59+
60+
```
61+
type(scope): description
62+
[optional body]
63+
[optional footer]
64+
```
65+
66+
The type should be one of the following:
67+
68+
| Type | Description |
69+
|------|-------------|
70+
| add | Introduces a new feature or functionality |
71+
| fix | Patches a bug or resolves an issue |
72+
| change | Modifies existing functionality or behavior |
73+
| remove | Deletes or deprecates functionality |
74+
| merge | Combines branches or resolves conflicts |
75+
| doc | Updates documentation or comments |
76+
77+
78+
### First Time Contributors
79+
80+
Looking for work? Check out our issues labeled `good first issue` or `help wanted`.
81+
82+
## License
83+
84+
By contributing, you agree that your contributions will be licensed under the same license that covers the project.
85+
86+
## Questions?
87+
88+
Don't hesitate to contact the project maintainers if you have any questions!

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ git clone https://github.com/ExamonHPC/examon.git
3535
Once you have the above setup, you need to create the Docker services:
3636

3737
```bash
38-
docker-compose up -d
38+
docker compose up -d
3939
```
4040

4141
This will build the Docker images and fetch some prebuilt images and then start the services. You can refer to the `docker-compose.yml` file to see the full configuration.
@@ -62,14 +62,14 @@ Fill out the form with the following settings:
6262
### Collecting data using the dummy "examon_pub" plugin
6363
Once all Docker services are running (can be started either by `docker-compose up -d` or `docker-compose start`), the MQTT broker is available at `TEST_SERVER` port `1883` where `TEST_SERVER` is the address of the server where the services run.
6464

65-
To test the installation we can use the `examon_pub` plugin available in the `publishers/examon_pub` folder of this project.
65+
To test the installation we can use the `examon_pub.py` plugin available in the `publishers/examon_pub` folder of this project.
6666

6767
It is highly recommended to follow the tutorial described in the Jupyter notebook `README-notebook.ipynb` to understand how an Examon plugin works.
6868

6969
After having installed and configured it on one or more test nodes we can start the data collection running for example:
7070

7171
```bash
72-
[root@testnode00]$ ./examon_pub -b TEST_SERVER -p 1883 -t org/myorg -s 1 run
72+
[root@testnode00]$ python ./examon_pub.py -b TEST_SERVER -p 1883 -s 1 run
7373
```
7474
If everything went well, the data are available both through the Grafana interface and using the `examon-client`.
7575

docs/About.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# About
2+
3+
ExaMon is an open source framework developed by Francesco Beneventi at [DEI - Department of Electrical, Electronic, and Information Engineering "Guglielmo Marconi"](https://dei.unibo.it/en/index.html) of the University of Bologna under the supervision of Profs. Luca Benini, Andrea Bartolini and Andrea Borghesi and in collaboration with [CINECA](https://www.hpc.cineca.it/) and [E4](https://www.e4company.com/en/).
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# ExaMon Docker Setup
2+
This setup will install all server-side components of the ExaMon framework:
3+
4+
- MQTT broker and Db connector
5+
- Grafana
6+
- KairosDB
7+
- Cassandra
8+
9+
## Prerequisites
10+
Since Cassandra is the component that requires the majority of resources, you can find more details about the suggested hardware configuration of the system that will host the services here:
11+
12+
[Hardware Configuration](https://cassandra.apache.org/doc/latest/operating/hardware.html#:~:text=While%20Cassandra%20can%20be%20made,at%20least%2032GB%20of%20RAM)
13+
14+
To install all the services needed by ExaMon we will use Docker and Docker Compose:
15+
16+
[Install Docker and Docker Compose](https://docs.docker.com/engine/installation/).
17+
18+
19+
## Setup
20+
21+
### Clone the Git repository
22+
23+
First you will need to clone the Git repository:
24+
25+
```bash
26+
git clone https://github.com/ExamonHPC/examon.git
27+
```
28+
29+
### Create Docker Services
30+
31+
Once you have the above setup, you need to create the Docker services:
32+
33+
```bash
34+
docker compose up -d
35+
```
36+
37+
This will build the Docker images and fetch some prebuilt images and then start the services. You can refer to the `docker-compose.yml` file to see the full configuration.
38+
39+
### Configure Grafana
40+
41+
Log in to the Grafana server using your browser and the default credentials:
42+
43+
http://localhost:3000
44+
45+
Follow the normal procedure for adding a new data source (KairosDB):
46+
47+
[Add a Datasource](https://grafana.com/docs/grafana/latest/datasources/add-a-data-source/)
48+
49+
Fill out the form with the following settings:
50+
51+
- Type: `KairosDB`
52+
- Name: `kairosdb`
53+
- Url: http://kairosdb:8083
54+
- Access: `Server`
55+
56+
## Usage Examples
57+
58+
### Collecting data using the dummy "examon_pub" plugin
59+
Once all Docker services are running (can be started either by `docker compose up -d` or `docker compose start`), the MQTT broker is available at `TEST_SERVER` port `1883` where `TEST_SERVER` is the address of the server where the services run.
60+
61+
To test the installation we can use the `examon_pub.py` plugin available in the `publishers/examon_pub` folder of this project.
62+
63+
It is highly recommended to follow the tutorial described in the Jupyter notebook `README-notebook.ipynb` to understand how an Examon plugin works.
64+
65+
After having installed and configured it on one or more test nodes we can start the data collection running for example:
66+
67+
```bash
68+
[root@testnode00]$ python ./examon_pub.py -b TEST_SERVER -p 1883 -s 1 run
69+
```
70+
If everything went well, the data are available both through the Grafana interface and using the [examon-client](../Users/Demo_ExamonQL.ipynb).
71+
72+
73+
## Where to go next
74+
75+
- Write your first plugin: [Example plugin](../Plugins/examon_pub.ipynb)
76+
- Write your first query: [Example query](../Users/Demo_ExamonQL.ipynb)
77+
78+

docs/Introduction.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<figure markdown>
2+
![](images/image1.png){ width="300" }
3+
</figure>
4+
5+
ExaMon (Exascale Monitoring) is a data collection and analysis platform designed to manage large amounts of data. Its main prerogatives are to easily manage heterogeneous data, both in streaming and batch mode and to provide access to this data through a common interface. This simplifies the use of data to support applications such as real-time anomaly detection, predictive maintenance, and efficient resource and energy management leveraging machine learning and artificial intelligence techniques. Due to its scalable and distributed nature, it is easily applicable to HPC systems, especially exascale-sized ones, the primary use case for which it was designed.
6+
7+
The key feature of the framework is its data model, designed to be schema-less and scalable. In this way, it allows to collect a huge amount of heterogeneous data under a single interface. This data lake, which makes all the data available online to any user at any time, is proposed as a solution to break down internal data silos in organizations. The main benefit of this approach is that it enables capturing the full value of the data by making it immediately usable. In addition, having all the data in one place makes it easier to create complete and immediate executive reports, enabling faster and more informed decisions.
8+
9+
Another key aspect of the framework's design is making industry data easily available for research purposes. Indeed, researchers only need to manage a single data source to have a complete picture of complex industrial systems, and the benefits can be many. The ease of access to a huge variety and quantity of real-world data will enable them to create innovative solutions with results that may have real-world impact.
10+
11+
<figure markdown align="center">
12+
![](images/image13.png){ width="80%" }
13+
</figure>
14+
15+
Furthermore, access to a wide variety of heterogeneous data with very low latency enables the realization of accurate digital twins. In this regard, the framework can provide both historical data for building accurate models, and fresh data for quickly making inferences on the same models. Moreover, the availability of up-to-date data in near real-time allows the construction of visual models that enable the rapid acquisition of knowledge about the state of any complex system. In fact, by exploiting the language of visual communication, it is possible to extend collaboration by bringing together a wide range of experts focused on problem-solving or optimization of the system itself.
16+
17+
<figure markdown align="center">
18+
![](images/image3.png){ width="80%" }
19+
</figure>
20+
21+
The architecture of the framework is based on established protocols and technologies rather than specific tools and implementations. The communication layer is based on the publish-subscribe model that finds various implementations, such as in the MQTT protocol. The need to interact with different data sources, ranging from complex room cooling systems to internal CPU sensors, requires a simple, scalable, low-latency communication protocol that is resilient to network conditions and natively designed to enable machine-to-machine (M2M) communication in complex environments. Moreover, data persistence is handled by a NoSQL-type database, an industry-proven technology, designed to be horizontally scalable and built to efficiently handle large amounts of data. On top of these two pillars, the other components are primarily dedicated to handling the two main categories of data that characterize the ExaMon framework. The first is the time series data type, which represents the majority of the data sources managed by ExaMon and is suitable for managing all the sensors and logs available today in a data center. The second is the generic tabular data type, suitable for managing metadata and any other data that does not fall into the first category. ExaMon provides the tools and interfaces to coordinate these two categories and interface them with the user in the most seamless way.
22+
23+
As a data platform, one of ExaMon's priorities is data sharing. To maximize its effectiveness, it offers both domain-specific interfaces (DSLs), which allow more experienced users to take full advantage of the data source's capabilities, and more high-level, standard interfaces such as the ANSI SQL language. Again, ExaMon promotes tools that are state of the art for time series data visualization, such as Grafana. Although more experienced users can interface with ExaMon using tools such as Jupyter notebooks (via a dedicated client), more user-friendly BI solutions such as Apache Superset, which uses web visualization technologies and the ANSI SQL language, are also provided to streamline the user experience. There is also compatibility with tools such as Apache Spark and Dask for large-scale data analysis in both streaming and batch modes. Finally, CLI-type tools are also available to provide access to the data and typical features directly from the user's shell.

0 commit comments

Comments
 (0)