| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
If you find this repository useful, please consider giving it a star. Your support is greatly appreciated! 🙏
Introducing the comprehensive Raspberry Pi and Application monitoring solution using Grafana, Prometheus, OpenTelemetry, Cadvisor, and Node-Exporter Stack! This project provides a complete monitoring platform for your Raspberry Pi infrastructure and .NET applications. With Grafana's intuitive dashboards, you can visualize system metrics collected by Prometheus and Cadvisor, hardware information from Node-Exporter, and application telemetry data from your .NET Web APIs through OpenTelemetry. The combination of these tools results in a powerful and efficient monitoring solution that gives you complete visibility into your system's health, application performance, and business metrics.
This repository contains a docker-compose file to run a complete monitoring stack. It is based on the following projects:
Before we get started installing the stack, we need to make sure that the following prerequisites are met:
To install the stack, follow the steps below:
git clone https://github.com/oijkn/Docker-Raspberry-PI-Monitoring.gitcd Docker-Raspberry-PI-Monitoringmkdir -p prometheus/data grafana/data && \
sudo chown -R 472:472 grafana/ && \
sudo chown -R 65534:65534 prometheus/docker-compose up -dThis will start all the containers and make them available on the host machine.
The following ports are used:
The Grafana dashboard can be accessed by navigating to http://<host-ip>:3000 in your browser for example http://192.168.1.100:3000.
The default username and password are both admin. You will be prompted to change the password on the first login.
Credentials can be changed by editing the .env file.
If you would like to change which targets should be monitored, you can edit the prometheus.yml file.
The targets section contains a list of all the targets that should be monitored by Prometheus.
The names defined in the job_name section are used to identify the targets in Grafana.
The static_configs section contains the IP addresses of the targets that should be monitored. Actually, they are sourced from the service names defined in the docker-compose.yml file.
If you think that the scrape_interval value is too aggressive, you can change it to a more suitable value.
In order to check if the stack is running correctly, you can run the following command:
docker compose psView the logs of a specific container by running the following command:
docker logs -f <container-name>Note: After making configuration changes, restart the stack:
sudo docker compose down && sudo docker compose up -dThis stack includes OpenTelemetry Collector support for monitoring .NET Web APIs with distributed tracing, custom metrics, and comprehensive observability.
dotnet add package OpenTelemetry.Extensions.Hosting
dotnet add package OpenTelemetry.Instrumentation.AspNetCore
dotnet add package OpenTelemetry.Instrumentation.Http
dotnet add package OpenTelemetry.Exporter.OpenTelemetryProtocolbuilder.Services.AddOpenTelemetry()
.WithTracing(tracing => tracing
.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation()
.AddOtlpExporter(options => {
options.Endpoint = new Uri("http://localhost:4317");
}))
.WithMetrics(metrics => metrics
.AddAspNetCoreInstrumentation()
.AddOtlpExporter(options => {
options.Endpoint = new Uri("http://localhost:4317");
}));✅ Distributed Tracing - Track requests across services
✅ Custom Metrics - Business-specific measurements
✅ Automatic Instrumentation - ASP.NET Core, HTTP, SQL monitoring
✅ Error Tracking - Exception monitoring and alerting
✅ Performance Monitoring - Request duration, throughput, etc.
Check the dotnet-examples/ directory for:
🔗 Your .NET application runs in a separate Docker project? No problem!
The OpenTelemetry Collector is configured to accept connections from external containers through:
Quick connection options:
For detailed setup instructions, see External Container Setup Guide.
Since Grafana v5 has introduced the concept of provisioning, it is possible to automatically add data sources and dashboards to Grafana.
This is done by placing the datasources and dashboards directories in the provisioning folder. The files in these directories are automatically loaded by Grafana on startup.
If you like to add a new dashboard, simply place the JSON file in the dashboards directory, and it will be automatically loaded next time Grafana is started.
If you would like to install this dashboard from Grafana.com, simply follow the steps below:
Or you can follow the steps described in the Grafana Documentation.
This dashboard is intended to help you get started with monitoring your Raspberry PI devices. If you have any changes or suggestions, you would like to see, please feel free to open an issue or create a pull request.
Here is a screenshot of the dashboard:

This project is licensed under the MIT License - see the LICENSE file for details
Enable c-group memory and swap accounting on the host machine by running the following command:
sudo sed -i 's/^GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX="cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1 swapaccount=1"/' /etc/default/grub
sudo update-grub
sudo reboot| Back | FazBrowse Home | New Git URL |