Latest commit

History

49 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Raspberry Pi & Docker Monitoring

Hit the Star! ⭐

If you find this repository useful, please consider giving it a star. Your support is greatly appreciated! 🙏

Introduction

Introducing the Raspberry Pi monitoring solution using Grafana, Prometheus, Cadvisor, and Node-Exporter Stack! This project aims to provide a comprehensive and user-friendly way to monitor the performance of your Raspberry Pi. With Grafana's intuitive dashboards, you can easily visualize system metrics collected by Prometheus and Cadvisor, while Node-Exporter provides valuable information about the Raspberry Pi's hardware and operating system. The combination of these tools results in a powerful and efficient monitoring solution that will give you complete visibility into your system's health. Check out the project and take your Raspberry Pi monitoring to the next level !

This repository contains a docker-compose file to run a Raspberry PI monitoring stack. It is based on the following projects:

Prerequisites

Before we get started installing the stack, we need to make sure that the following prerequisites are met:

  • Docker is installed on the host machine
  • Docker Compose is installed on the host machine
  • The host machine is running a Raspberry PI OS or any other compatible Linux distribution

Installation and Configuration

To install the stack, follow the steps below:

  • Clone this repository to your host machine.
git clone https://github.com/oijkn/Docker-Raspberry-PI-Monitoring.git
  • Enter to the cloned directory.
cd Docker-Raspberry-PI-Monitoring
  • Create data directory and change the ownership of the prometheus and grafana folders for a nice and clean installation.
mkdir -p prometheus/data grafana/data && \
sudo chown -R 472:472 grafana/ && \
sudo chown -R 65534:65534 prometheus/
  • Start the stack with docker-compose.
docker-compose up -d

This will start all the containers and make them available on the host machine.
The following ports are used (only Grafana is exposed on the host machine):

  • 3000: Grafana
  • 9090: Prometheus
  • 8080: cAdvisor
  • 9100: NodeExporter

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 ps

View the logs of a specific container by running the following command:

docker logs -f <container-name>

Add Data Sources and Dashboards

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.

Install Dashboard from Grafana.com (Optional)

If you would like to install this dashboard from Grafana.com, simply follow the steps below:

  • Navigate to the dashboard on Grafana.com Dashboard
  • Click on the Copy ID to Clipboard button
  • Navigate to the Import page in Grafana
  • Paste the ID into the Import via grafana.com field
  • Click on the Load button
  • Click on the Import button

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: Grafana Dashboard

License

This project is licensed under the MIT License - see the LICENSE file for details

Troubleshooting

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

About

A docker-compose stack solution for monitoring host and containers with Prometheus, Grafana, cAdvisor and NodeExporter.

Topics

Resources

Stars

577 stars

Watchers

10 watching

Forks

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

49 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Raspberry Pi & Docker Monitoring

Hit the Star! ⭐

If you find this repository useful, please consider giving it a star. Your support is greatly appreciated! 🙏

Introduction

Introducing the Raspberry Pi monitoring solution using Grafana, Prometheus, Cadvisor, and Node-Exporter Stack! This project aims to provide a comprehensive and user-friendly way to monitor the performance of your Raspberry Pi. With Grafana's intuitive dashboards, you can easily visualize system metrics collected by Prometheus and Cadvisor, while Node-Exporter provides valuable information about the Raspberry Pi's hardware and operating system. The combination of these tools results in a powerful and efficient monitoring solution that will give you complete visibility into your system's health. Check out the project and take your Raspberry Pi monitoring to the next level !

This repository contains a docker-compose file to run a Raspberry PI monitoring stack. It is based on the following projects:

Prerequisites

Before we get started installing the stack, we need to make sure that the following prerequisites are met:

  • Docker is installed on the host machine
  • Docker Compose is installed on the host machine
  • The host machine is running a Raspberry PI OS or any other compatible Linux distribution

Installation and Configuration

To install the stack, follow the steps below:

  • Clone this repository to your host machine.
git clone https://github.com/oijkn/Docker-Raspberry-PI-Monitoring.git
  • Enter to the cloned directory.
cd Docker-Raspberry-PI-Monitoring
  • Create data directory and change the ownership of the prometheus and grafana folders for a nice and clean installation.
mkdir -p prometheus/data grafana/data && \
sudo chown -R 472:472 grafana/ && \
sudo chown -R 65534:65534 prometheus/
  • Start the stack with docker-compose.
