• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

How to Set Up a Monitoring Stack with Prometheus, Grafana, and Node Exporter Using Docker Compose

Lomanu4 Оффлайн

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,481
Баллы
155
Monitoring your infrastructure is crucial for reliability and performance. In this article, we'll walk through a simple and effective monitoring stack using Docker Compose, featuring Prometheus for metrics collection, Grafana for visualization, and Node Exporter for exposing host metrics.

Project Structure


.
├── docker-compose.yml
├── prometheus.yml
└── provisioning/
└── datasources/
└── prometheus.yml
Understanding the docker-compose.yml File


Let's break down the main components of the docker-compose.yml file:


services:
prometheus:
image: prom/prometheus:v3.3.1
container_name: prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
networks:
- monitoring

grafana:
image: grafana/grafana:12.0.0
container_name: grafana
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_PASSWORD=admin
depends_on:
- prometheus
networks:
- monitoring
volumes:
- ./provisioning/datasources:/etc/grafana/provisioning/datasources
- grafana_data:/var/lib/grafana

node_exporter:
image: prom/node-exporter:v1.9.1
container_name: node_exporter
ports:
- "9100:9100"
networks:
- monitoring

networks:
monitoring:
driver: bridge

volumes:
prometheus_data:
driver: local
grafana_data:
driver: local
Service Breakdown


  • Prometheus
    • Uses the official Prometheus image.
    • Exposes port 9090.
    • Mounts a local prometheus.yml config and a Docker volume for persistent data.
    • Connected to a custom monitoring network.

  • Grafana
    • Uses the official Grafana image.
    • Exposes port 3000.
    • Sets the admin password via environment variable.
    • Depends on Prometheus (starts after Prometheus is up).
    • Mounts provisioning files and a persistent data volume.
    • Connected to the monitoring network.

  • Node Exporter
    • Uses the official Node Exporter image.
    • Exposes port 9100.
    • Connected to the monitoring network.

  • Networks and Volumes
    • All services share the monitoring bridge network.
    • Prometheus and Grafana use named volumes for data persistence.
Step-by-Step Guide

1. Clone the Repository


Github Link:

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.




git clone <your-repo-url>
cd <your-repo-directory>
2. Review and Edit Configuration

  • prometheus.yml: Make sure Prometheus is configured to scrape Node Exporter.
  • provisioning/datasources/prometheus.yml: Ensures Grafana automatically adds Prometheus as a data source.

The prometheus.yml file is the main configuration file for Prometheus. Here’s what each section does:


global:
scrape_interval: 5s
  • global: Sets global configuration options.
  • scrape_interval: 5s: Prometheus will scrape (collect) metrics from all configured targets every 5 seconds.

scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['node_exporter:9100'] # This points to the Node Exporter container
  • scrape_configs: Defines the list of jobs (sets of targets) Prometheus should scrape.
  • job_name: 'node': Names this scrape job "node" (for Node Exporter).
  • static_configs: Specifies static targets for this job.
  • targets: ['node_exporter:9100']: Prometheus will scrape metrics from the Node Exporter container at port 9100.

Summary:

This config tells Prometheus to collect metrics from the Node Exporter container every 5 seconds.

This file provisioning/datasources/prometheus.yml is a Grafana data source provisioning configuration. It tells Grafana to automatically add Prometheus as a data source when Grafana starts.


  • apiVersion: 1

    Specifies the version of the provisioning config format.


  • datasources:

    A list of data sources to add.
    • name: Prometheus The name that will appear in Grafana.
    • type: prometheus Specifies the data source type (Prometheus).
    • access: proxy Grafana will proxy requests to Prometheus (recommended for most setups).
    • url:

      Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

      The URL where Prometheus is accessible from within the Docker network (using the service name).
    • isDefault: true Sets this data source as the default in Grafana.

Summary:

This file ensures that Prometheus is pre-configured as the default data source in Grafana, so you don’t have to add it manually.

3. Start the Stack


docker-compose up -d

This command will pull the required images and start all services in the background.

4. Access the Services



Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.


Prometheus UI showing that the, node exporter endpoint is connected successfully.

5. Add Dashboards in Grafana

  • Prometheus is already set as a data source.
  • Import community dashboards or create your own to visualize Node Exporter metrics.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



  • Click + Create Dashboard


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



  • Import Node Exporter Dashboards: There are pre-configured dashboards available for Node Exporter. You can go to Grafana Dashboards and search for Node Exporter Full Dashboard (ID: 1860), which will give you a comprehensive view of your system metrics.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



  • In the Grafana Dashboards section, search for Node Exporter Full dashboard. The Dashboard ID for Node Exporter Full is 1860.
  • Enter 1860 in the Import via ID field and click Load.
  • In the Prometheus drop-down, choose the Prometheus data source you just configured.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



  • Click Import.
  • Verify the Dashboard:
  • Once the dashboard is imported, you should see a comprehensive view of your Ubuntu server’s metrics, including CPU usage, memory usage, disk I/O, network statistics, etc.


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



6. Stopping the Stack


docker-compose down

This will stop and remove all containers, but your data will persist in the named volumes.

Tips & Troubleshooting

  • Customizing Prometheus Targets: Edit prometheus.yml to add more scrape targets.
  • Persisting Data: Data is stored in Docker volumes (prometheus_data, grafana_data).
  • Logs: Check logs with:

docker-compose logs prometheus
docker-compose logs grafana
docker-compose logs node_exporter
  • Change Default Password: For security, change the Grafana admin password in production.
Conclusion


With just a few files and Docker Compose, you can have a powerful monitoring stack up and running in minutes. This setup is perfect for local development, testing, or even small production environments.

Happy Monitoring!

References:




Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

 
Вверх Снизу