首页 > 数据库 >Prometheus + Grafana 监控 MySQL 数据库

Prometheus + Grafana 监控 MySQL 数据库

时间:2024-10-08 17:21:31浏览次数:8  
标签:name MySQL prometheus Grafana etc Prometheus mysql 安装

文章目录

1、前置介绍

本次监控平台搭建,我使用2台阿里云服务器来完成本次的搭建部署操作,配置如下:

  • 阿里云ECS1:2核2G,Ubuntu 22.02,内网ip:172.16.0.178,开放端口:3306,9104
  • 阿里云ECS2:2核2G,Ubuntu 22.02,内网ip:172.16.0.179,开放端口:9090,3000

整体部署架构图如下:
在这里插入图片描述

2、搭建流程

2.1、安装 Docker

由于本次我使用的是阿里云ECS Ubuntu 22.04,所以安装流程请参考这篇文章:
https://xuzhibin.blog.csdn.net/article/details/142757626

2.2、安装 MySQL

在服务器1上,执行下述命令,创建 schema.sql 环境初始化脚本,容器启动时候该脚本自动执行:

# 初始化 MySQL 配置,随着容器启动自动执行
mkdir -p /etc/mysql/init.d
cat > /etc/mysql/init.d/schema.sql <<-'EOF'
SET NAMES utf8mb4;
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