docker-compose up -d

This will start all the containers and make them available on the host machine.
The following ports are used (only Grafana is exposed on the host machine):

  • 3000: Grafana
  • 9090: Prometheus
  • 8080: cAdvisor
  • 9100: NodeExporter

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 ps

View the logs of a specific container by running the following command:

docker logs -f <container-name>

Add Data Sources and Dashboards

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.

Install Dashboard from Grafana.com (Optional)

If you would like to install this dashboard from Grafana.com, simply follow the steps below:

  • Navigate to the dashboard on Grafana.com Dashboard
  • Click on the Copy ID to Clipboard button
  • Navigate to the Import page in Grafana
  • Paste the ID into the Import via grafana.com field
  • Click on the Load button
  • Click on the Import button

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: Grafana Dashboard

License

This project is licensed under the MIT License - see the LICENSE file for details

Troubleshooting

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

About

A docker-compose stack solution for monitoring host and containers with Prometheus, Grafana, cAdvisor and NodeExporter.

Topics

Resources

Stars

577 stars

Watchers

10 watching

Forks

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

49 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Raspberry Pi & Docker Monitoring

Hit the Star! ⭐

If you find this repository useful, please consider giving it a star. Your support is greatly appreciated! 🙏

Introduction

Introducing the Raspberry Pi monitoring solution using Grafana, Prometheus, Cadvisor, and Node-Exporter Stack! This project aims to provide a comprehensive and user-friendly way to monitor the performance of your Raspberry Pi. With Grafana's intuitive dashboards, you can easily visualize system metrics collected by Prometheus and Cadvisor, while Node-Exporter provides valuable information about the Raspberry Pi's hardware and operating system. The combination of these tools results in a powerful and efficient monitoring solution that will give you complete visibility into your system's health. Check out the project and take your Raspberry Pi monitoring to the next level !

This repository contains a docker-compose file to run a Raspberry PI monitoring stack. It is based on the following projects:

Prerequisites

Before we get started installing the stack, we need to make sure that the following prerequisites are met:

  • Docker is installed on the host machine
  • Docker Compose is installed on the host machine
  • The host machine is running a Raspberry PI OS or any other compatible Linux distribution

Installation and Configuration

To install the stack, follow the steps below:

  • Clone this repository to your host machine.
git clone https://github.com/oijkn/Docker-Raspberry-PI-Monitoring.git
  • Enter to the cloned directory.
cd Docker-Raspberry-PI-Monitoring
  • Create data directory and change the ownership of the prometheus and grafana folders for a nice and clean installation.
mkdir -p prometheus/data grafana/data && \
sudo chown -R 472:472 grafana/ && \
sudo chown -R 65534:65534 prometheus/
  • Start the stack with docker-compose.
docker-compose up -d

This will start all the containers and make them available on the host machine.
The following ports are used (only Grafana is exposed on the host machine):

  • 3000: Grafana
  • 9090: Prometheus
  • 8080: cAdvisor
  • 9100: NodeExporter

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 ps

View the logs of a specific container by running the following command:

docker logs -f <container-name>

Add Data Sources and Dashboards

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.

Install Dashboard from Grafana.com (Optional)

If you would like to install this dashboard from Grafana.com, simply follow the steps below:

  • Navigate to the dashboard on Grafana.com Dashboard
  • Click on the Copy ID to Clipboard button
  • Navigate to the Import page in Grafana
  • Paste the ID into the Import via grafana.com field
  • Click on the Load button
  • Click on the Import button

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: Grafana Dashboard

License

This project is licensed under the MIT License - see the LICENSE file for details

Troubleshooting

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

About

A docker-compose stack solution for monitoring host and containers with Prometheus, Grafana, cAdvisor and NodeExporter.

Topics

Resources

Stars

577 stars

Watchers

10 watching

Forks

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

49 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Raspberry Pi & Docker Monitoring

Hit the Star! ⭐

If you find this repository useful, please consider giving it a star. Your support is greatly appreciated! 🙏

Introduction

Introducing the Raspberry Pi monitoring solution using Grafana, Prometheus, Cadvisor, and Node-Exporter Stack! This project aims to provide a comprehensive and user-friendly way to monitor the performance of your Raspberry Pi. With Grafana's intuitive dashboards, you can easily visualize system metrics collected by Prometheus and Cadvisor, while Node-Exporter provides valuable information about the Raspberry Pi's hardware and operating system. The combination of these tools results in a powerful and efficient monitoring solution that will give you complete visibility into your system's health. Check out the project and take your Raspberry Pi monitoring to the next level !

