https://github.com/mustafaabdullahk/zephyr-prometheus-example
zephyr prometheus library example application
https://github.com/mustafaabdullahk/zephyr-prometheus-example
example example-project prometheus-client prometheus-metrics zephyr-rtos zephyrproject-rtos
Last synced: 11 months ago
JSON representation
zephyr prometheus library example application
- Host: GitHub
- URL: https://github.com/mustafaabdullahk/zephyr-prometheus-example
- Owner: mustafaabdullahk
- License: apache-2.0
- Created: 2024-04-30T07:17:49.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-30T10:12:56.000Z (almost 2 years ago)
- Last Synced: 2024-10-24T16:49:22.546Z (over 1 year ago)
- Topics: example, example-project, prometheus-client, prometheus-metrics, zephyr-rtos, zephyrproject-rtos
- Language: C
- Homepage:
- Size: 124 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Zephyr Prometheus Example Application
This repository contains a Zephyr Prometheus example application. The main purpose of this
repository is to serve as a reference on how to structure Zephyr-based
applications. Some of the features demonstrated in this example are:
- Basic [Zephyr application][app_dev] skeleton
- [Zephyr workspace applications][workspace_app]
- [Zephyr modules][modules]
- [West T2 topology][west_t2]
- [Custom boards][board_porting]
- Custom [devicetree bindings][bindings]
- Out-of-tree [drivers][drivers]
- Out-of-tree libraries
- Example CI configuration (using GitHub Actions)
- Custom [west extension][west_ext]
- Doxygen and Sphinx documentation boilerplate
- Zephyr [prometheus client library][prometheus_library]
This repository is versioned together with the [Zephyr main tree][zephyr]. This
means that every time that Zephyr is tagged, this repository is tagged as well
with the same version number, and the [manifest](west.yml) entry for `zephyr`
will point to the corresponding Zephyr tag. For example, the `example-application`
v2.6.0 will point to Zephyr v2.6.0. Note that the `main` branch always
points to the development branch of Zephyr, also `main`.
[app_dev]: https://docs.zephyrproject.org/latest/develop/application/index.html
[workspace_app]: https://docs.zephyrproject.org/latest/develop/application/index.html#zephyr-workspace-app
[modules]: https://docs.zephyrproject.org/latest/develop/modules.html
[west_t2]: https://docs.zephyrproject.org/latest/develop/west/workspaces.html#west-t2
[board_porting]: https://docs.zephyrproject.org/latest/guides/porting/board_porting.html
[bindings]: https://docs.zephyrproject.org/latest/guides/dts/bindings.html
[drivers]: https://docs.zephyrproject.org/latest/reference/drivers/index.html
[zephyr]: https://github.com/zephyrproject-rtos/zephyr
[west_ext]: https://docs.zephyrproject.org/latest/develop/west/extensions.html
[prometheus_library]: https://github.com/mustafaabdullahk/zephyrus/
## Getting Started
Before getting started, make sure you have a proper Zephyr development
environment. Follow the official
[Zephyr Getting Started Guide](https://docs.zephyrproject.org/latest/getting_started/index.html).
### Initialization
The first step is to initialize the workspace folder (``my-workspace``) where
the ``example-application`` and all Zephyr modules will be cloned. Run the following
command:
```shell
# initialize my-workspace for the example-application (main branch)
west init -m https://github.com/mustafaabdullahk/zephyr-prometheus-example.git --mr main prom-workspace
# update Zephyr modules
cd prom-workspace
west update
```
### Tested boards
|boards|status|
|--------------|------|
|stm32h747disco|OK|
### Building and running
To build the application, run the following command:
```shell
cd example-application
west build -b $BOARD app
```
where `$BOARD` is the target board.
You can use the `custom_plank` board found in this
repository. Note that Zephyr sample boards may be used if an
appropriate overlay is provided (see `app/boards`).
A sample debug configuration is also provided. To apply it, run the following
command:
```shell
west build -b $BOARD app -- -DOVERLAY_CONFIG=debug.conf
```
Once you have built the application, run the following command to flash it:
```shell
west flash
```
example output:
```bash
*** Booting Zephyr OS build v3.6.0-3205-g950382cb1717 ***
[00:00:00.001,000] net_config: Initializing network
[00:00:00.001,000] net_config: Waiting interface 1 (0x240010f0) to be up...
Prometheus exposer listening on port 8080
[00:00:01.686,000] net_config: Interface 1 (0x240010f0) coming up
[00:00:01.686,000] net_config: Running dhcpv4 client...
Zephyr Example Application 1.0.0
[00:00:04.688,000] net_dhcpv4: Received: 10.5.194.51
[00:00:04.688,000] net_config: IPv4 address: 10.5.194.51
[00:00:04.688,000] net_config: Lease time: 258944 seconds
[00:00:04.688,000] net_config: Subnet: 255.255.0.0
[00:00:04.688,000] net_config: Router: 10.5.0.1
Handling connection
metric->name: test_counter
metric->type: 0
counter->value: 1
counter->num_labels: 2
Handling connection
metric->name: test_counter
metric->type: 0
counter->value: 1
counter->num_labels: 2
```
### Testing
To execute Twister integration tests, run the following command:
```shell
west twister -T tests --integration
```
### Documentation
A minimal documentation setup is provided for Doxygen and Sphinx. To build the
documentation first change to the ``doc`` folder:
```shell
cd doc
```
Before continuing, check if you have Doxygen installed. It is recommended to
use the same Doxygen version used in [CI](.github/workflows/docs.yml). To
install Sphinx, make sure you have a Python installation in place and run:
```shell
pip install -r requirements.txt
```
API documentation (Doxygen) can be built using the following command:
```shell
doxygen
```
The output will be stored in the ``_build_doxygen`` folder. Similarly, the
Sphinx documentation (HTML) can be built using the following command:
```shell
make html
```
The output will be stored in the ``_build_sphinx`` folder. You may check for
other output formats other than HTML by running ``make help``.