# 初始化数据库 + 表
DROP DATABASE IF EXISTS sakila;
CREATE DATABASE sakila;
USE sakila;
CREATE TABLE actor (
  actor_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
  first_name VARCHAR(45) NOT NULL,
  last_name VARCHAR(45) NOT NULL,
  last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY  (actor_id),
  KEY idx_actor_last_name (last_name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

# 创建 remote 用户,允许任何主机连接
CREATE USER remote@'%' IDENTIFIED with mysql_native_password BY 'remote';
grant all privileges on *.* to remote@'%';

# 创建 exporter 用户,进行访问授权
CREATE USER 'exporter'@'%' IDENTIFIED BY 'exporter';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%';
GRANT SELECT ON performance_schema.* TO 'exporter'@'%';
flush privileges;
EOF

在服务器1上,通过 Docker 创建 MySQL 容器:

docker run \
    -p 3306:3306  \
    --name db \
    -v /etc/mysql/init.d:/docker-entrypoint-initdb.d \
    -e MYSQL_ROOT_PASSWORD=root  \
    -d  mysql:8

2.3、安装 MySQL Exporter

在服务器1上,安装 MySQL Exporter,用于Prometheus进行数据采集,命令如下:

docker run -d -p 9104:9104 --name mysql_exporter -e DATA_SOURCE_NAME="exporter:exporter@(172.16.0.178:3306)/sakila" prom/mysqld-exporter

通过docker ps命令可以查看:
在这里插入图片描述
此时通过公网IP + 端口号方式,可以访问数据指标页面:
在这里插入图片描述

2.4、安装 Prometheus

在服务器2上,初始化配置文件,命令如下:

mkdir /etc/prometheus
cat > /etc/prometheus/prometheus.yml <<-'EOF'
# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]

### 以下内容为 MySQL 配置
  - job_name: 'mysql_metrics'
    scrape_interval: 5s
    metrics_path: '/metrics'
    static_configs:
      # mysql-exporter 容器内网IP:端口号
      - targets: ['172.16.0.178:9104'] 
EOF

在服务器2上,启动 Prometheus 容器,命令如下:

docker run -d -p 9090:9090 --name=prometheus -v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml bitnami/prometheus:latest

此时,通过公网IP + 端口号方式访问,可以看到Prometheus页面:
在这里插入图片描述

2.5、安装 Grafana

在服务器2上,构建Grafana可视化仪表盘,命令如下:

docker run -d -p 3000:3000 --name=grafana grafana/grafana

创建完毕后,可以直接通过公网IP地址 + 端口号访问,初始登录账号密码都是admin
在这里插入图片描述
登录完毕后,第一步,配置好MySQL数据源,如下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第二步,配置仪表盘:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后,看到下面这张图,就说明MySQL监控平台搭建完毕!
在这里插入图片描述

标签:name,MySQL,prometheus,Grafana,etc,Prometheus,mysql,安装
From: https://blog.csdn.net/weixin_46594796/article/details/142752865

相关文章

  • MySQL数据库备份与恢复
    MySQL数据库的备份与恢复是数据库管理中至关重要的一部分。无论是在Windows还是Linux系统上,掌握这些技能都能有效保护数据,防止数据丢失。本文将详细介绍MySQL数据库的备份与恢复方法,包括常用工具和步骤。一、备份MySQL数据库1.使用 mysqldump 工具mysqldump是......
  • linux中mysql5.7安装
    系统要求:CentOS7.664位卸载系统自带mariadb-lib1、rpm-qa|grepmariadb2、rpm-emariadb-libs-5.5.68-1.el7.x86_64 --nodeps 解压tar包:tar-xvfmysql*.tar以下加粗rpm包需要安装:mysql-community-common-5.7.23-1.el7.x86_64.rpmmysql-community-libs-co......
  • MySQL与RESTfulAPI
    MySQL与RESTfulAPI 2024-01-2566阅读7分钟 1.背景介绍MySQL与RESTfulAPI是一个非常重要的技术主题,它们在现代互联网应用中扮演着关键角色。在这篇文章中,我们将深入探讨这两个技术的核心概念、算法原理、最佳实践以及实际应用场景。1.背景介绍MySQL是一种流行的关......
  • Mysql高级篇(下)——主从复制
    主从复制一、概述二、作用......
  • Centos7安装部署prometheus
    普罗米修斯的主要特点是:具有由度量名称和键/值对标识的时间序列数据的多维数据模型PromQL,一种灵活的查询语言, 可以利用这一维度不依赖分布式存储;单个服务器节点是自治的时间序列集合通过HTTP上的拉模型发生推送时间序列通过中间网关支持通过服务发现或静态配置发现目标......
  • MySQL9的3个新特性
    本文讲解MySQL9的3个新特性:支持将JSON输出保存到用户变量、支持准备语句以及支持面向AI的向量存储。17.12 MySQL9新特性1——支持将JSON输出保存到用户变量从MySQL9版本开始支持将EXPLAINFORMAT的JSON输出保存到用户变量,下面通过一个案例来理解该新特性。      创建......
  • 技术解读GaussDB (for MySQL)流控机制
    本文分享自华为云社区《【华为云MySQL技术专栏】GaussDB(forMySQL)流控技术解读》,作者:GaussDB数据库。本文主要介绍GaussDB(forMySQL)在不同服务层次上是如何实现过载保护的,具体包括反馈式和主动平滑流控两种机制。1.背景介绍GaussDB(forMySQL)是存储计算分离架构的云......
  • mysql数据库1045报错怎么解决
    遇到MySQL数据库 1045 报错(访问被拒绝,用户名或密码错误),可以通过以下步骤解决:1.确认用户名和密码检查用户名和密码:确认在连接数据库时输入的用户名和密码是否正确。尝试在命令行中连接数据库,确认是否能成功登录:bash mysql-uyour_username-p2.重置密码......
  • 错误消息:#1064 - You have an error in your SQL syntax; check the manual that corr
    错误消息:#1064-YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'...'atline1原因:SQL语句中有语法错误。括号不匹配。关键字拼写错误。解决方法:检查SQL语句:确认SQ......
  • 错误消息:#2002 - Can't connect to local MySQL server through socket '/tmp/mysql.s
    错误消息:#2002-Can'tconnecttolocalMySQLserverthroughsocket'/tmp/mysql.sock'(2)原因:数据库服务未启动。连接参数错误。解决方法:检查数据库服务:确认MySQL服务是否正常运行。sudoservicemysqlstatus检查连接参数:确认连接参数(主机名、用......