1、使用docker-compose搭建
编写Docker-Compose.Yaml文件
首先我们确定会启动起来三个服务,分别是MySQL-Exporter(监控MySQL指标)、Prometheus(手机Exporter的数据)、Grafana(从Prometheus读取指标数据,并展示出来)。
所以yaml文件的内容大体如下,这里也增加了相应的注释方便大家学习。
version: '2'services:exporter:container_name: mysql-exporter-devimage: prom/mysqld-exporterenvironment:# 这里指定的是要监控的 MySQL 数据库,这里我们以启动的 test-mysql 容器为示范。# 实际应用当中,应该配置为具体的数据库实例。- DATA_SOURCE_NAME=root:root@(test-mysql:3306)/prometheus:container_name: prometheusimage: prom/prometheusports:- "20001:9090"# 映射普罗米修斯的配置文件,用于配置 Exporter,这里的文件应该在后面创建好,具体# 路径以实际为准。volumes:- /Users/lu/Documents/life/docker/prometheus/prometheus.yaml:/etc/prometheus/prometheus.ymlgrafana:container_name: grafanaimage: grafana/grafanaenvironment:# 配置 Grafana 的默认根 URL。- GF_SERVER_ROOT_URL=http://192.168.111.107:20002# 配置 Grafana 的默认 admin 密码。- GF_SECURITY_ADMIN_PASSWORD=adminports:- "20002:3000"# 映射 Grafana 的数据文件,方便后面进行更改。volumes:- /Users/lu/Documents/life/docker/prometheus/Grafana:/var/lib/grafana# 本服务只是用于演示,实际使用请注释掉本服务。mysql:container_name: test-mysqlimage: mysql:5.7environment:- MYSQL_ROOT_PASSWORD=rootports:- "3309:3306"# 这里如果需要连接外部 MySQL 就需要处在同一个网络。networks:default:external:name: mysql-monitor
2、配置prometheus.yml文件
在prometheus.yaml文件当中存储了所有Exporter的信息,所以我们需要创建一个自己的prometheus.yml文件,映射到容器当中。
global:scrape_interval: 15sevaluation_interval: 15salerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093scrape_configs:# Prometheus 监控配置- job_name: 'prometheus'static_configs:- targets: ['prometheus:9090']# MySQL 监控配置- job_name: 'mysql'# 抓取间隔scrape_interval: 5sstatic_configs:# 这里配置的是具体的 MySQL Exporter 的地址,在之前的 docker compose 文件# 定义当中,mysql exporter 的容器名为 mysql-exporter-dev。- 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
4、配置
首先我们需要在Grafana配置Prometheus数据源,登录Grafana之后,选择数据源。
选择Prometheus

之后在URL填入Prometheus的ip+端口号,点击save & test,这里一定要注意数据源的名字叫做Prometheus,不然等会导入面板是无法使用的
查看所有容器的IP地址:docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

导入我们的Dashboard文件。

5、下载配置文件
6、最终效果图