This repository contains a docker-compose file to run a Raspberry PI monitoring stack. It is based on the following projects:

Prerequisites

Before we get started installing the stack, we need to make sure that the following prerequisites are met:

  • Docker is installed on the host machine
  • Docker Compose is installed on the host machine
  • The host machine is running a Raspberry PI OS or any other compatible Linux distribution

Installation and Configuration

To install the stack, follow the steps below:

  • Clone this repository to your host machine.
git clone https://github.com/oijkn/Docker-Raspberry-PI-Monitoring.git
  • Enter to the cloned directory.
cd Docker-Raspberry-PI-Monitoring
  • Create data directory and change the ownership of the prometheus and grafana folders for a nice and clean installation.
mkdir -p prometheus/data grafana/data && \
sudo chown -R 472:472 grafana/ && \
sudo chown -R 65534:65534 prometheus/
  • Start the stack with docker-compose.
docker-compose up -d

This will start all the containers and make them available on the host machine.
The following ports are used (only Grafana is exposed on the host machine):

  • 3000: Grafana
  • 9090: Prometheus
  • 8080: cAdvisor
  • 9100: NodeExporter

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 ps

View the logs of a specific container by running the following command:

docker logs -f <container-name>

Add Data Sources and Dashboards

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.

Install Dashboard from Grafana.com (Optional)

If you would like to install this dashboard from Grafana.com, simply follow the steps below:

  • Navigate to the dashboard on Grafana.com Dashboard
  • Click on the Copy ID to Clipboard button
  • Navigate to the Import page in Grafana
  • Paste the ID into the Import via grafana.com field
  • Click on the Load button
  • Click on the Import button

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: Grafana Dashboard

License

This project is licensed under the MIT License - see the LICENSE file for details

Troubleshooting

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

About

A docker-compose stack solution for monitoring host and containers with Prometheus, Grafana, cAdvisor and NodeExporter.

Topics

Resources

Stars

577 stars

Watchers

10 watching

Forks

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

49 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Raspberry Pi & Docker Monitoring

Hit the Star! ⭐

If you find this repository useful, please consider giving it a star. Your support is greatly appreciated! 🙏

Introduction

Introducing the Raspberry Pi monitoring solution using Grafana, Prometheus, Cadvisor, and Node-Exporter Stack! This project aims to provide a comprehensive and user-friendly way to monitor the performance of your Raspberry Pi. With Grafana's intuitive dashboards, you can easily visualize system metrics collected by Prometheus and Cadvisor, while Node-Exporter provides valuable information about the Raspberry Pi's hardware and operating system. The combination of these tools results in a powerful and efficient monitoring solution that will give you complete visibility into your system's health. Check out the project and take your Raspberry Pi monitoring to the next level !

This repository contains a docker-compose file to run a Raspberry PI monitoring stack. It is based on the following projects:

Prerequisites

Before we get started installing the stack, we need to make sure that the following prerequisites are met:

  • Docker is installed on the host machine
  • Docker Compose is installed on the host machine
  • The host machine is running a Raspberry PI OS or any other compatible Linux distribution

Installation and Configuration

To install the stack, follow the steps below:

  • Clone this repository to your host machine.
git clone https://github.com/oijkn/Docker-Raspberry-PI-Monitoring.git
  • Enter to the cloned directory.
cd Docker-Raspberry-PI-Monitoring
  • Create data directory and change the ownership of the prometheus and grafana folders for a nice and clean installation.
mkdir -p prometheus/data grafana/data && \
sudo chown -R 472:472 grafana/ && \
sudo chown -R 65534:65534 prometheus/
  • Start the stack with docker-compose.
docker-compose up -d

This will start all the containers and make them available on the host machine.
The following ports are used (only Grafana is exposed on the host machine):

  • 3000: Grafana
  • 9090: Prometheus
  • 8080: cAdvisor
  • 9100: NodeExporter

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 ps

View the logs of a specific container by running the following command:

docker logs -f <container-name>

Add Data Sources and Dashboards

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.

Install Dashboard from Grafana.com (Optional)

