diff --git a/prometheus-grafana/README.md b/prometheus-grafana/README.md new file mode 100644 index 0000000..cdd7bfb --- /dev/null +++ b/prometheus-grafana/README.md @@ -0,0 +1,66 @@ +## Compose sample +### Prometheus & Grafana + +Project structure: +``` +. +├── docker-compose.yml +├── grafana +│   └── datasource.yml +├── prometheus +│   └── prometheus.yml +└── README.md +``` + +[_docker-compose.yaml_](docker-compose.yaml) +``` +version: "3.7" +services: + prometheus: + image: prom/prometheus + ... + ports: + - 9090:9090 + grafana: + image: grafana/grafana + ... + ports: + - 3000:3000 +``` +The compose file defines a stack with two services `prometheus` and `grafana`. +When deploying the stack, docker-compose maps port the default ports for each service to the equivalent ports on the host in order to inspect easier the web interface of each service. +Make sure the ports 9090 and 3000 on the host are not already in use. + +## Deploy with docker-compose + +``` +$ docker-compose up -d +Creating network "prometheus-grafana_default" with the default driver +Creating volume "prometheus-grafana_prom_data" with default driver +... +Creating grafana ... done +Creating prometheus ... done +Attaching to prometheus, grafana + +``` + +## Expected result + +Listing containers must show two containers running and the port mapping as below: +``` +$ docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +dbdec637814f prom/prometheus "/bin/prometheus --c…" 8 minutes ago Up 8 minutes 0.0.0.0:9090->9090/tcp prometheus +79f667cb7dc2 grafana/grafana "/run.sh" 8 minutes ago Up 8 minutes 0.0.0.0:3000->3000/tcp grafana +``` + +Navigate to `http://localhost:3000` in your web browser and use the login credentials specified in the compose file to access Grafana. It is already configured with prometheus as the default datasource. + +![page](output.jpg) + +Navigate to `http://localhost:9090` in your web browser to access directly the web interface of prometheus. + +Stop and remove the containers. Use `-v` to remove the volumes if looking to erase all data. +``` +$ docker-compose down -v +``` diff --git a/prometheus-grafana/docker-compose.yml b/prometheus-grafana/docker-compose.yml new file mode 100644 index 0000000..b7881e8 --- /dev/null +++ b/prometheus-grafana/docker-compose.yml @@ -0,0 +1,25 @@ + +version: "3.7" +services: + prometheus: + image: prom/prometheus + container_name: prometheus + command: + - '--config.file=/etc/prometheus/prometheus.yml' + ports: + - 9090:9090 + volumes: + - ./prometheus:/etc/prometheus + - prom_data:/prometheus + grafana: + image: grafana/grafana + container_name: grafana + ports: + - 3000:3000 + environment: + - GF_SECURITY_ADMIN_USER=admin + - GF_SECURITY_ADMIN_PASSWORD=grafana + volumes: + - ./grafana:/etc/grafana/provisioning/datasources +volumes: + prom_data: \ No newline at end of file diff --git a/prometheus-grafana/grafana/datasource.yml b/prometheus-grafana/grafana/datasource.yml new file mode 100644 index 0000000..d7b8286 --- /dev/null +++ b/prometheus-grafana/grafana/datasource.yml @@ -0,0 +1,9 @@ +apiVersion: 1 + +datasources: +- name: Prometheus + type: prometheus + url: http://prometheus:9090 + isDefault: true + access: proxy + editable: true diff --git a/prometheus-grafana/output.jpg b/prometheus-grafana/output.jpg new file mode 100644 index 0000000..083a852 Binary files /dev/null and b/prometheus-grafana/output.jpg differ diff --git a/prometheus-grafana/prometheus/prometheus.yml b/prometheus-grafana/prometheus/prometheus.yml new file mode 100644 index 0000000..18c44da --- /dev/null +++ b/prometheus-grafana/prometheus/prometheus.yml @@ -0,0 +1,21 @@ +global: + scrape_interval: 15s + scrape_timeout: 10s + evaluation_interval: 15s +alerting: + alertmanagers: + - static_configs: + - targets: [] + scheme: http + timeout: 10s + api_version: v1 +scrape_configs: +- job_name: prometheus + honor_timestamps: true + scrape_interval: 15s + scrape_timeout: 10s + metrics_path: /metrics + scheme: http + static_configs: + - targets: + - localhost:9090 \ No newline at end of file