1、使用docker-compose搭建

编写Docker-Compose.Yaml文件

首先我们确定会启动起来三个服务,分别是MySQL-Exporter(监控MySQL指标)、Prometheus(手机Exporter的数据)、Grafana(从Prometheus读取指标数据,并展示出来)。

所以yaml文件的内容大体如下,这里也增加了相应的注释方便大家学习。

  1. version: '2'
  2. services:
  3. exporter:
  4. container_name: mysql-exporter-dev
  5. image: prom/mysqld-exporter
  6. environment:
  7. # 这里指定的是要监控的 MySQL 数据库,这里我们以启动的 test-mysql 容器为示范。
  8. # 实际应用当中,应该配置为具体的数据库实例。
  9. - DATA_SOURCE_NAME=root:root@(test-mysql:3306)/
  10. prometheus:
  11. container_name: prometheus
  12. image: prom/prometheus
  13. ports:
  14. - "20001:9090"
  15. # 映射普罗米修斯的配置文件,用于配置 Exporter,这里的文件应该在后面创建好,具体
  16. # 路径以实际为准。
  17. volumes:
  18. - /Users/lu/Documents/life/docker/prometheus/prometheus.yaml:/etc/prometheus/prometheus.yml
  19. grafana:
  20. container_name: grafana
  21. image: grafana/grafana
  22. environment:
  23. # 配置 Grafana 的默认根 URL。
  24. - GF_SERVER_ROOT_URL=http://192.168.111.107:20002
  25. # 配置 Grafana 的默认 admin 密码。
  26. - GF_SECURITY_ADMIN_PASSWORD=admin
  27. ports:
  28. - "20002:3000"
  29. # 映射 Grafana 的数据文件,方便后面进行更改。
  30. volumes:
  31. - /Users/lu/Documents/life/docker/prometheus/Grafana:/var/lib/grafana
  32. # 本服务只是用于演示,实际使用请注释掉本服务。
  33. mysql:
  34. container_name: test-mysql
  35. image: mysql:5.7
  36. environment:
  37. - MYSQL_ROOT_PASSWORD=root
  38. ports:
  39. - "3309:3306"
  40. # 这里如果需要连接外部 MySQL 就需要处在同一个网络。
  41. networks:
  42. default:
  43. external:
  44. name: mysql-monitor

2、配置prometheus.yml文件

在prometheus.yaml文件当中存储了所有Exporter的信息,所以我们需要创建一个自己的prometheus.yml文件,映射到容器当中。

  1. global:
  2. scrape_interval: 15s
  3. evaluation_interval: 15s
  4. alerting:
  5. alertmanagers:
  6. - static_configs:
  7. - targets:
  8. # - alertmanager:9093
  9. scrape_configs:
  10. # Prometheus 监控配置
  11. - job_name: 'prometheus'
  12. static_configs:
  13. - targets: ['prometheus:9090']
  14. # MySQL 监控配置
  15. - job_name: 'mysql'
  16. # 抓取间隔
  17. scrape_interval: 5s
  18. static_configs:
  19. # 这里配置的是具体的 MySQL Exporter 的地址,在之前的 docker compose 文件
  20. # 定义当中,mysql exporter 的容器名为 mysql-exporter-dev。
  21. - targets: ['mysql-exporter-dev:9104']

3、启动

首先我们要建立一个监控用的docker网络,用DockerCompose文件对应:
docker network create mysql-monitor

假设 yaml 文件名称为 docker-compose.yaml ,执行以下命令来创建我们的容器。

docker-compose -f ./docker-compose.yaml -p MySQL-Monitor up -d
10.1、 使用docker快速构建Prometheus Grafana平台 - 图1

4、配置

首先我们需要在Grafana配置Prometheus数据源,登录Grafana之后,选择数据源。
10.1、 使用docker快速构建Prometheus Grafana平台 - 图2

选择Prometheus

10.1、 使用docker快速构建Prometheus Grafana平台 - 图3

之后在URL填入Prometheus的ip+端口号,点击save & test,这里一定要注意数据源的名字叫做Prometheus,不然等会导入面板是无法使用的

查看所有容器的IP地址:
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
10.1、 使用docker快速构建Prometheus Grafana平台 - 图4

10.1、 使用docker快速构建Prometheus Grafana平台 - 图5

导入我们的Dashboard文件。
10.1、 使用docker快速构建Prometheus Grafana平台 - 图6
10.1、 使用docker快速构建Prometheus Grafana平台 - 图7

5、下载配置文件

MySQL详细统计

6、最终效果图

10.1、 使用docker快速构建Prometheus Grafana平台 - 图8