If you would like to install this dashboard from Grafana.com, simply follow the steps below:

  • Navigate to the dashboard on Grafana.com Dashboard
  • Click on the Copy ID to Clipboard button
  • Navigate to the Import page in Grafana
  • Paste the ID into the Import via grafana.com field
  • Click on the Load button
  • Click on the Import button

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: Grafana Dashboard

License

This project is licensed under the MIT License - see the LICENSE file for details

Troubleshooting

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

About

A docker-compose stack solution for monitoring host and containers with Prometheus, Grafana, cAdvisor and NodeExporter.

Topics

Resources

Stars

577 stars

Watchers

10 watching

Forks

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

49 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Raspberry Pi & Docker Monitoring

Hit the Star! ⭐

If you find this repository useful, please consider giving it a star. Your support is greatly appreciated! 🙏

Introduction

Introducing the Raspberry Pi monitoring solution using Grafana, Prometheus, Cadvisor, and Node-Exporter Stack! This project aims to provide a comprehensive and user-friendly way to monitor the performance of your Raspberry Pi. With Grafana's intuitive dashboards, you can easily visualize system metrics collected by Prometheus and Cadvisor, while Node-Exporter provides valuable information about the Raspberry Pi's hardware and operating system. The combination of these tools results in a powerful and efficient monitoring solution that will give you complete visibility into your system's health. Check out the project and take your Raspberry Pi monitoring to the next level !

This repository contains a docker-compose file to run a Raspberry PI monitoring stack. It is based on the following projects:

Prerequisites

Before we get started installing the stack, we need to make sure that the following prerequisites are met:

  • Docker is installed on the host machine
  • Docker Compose is installed on the host machine
  • The host machine is running a Raspberry PI OS or any other compatible Linux distribution

Installation and Configuration

To install the stack, follow the steps below:

  • Clone this repository to your host machine.
git clone https://github.com/oijkn/Docker-Raspberry-PI-Monitoring.git
  • Enter to the cloned directory.
cd Docker-Raspberry-PI-Monitoring
  • Create data directory and change the ownership of the prometheus and grafana folders for a nice and clean installation.
mkdir -p prometheus/data grafana/data && \
sudo chown -R 472:472 grafana/ && \
sudo chown -R 65534:65534 prometheus/
  • Start the stack with docker-compose.
docker-compose up -d

This will start all the containers and make them available on the host machine.
The following ports are used (only Grafana is exposed on the host machine):

  • 3000: Grafana
  • 9090: Prometheus
  • 8080: cAdvisor
  • 9100: NodeExporter

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 ps

View the logs of a specific container by running the following command:

docker logs -f <container-name>

Add Data Sources and Dashboards

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.

Install Dashboard from Grafana.com (Optional)

If you would like to install this dashboard from Grafana.com, simply follow the steps below:

  • Navigate to the dashboard on Grafana.com Dashboard
  • Click on the Copy ID to Clipboard button
  • Navigate to the Import page in Grafana
  • Paste the ID into the Import via grafana.com field
  • Click on the Load button
  • Click on the Import button

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: Grafana Dashboard

License

This project is licensed under the MIT License - see the LICENSE file for details

Troubleshooting

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

About

A docker-compose stack solution for monitoring host and containers with Prometheus, Grafana, cAdvisor and NodeExporter.

Topics

Resources

Stars

577 stars

Watchers

10 watching

Forks

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

49 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Raspberry Pi & Docker Monitoring

Hit the Star! ⭐

If you find this repository useful, please consider giving it a star. Your support is greatly appreciated! 🙏

Introduction

Introducing the Raspberry Pi monitoring solution using Grafana, Prometheus, Cadvisor, and Node-Exporter Stack! This project aims to provide a comprehensive and user-friendly way to monitor the performance of your Raspberry Pi. With Grafana's intuitive dashboards, you can easily visualize system metrics collected by Prometheus and Cadvisor, while Node-Exporter provides valuable information about the Raspberry Pi's hardware and operating system. The combination of these tools results in a powerful and efficient monitoring solution that will give you complete visibility into your system's health. Check out the project and take your Raspberry Pi monitoring to the next level !

This repository contains a docker-compose file to run a Raspberry PI monitoring stack. It is based on the following projects:

Prerequisites

Before we get started installing the stack, we need to make sure that the following prerequisites are met:

  • Docker is installed on the host machine
  • Docker Compose is installed on the host machine
  • The host machine is running a Raspberry PI OS or any other compatible Linux distribution

