Prometheus监控Mysql8.X
容器部署了mysql服务,需要部署Mysql-Exporter监控对应的数据库
首先在root目录下输入
docker --version
如果返回 docker: command not found 错误,说明 Docker 未安装
1.安装 Docker
1.更新包索引
运行 sudo yum update -y 可以确保系统和已安装的软件包都保持最新。用于更新系统中所有已安装的软件包及其依赖项
sudo yum update -y
2.用于安装多个特定的软件包及其依赖项,你可以确保系统具备必要的工具和依赖项,为下一步的软件和服务配置打下基础
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

返回以上结果说明:
"""
yum-utils, device-mapper-persistent-data 和 lvm2 这三个软件包已经安装在你的系统上。
每个软件包旁边的信息显示它们的已安装版本(如 yum-utils-1.1.31-54.el7_8.noarch, device-mapper-persistent-data-0.8.5-3.el7_9.2.x86_64, lvm2-2.02.187-6.el7_9.5.x86_64)
所有这些软件包都已经是最新版本,不需要更新。
"""
3.添加 Docker 仓库 :
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4.安装 Docker:
sudo yum install -y docker-ce

5.启动 Docker 服务并设置开机自启:
sudo systemctl start docker
sudo systemctl enable docker
2.docker拉取mysql8.0镜像
在gpt上问docker如何拉取mysql8.0镜像,回答如下:
"""
在 Linux 服务器上使用 Docker 版本 26.1.4 拉取 MySQL 8.0 镜像需要确保你的网络连接正常,并且 Docker 配置正确。以下是详细的步骤:
步骤 1: 检查 Docker 是否正常工作
检查 Docker 版本 :
确认 Docker 已安装并运行。
docker --version
输出类似如下内容:
Docker version 26.1.4, build 5650f9b
步骤 2: 配置 Docker 以使用镜像加速器
由于直接访问 Docker Hub 可能会遇到网络问题,推荐使用国内的镜像加速器,例如阿里云或腾讯云。
配置镜像加速器 :
创建或编辑 Docker 配置文件 /etc/docker/daemon.json。
sudo nano /etc/docker/daemon.json
添加以下内容(选择适合的加速器):
使用阿里云镜像加速器:
{
"registry-mirrors": ["https://<your-accelerator-id>.mirror.aliyuncs.com"]
}
请注册并登录 阿里云容器镜像服务控制台 获取你的 <your-accelerator-id>。
使用腾讯云镜像加速器:
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
保存文件并退出 :
在 nano 中按 Ctrl + O 保存,按 Enter 确认,然后按 Ctrl + X 退出。
重启 Docker 服务 :
sudo systemctl daemon-reload
sudo systemctl restart docker
步骤 3: 拉取 MySQL 8.0 镜像
拉取 MySQL 8.0 镜像 :
docker pull mysql:8.0
验证镜像是否成功拉取 :
docker images
应该看到类似的输出:
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 8.0 <IMAGE_ID> <CREATED_DATE> <SIZE>
步骤 4: 运行 MySQL 8.0 容器
运行 MySQL 8.0 容器 :
docker run --name mysql8 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d -p 3306:3306 mysql:8.0
解释:
--name mysql8:给容器指定名称 mysql8。
-e MYSQL_ROOT_PASSWORD=my-secret-pw:设置 root 用户的密码为 my-secret-pw。
-d:容器在后台运行。
-p 3306:3306:将宿主机的 3306 端口映射到容器的 3306 端口。
验证容器是否运行 :
docker ps
"""
1.确保 Docker 已安装并启动
docker --version

2.直接拉取镜像:
docker pull mysql:8.0
发现以下报错:

按照gpt提示,错误解决过程如下:
1.检查 Docker 版本:
docker --version
2.配置 Docker 以使用镜像加速器
sudo nano /etc/docker/daemon.json
"""
这一步发现,gpt给我的提示是:
{
"registry-mirrors": ["https://<your-accelerator-id>.mirror.aliyuncs.com"]
}
而我没有把<your-accelerator-id>替换掉。
"""
现在我要找到我自己的




3.重启docker服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
4.拉取mysql8.0镜像:
docker pull mysql:8.0
5.验证镜像是否成功拉取:
docker images

