在平时开发过程中须要针对 MySQL 数据库进行监控,这里咱们可使用 Grafana 和 Prometheus 来实现监控功能。Grafana 是一款功能强大的仪表盘面板,支持多种数据源,能够自定义图表进行监控。而 Prometheus 就是 Grafana 支持的数据源之一,Prometheus 负责采集须要监控的数据,而后经过 Grafana 展现出来。html
Prometheus 拥有多种 Exporter 进行监控数据的导出,这里咱们使用的是 Mysql Exporter 来进行数据库状态的监控。mysql
好久没写博客了,最近实在太忙,工做之余在研究 Abp vNext。sql
首先参考博文《Linux 下的 Docker 安装与使用》安装好 Docker,以后再参考博文 《CentOS 7.x 安装 Docker-Compose》安装好 Docker-Compose 以后,就能够开始咱们的工做了。docker
首先咱们肯定会启动起来三个服务,分别是 MySQL-Exporter (监控 MySQL 指标)、Prometheus (收集 Exporter 的数据)、Grafana (从 Prometheus 读取指标数据,并展现出来)。shell
因此 yaml 文件的内容大致以下,这里也增长了响应的注释方便你们学习。数据库
version: '2' services: exporter: container_name: mysql-exporter-dev image: prom/mysqld-exporter environment: # 这里指定的是要监控的 MySQL 数据库,这里咱们以启动的 test-mysql 容器为示范。 # 实际应用当中,应该配置为具体的数据库实例。 - DATA_SOURCE_NAME=root:root@(test-mysql:3306)/ prometheus: container_name: prometheus image: prom/prometheus ports: - "20001:9090" # 映射普罗米修斯的配置文件,用于配置 Exporter,这里的文件应该在后面建立好,具体 # 路径以实际为准。 volumes: - /root/Docker/Volumes/Prometheus/prometheus.yml:/etc/prometheus/prometheus.yml grafana: container_name: grafana image: grafana/grafana environment: # 配置 Grafana 的默认根 URL。 - GF_SERVER_ROOT_URL=http://192.168.100.107:20002 # 配置 Grafana 的默认 admin 密码。 - GF_SECURITY_ADMIN_PASSWORD=admin ports: - "20002:3000" # 映射 Grafana 的数据文件,方便后面进行更改。 volumes: - /root/Docker/Volumes/Grafana:/var/lib/grafana # 本服务只是用于演示,实际使用请注释掉本服务。 mysql: container_name: test-mysql image: mysql environment: - MYSQL_ROOT_PASSWORD=root # 这里若是须要链接外部 MySQL 就须要处在同一个网络。 networks: default: external: name: mysql-monitor
在 prometheus.yaml 文件当中存储了全部 Exporter 的信息,因此咱们须要建立一个本身的 prometheus.yml 文件,映射到容器当中。网络
global: scrape_interval: 15s evaluation_interval: 15s alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 scrape_configs: # Prometheus 监控配置 - job_name: 'prometheus' static_configs: - targets: ['prometheus:9090'] # MySQL 监控配置 - job_name: 'mysql' # 抓取间隔 scrape_interval: 5s static_configs: # 这里配置的是具体的 MySQL Exporter 的地址,在以前的 docker compose 文件 # 定义当中,mysql exporter 的容器名为 mysql-exporter-dev。 - targets: ['mysql-exporter-dev:9104']
首先咱们要创建一个监控用的 Docker 网络,与 Docker Compose 文件对应:学习
docker network create mysql-monitor
假设 yaml 文件名称为 docker-compose.yaml ,执行如下命令来建立咱们的容器。lua
docker-compose -f ./docker-compose.yaml -p MySQL-Monitor up -d
可是呢,有时候可能会提示如下信息,说没有对应的权限,这个时候你使用 chmod 命令改变如下 Grafana 文件夹的权限便可。3d
chmod -R 777 /root/Docker/Volumes/Grafana
以后,再次运行 docker-compose -f ./docker-compose.yaml -p MySQL-Monitor up -d
命令,启动服务。第一次启动可能会有点慢,Grafana 须要迁移相关的数据,等待一下子以后访问 机器IP:20002 就能够看到 Grafana 了。
首先咱们须要在 Grafana 配置 Prometheus 数据源,登陆 Grafana 以后,选择数据源。
选择 Prometheus。
以后在 URL 填入 Prometheus 的容器名字 + 端口,点击 Save & Test,这里必定要注意数据源的名字叫作 Prometheus,否则等会儿导入个人面板是没法使用的。
导入咱们的 Dashboard 文件。