zoukankan      html  css  js  c++  java
  • 使用 Docker 部署 Grafana + Prometheus 监控 MySQL 数据库

    一、背景

    在平时开发过程当中需要针对 MySQL 数据库进行监控,这里我们可以使用 Grafana 和 Prometheus 来实现监控功能。Grafana 是一款功能强大的仪表盘面板,支持多种数据源,可以自定义图表进行监控。而 Prometheus 就是 Grafana 支持的数据源之一,Prometheus 负责采集需要监控的数据,然后通过 Grafana 展示出来。

    Prometheus 拥有多种 Exporter 进行监控数据的导出,这里我们使用的是 Mysql Exporter 来进行数据库状态的监控。

    很久没写博客了,最近实在太忙,工作之余在研究 Abp vNext。

    二、动手实践

    首先参考博文《Linux 下的 Docker 安装与使用》安装好 Docker,之后再参考博文 《CentOS 7.x 安装 Docker-Compose》安装好 Docker-Compose 之后,就可以开始我们的工作了。

    2.1 编写 Docker-Compose.Yaml 文件

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

    所以 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
    

    2.2 配置 prometheus.yml 文件

    在 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']
    

    2.3 启动

    首先我们要建立一个监控用的 Docker 网络,与 Docker Compose 文件对应:

    docker network create mysql-monitor
    

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

    docker-compose -f ./docker-compose.yaml -p MySQL-Monitor up -d
    

    但是呢,有时候可能会提示以下信息,说没有对应的权限,这个时候你使用 chmod 命令改变以下 Grafana 文件夹的权限即可。

    chmod -R 777 /root/Docker/Volumes/Grafana
    

    之后,再次运行 docker-compose -f ./docker-compose.yaml -p MySQL-Monitor up -d 命令,启动服务。第一次启动可能会有点慢,Grafana 需要迁移相关的数据,等待一会儿之后访问 机器IP:20002 就可以看到 Grafana 了。

    2.4 配置

    首先我们需要在 Grafana 配置 Prometheus 数据源,登录 Grafana 之后,选择数据源。

    选择 Prometheus。

    之后在 URL 填入 Prometheus 的容器名字 + 端口,点击 Save & Test,这里一定要注意数据源的名字叫做 Prometheus,不然等会儿导入我的面板是无法使用的。

    导入我们的 Dashboard 文件。

    2.5 文件下载地址

    DashBoard 文件点击我下载

    三、效果图

  • 相关阅读:
    阿里云 NAS OSS 云盘价格对比 GB/小时
    kubernetes/k8s pod下多容器的设计模式(ambassador 大使代理模式,adapter 适配模式,sidecar 边车模式, init containers初始化容器)
    ❤️ 从125ms到11ms,记一次关键字检测过滤服务的优化 -python and Pythonnet
    高效的的关键字查找和检测(哈希表和Trie前缀树和FastCheck)在实际使用中的性能
    FastAPI 中的Async (并发和async/await)
    阿里云vs华为云 的容器镜像服务swr使用体验
    Supermap IClient3D 加载3DTiles倾斜摄影数据
    C#根据数据生成力引导图
    Android WebView
    Nginx 反向代理地址后,session丢失,不能登录的问题
  • 原文地址:https://www.cnblogs.com/myzony/p/10253986.html
Copyright © 2011-2022 走看看