Prometheus is an open-source monitoring system that collects metrics from different sources, stores them, and provides a query language and visualization capabilities to analyze and alert on them. It is designed for monitoring distributed systems and microservices architectures, and provides a time-series database to store the collected data.
Grafana is also an open-source data visualization and analytics platform. It allows users to create customizable and interactive dashboards, reports, and alerts for a wide variety of data sources, including Prometheus. Grafana provides a user-friendly interface to explore and analyze the data, and supports various visualization types, such as graphs, tables, and heatmaps. It is often used as a complement to Prometheus, as it enables users to create custom dashboards and alerts based on the collected metrics.
root@ip-172-31-22-198:~/monitroing# cat docker-compose.yml
version: '3.7'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
command:
- '--config.file=/etc/prometheus/prometheus.yml'
ports:
- '9090:9090'
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- '3000:3000'
node_exporter:
image: prom/node-exporter:latest
container_name: node_exporter
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
ports:
- '9100:9100'
root@ip-172-31-22-198:~/monitroing# cat prometheus.yml
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['node_exporter:9100']
The Docker Compose file defines three containers: prometheus
, grafana
, and node_exporter
. The Prometheus configuration file specifies the global scrape interval and the targets for two jobs: prometheus
and node_exporter
.
The prometheus
container runs the Prometheus server, and mounts the prometheus.yml
file into the container as its configuration file. The container is exposed on port 9090
and mapped to the same port on the host machine (localhost:9090
).
The grafana
container runs the Grafana server, and is exposed on port 3000
. Grafana is a popular open-source visualization platform that is often used with Prometheus to create custom dashboards and visualizations.
The node_exporter
container runs the Prometheus node_exporter
service, which collects system metrics from the host machine and makes them available to Prometheus. The container is exposed on port 9100
and mapped to the same port on the host machine (node_exporter:9100
).
Overall, this Docker Compose file and Prometheus configuration should set up a basic monitoring stack that collects system metrics from the host machine using node_exporter
, stores them in Prometheus, and allows you to visualize them using Grafana.
To start the Docker Compose stack defined in your docker-compose.yml
file, you can use the docker-compose up
command in the directory where the file is located.
Here are the steps to do this:
-
Open a terminal window and navigate to the directory where your
docker-compose.yml
file is located (~/monitroing
in your case). -
Run the following command:
docker-compose up
-
This will start all the containers defined in the
docker-compose.yml
file and output their logs to the terminal window. -
Once the containers are running, you should be able to access the Prometheus server at
http://localhost:9090
and the Grafana server athttp://localhost:3000
.Note that the
node_exporter
container is not directly accessible from the host machine, but its metrics should be available to Prometheus via its internal network. -
To stop the containers, press
Ctrl+C
in the terminal window where you ran thedocker-compose up
command. This will stop and remove all the containers.If you want to stop the containers without removing them, you can use the
docker-compose stop
command. To start the containers again after stopping them, you can use thedocker-compose start
command.