6.在容器中部署mysql8.0:
docker run --name mysql8.0 -e MYSQL_ROOT_PASSWORD=maxzheng -d -p 3306:3306 mysql:8.0
"""
解释:
--name mysql8:给容器指定名称 mysql8.0
-e MYSQL_ROOT_PASSWORD=my-secret-pw:设置 root 用户的密码为 maxzheng
-d:容器在后台运行
-p 3306:3306:将宿主机的 3306 端口映射到容器的 3306 端口
"""

"""
上述设置的密码什么时候会用到?
(1).从容器内部访问:你可以通过 docker exec 命令进入 MySQL 容器内部并使用 MySQL 客户端登录:
docker exec -it mysql8 mysql -uroot -p
执行上述命令后,会提示你输入密码。在此时你需要输入 my-secret-pw:
Enter password:
(2).从宿主机或其他环境访问
mysql -h127.0.0.1 -P3306 -uroot -p
在提示符下输入 my-secret-pw:
Enter password: my-secret-pw
(3). 管理工具
使用图形化的数据库管理工具(如 MySQL Workbench)时,需要提供这个密码来连接到 MySQL 数据库。
打开 MySQL Workbench(或其他图形管理工具)。
创建一个新连接。
在连接配置对话框中,输入数据库连接信息:
Hostname: 127.0.0.1
Port: 3306
Username: root
Password: my-secret-pw
"""
7.查看容器状态:
docker ps -a
"""
docker ps 和 docker ps -a 是 Docker 中常用的命令,docker ps 命令显示当前正在运行的容器。docker ps -a 命令显示所有容器,包括正在运行(up)的容器,也包括停止、退出等各种状态的容器
"""

8.将3306添加为安全组:

9.使用本地navicat连接docker数据库:

3.Prometheus监控Mysql8
1.部署mysql-exporter:
docker run -d --name mysql-exporter -p 9104:9104 -e DATA_SOURCE_NAME="root:maxzheng@(8.138.177.114:3306)/mysql" prom/mysqld-exporter
"""
root:maxzheng@(8.138.177.114:3306),maxzheng是密码,密码需要和部署mysql时设置的root密码保持一致,8.138.177.114是ip
"""

2.在安全组添加9104端口:

现在访问 http://ip:9104/metrics即可看到mysql-exporter暴露出的信息:


3.修改promethues.yml文件,将mysql-exporter的端口加进去:
vim prometheus.yml


4.执行动态更新命令:每次修改完配置之后都需要执行这个命令,promethues才能生效:
curl -X POST http://localhost:9090/-/reload
5.刷新完之后发现页面上就能看到mysql_exporter_1这个export采到的信息了:



4.mysql常见的关键指标:
mysql_up:表示 MySQL 数据库的可用性,如果值为1,则表示数据库连接正常;如果值为0,则表示数据库连接不可用。
mysql_global_status_threads_connected:表示当前活动的连接数量。
mysql_global_status_threads_running:表示当前正在执行的线程数量。
mysql_global_variables_max_connections:表示 MySQL 数据库允许的最大连接数。
mysql_global_status_queries:表示 MySQL 数据库执行的总查询次数。
mysql_global_status_slow_queries:表示慢查询的数量。
mysql_global_status_innodb_buffer_pool_read_requests:表示从 InnoDB 缓冲池中读取的请求数量。
实际指标名称和标签可能会因使用的 MySQL 版本、Exporter 版本以及具体的配置变化而有所不同
只是一部分常见的关键指标,在实际使用中还有许多其他的指标进行监控分析。
通过这些关键指标,可以了解 MySQL 数据库的连接情况、查询性能、缓冲池状态等重要数据。
5.在容器内部连接mysql
1.首先确保mysql8.0容器已经正常运行:
docker ps

如果没有运行就运行容器:
docker run --name mysql8.0 -e MYSQL_ROOT_PASSWORD=maxzheng -d -p 3306:3306 mysql:8.0
2.进入 MySQL 容器
docker exec -it mysql8.0 bash
注意:容器的名称要和上一步container的names保持一致:

3.使用 MySQL 客户端 : 在容器内部,使用 MySQL 客户端连接数据库:
mysql -u root -p
然后输入密码

这时就可以直接在容器中查询sql:


浙公网安备 33010602011771号