Installation and Configuration

To install the stack, follow the steps below:

  • Clone this repository to your host machine.
git clone https://github.com/oijkn/Docker-Raspberry-PI-Monitoring.git
  • Enter to the cloned directory.
cd Docker-Raspberry-PI-Monitoring
  • Create data directory and change the ownership of the prometheus and grafana folders for a nice and clean installation.
mkdir -p prometheus/data grafana/data && \
sudo chown -R 472:472 grafana/ && \
sudo chown -R 65534:65534 prometheus/
  • Start the stack with docker-compose.
docker-compose up -d

This will start all the containers and make them available on the host machine.
The following ports are used (only Grafana is exposed on the host machine):

  • 3000: Grafana
  • 9090: Prometheus
  • 8080: cAdvisor
  • 9100: NodeExporter

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 ps

View the logs of a specific container by running the following command:

docker logs -f <container-name>

Add Data Sources and Dashboards

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.

Install Dashboard from Grafana.com (Optional)

If you would like to install this dashboard from Grafana.com, simply follow the steps below:

  • Navigate to the dashboard on Grafana.com Dashboard
  • Click on the Copy ID to Clipboard button
  • Navigate to the Import page in Grafana
  • Paste the ID into the Import via grafana.com field
  • Click on the Load button
  • Click on the Import button

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: Grafana Dashboard

License

This project is licensed under the MIT License - see the LICENSE file for details

Troubleshooting

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

About

A docker-compose stack solution for monitoring host and containers with Prometheus, Grafana, cAdvisor and NodeExporter.

Topics

Resources

Stars

577 stars

Watchers

10 watching

Forks

Contributors

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

49 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Raspberry Pi & Docker Monitoring

Hit the Star! ⭐

If you find this repository useful, please consider giving it a star. Your support is greatly appreciated! 🙏

Introduction

Introducing the Raspberry Pi monitoring solution using Grafana, Prometheus, Cadvisor, and Node-Exporter Stack! This project aims to provide a comprehensive and user-friendly way to monitor the performance of your Raspberry Pi. With Grafana's intuitive dashboards, you can easily visualize system metrics collected by Prometheus and Cadvisor, while Node-Exporter provides valuable information about the Raspberry Pi's hardware and operating system. The combination of these tools results in a powerful and efficient monitoring solution that will give you complete visibility into your system's health. Check out the project and take your Raspberry Pi monitoring to the next level !

This repository contains a docker-compose file to run a Raspberry PI monitoring stack. It is based on the following projects:

Prerequisites

Before we get started installing the stack, we need to make sure that the following prerequisites are met:

  • Docker is installed on the host machine
  • Docker Compose is installed on the host machine
  • The host machine is running a Raspberry PI OS or any other compatible Linux distribution

Installation and Configuration

To install the stack, follow the steps below:

  • Clone this repository to your host machine.
git clone https://github.com/oijkn/Docker-Raspberry-PI-Monitoring.git
  • Enter to the cloned directory.
cd Docker-Raspberry-PI-Monitoring
  • Create data directory and change the ownership of the prometheus and grafana folders for a nice and clean installation.
mkdir -p prometheus/data grafana/data && \
sudo chown -R 472:472 grafana/ && \
sudo chown -R 65534:65534 prometheus/
  • Start the stack with docker-compose.
docker-compose up -d

This will start all the containers and make them available on the host machine.
The following ports are used (only Grafana is exposed on the host machine):

  • 3000: Grafana
  • 9090: Prometheus
  • 8080: cAdvisor
  • 9100: NodeExporter

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 ps

View the logs of a specific container by running the following command:

docker logs -f <container-name>

Add Data Sources and Dashboards

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.

Install Dashboard from Grafana.com (Optional)

If you would like to install this dashboard from Grafana.com, simply follow the steps below:

  • Navigate to the dashboard on Grafana.com Dashboard
  • Click on the Copy ID to Clipboard button
  • Navigate to the Import page in Grafana
  • Paste the ID into the Import via grafana.com field
  • Click on the Load button
  • Click on the Import button

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: Grafana Dashboard

License

This project is licensed under the MIT License - see the LICENSE file for details

Troubleshooting

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

About

A docker-compose stack solution for monitoring host and containers with Prometheus, Grafana, cAdvisor and NodeExporter.

Topics

Resources

Stars

577 stars

Watchers

10 watching

Forks

Contributors