当前位置: 首页 > article >正文

使用docker部署Prometheus和Grafana去监控mysql和redis

自动化性能监控系统安装部署

相关工具的安装部署

服务工具分配

服务器工具端口
10.0.20.9grafana3000
10.0.20.9prometheus9090
10.0.20.10mysql3306
10.0.20.10mysql-exporter9104
10.0.20.10redis3306
10.0.20.10redis_exporter9121

使用docker-compose安装prometheus

先拉取prometheus的镜像

# 也可以使用docker pull prom/prometheus:v2.54.1(使用后下文配置信息里的镜像名也要跟着调整)
docker pull prom/prometheus:v2.54.1

在指定的目录下创建docker-compose.yml配置文件和prometheus目录

在这里插入图片描述

docker-compose.yml配置信息如下

services:
  prometheus:
    image: prom/prometheus:v2.54.1 # 指定镜像文件
    container_name: 'prometheus'	# 给容器命名
    volumes:
      - ./prometheus/:/etc/prometheus/		# 映射prometheus的配置文件
      - /etc/localtime:/etc/localtime:ro	# 让容器去使用宿主机的时间,保持和宿主机的时间一致
    ports:
      - '9090:9090'	# 映射端口

然后在prometheus目录下创建prometheus.yml配置文件,设置抓取性能数据任务配置

在这里插入图片描述

prometheus.yml配置文件为

global:
  scrape_interval: 15s  # 数据抓取间隔

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['10.0.20.9:9090']	# 普罗米修斯的访问地址

启动

先回到docker-compose.ym配置文件所在的目录下

在这里插入图片描述

执行命令

docker-compose up -d

在这里插入图片描述

启动成功

在这里插入图片描述

防火墙开放端口限制之后就可以访问了

访问地址:http://10.0.20.9:9090

在这里插入图片描述

使用docker-compose安装grafana

拉取grafana镜像

# 也可以使用docker pull grafana/grafana:11.2.3(使用后下文配置信息里的镜像名也要跟着调整)
docker pull grafana/grafana:11.2.3

在指定的目录下配置docker-compose.yml配置文件和grafana目录

在这里插入图片描述

docker-compose.yml配置信息如下(在部署了prometheus的基础上调整)

services:
  prometheus:
    image: prom/prometheus:v2.54.1
    container_name: 'prometheus'
    volumes:
      - ./prometheus/:/etc/prometheus/
      - /etc/localtime:/etc/localtime:ro
    ports:
      - '9090:9090'
  grafana:
    image: grafana/grafana:11.2.3
    container_name: 'grafana'
    volumes:
      - ./grafana/config/grafana.ini:/etc/grafana/grafana.ini	# 配置grafana的报警邮件发送服务
      - ./grafana/provisioning/:/etc/grafana/provisioning/	# 映射grafana的配置文件
      - /etc/localtime:/etc/localtime:ro	# 让容器去使用宿主机的时间,保持和宿主机的时间一致
    ports:
      - '3000:3000'	# 端口映射
    env_file:
      - ./grafana/config.monitoring	# 设置grafana的登录配置信息
    depends_on:
      - prometheus	# 设置grafana依赖于prometheus,需要在prometheus之后去启动

配置config.monitoring(grafana的认证配置)

# 设置grafana管理界面admin用户的登录密码
GF_SECURITY_ADMIN_PASSWORD=123456
# 控制grafana的管理界面不允许注册
GF_USERS_ALLOW_SIGN_UP=false

在这里插入图片描述

配置grafana的配置文件datasource.yml,用于设定其展示数据的数据来源

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

配置信息如下

apiVersion: 1

deleDatasources:
  - name: Prometheus
    orgId: 1

datasources:
  - name: Prometheus
    type: prometheus
    access: proxy
    orgId: 1
    url: http://10.0.20.9:9090
    basicAuth: false
    isDefault: true
    version: 1
    editable: true

设置预警通知邮件配置文件grafana.ini

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

配置信息如下

[smtp]
# 是否开启邮件发送
enabled = true
# 发送服务器(固定的)
host = smtp.qq.com:465
# 发送者的邮箱账号(smtp账号)
user = 834363368@qq.com
# 授权码(smtp账号的授权码)
password = 66666666666
# 接收预警邮件的邮箱
from_address = 456789@qq.com
# 接收预警邮件的用户名称
from_name = 云泽

安装对应中间件的exporter向prometheus提供性能数据

安装redis_exporter收集redis性能数据

拉取redis_exporter镜像

docker pull oliver006/redis_exporter:v1.64.1

运行redis_exporter

docker run -d -p 9121:9121 oliver006/redis_exporter:v1.64.1 --redis.addr redis://10.0.20.10:6379 --redis.password 123456

容器启动成功之后,访问 http://10.0.20.10:9121/metrics 打印出redis相关的信息就说明redis_exporter安装成功。

在这里插入图片描述

安装mysql-exporter收集mysql性能数据

拉取mysql-exporter镜像

docker pull prom/mysqld-exporter:v0.15.1

在mysql上创建mysql-exporter专属的账号exporter,只需要查询权限即可。

然后配置mysql-exporter访问mysql数据库信息my.cnf

[client]
host=10.0.20.10
user=exporter
password=123456

运行mysql-exporter

ocker run -d --name mysql-master-exporter -p 9104:9104 -v /opt/my.cnf:/etc/mysql/my.cnf prom/mysqld-exporter:v0.15.1 --config.my-cnf=/etc/mysql/my.cnf

启动之后访问http://10.0.20.10:9104/metrics

请求后打印出如下mysql相关信息就是成功

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接下来去配置下prometheus,在原prometheus.yml配置文件里,追加redis的性能数据抓取任务

编辑prometheus.yml (该文件按上文所述,在/opt/docker/docker-monitor/prometheus/prometheus.yml)

global:
  scrape_interval: 10s  # 数据抓取间隔

scrape_configs: 
  - job_name: 'prometheus'
    static_configs: 
      - targets: ['10.0.20.9:9090']
      
	- job_name: 'mysql-master'
    static_configs:
      - targets: ['10.0.20.10:9104']
        labels: 
          instance: mysql-master

  - job_name: 'redis-signle'
    static_configs:
      - targets: ['10.0.20.10:9121']
        labels:
          instance: redis-signle

重新启动Prometheus + Grafana

进入到10.0.20.9服务器的/opt/docker/docker-monitor目录,也就是docker-compose.yml配置文件所在地址

在这里插入图片描述

执行如下命令启动grafana和prometheus

docker-compose up --force-recreate -d

–force-recreate:意思是关闭删除旧的容器,重新创建新的容器并运行

登录配置Grafana

访问地址:http://10.0.20.9:3000/login

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

导入的json文件如下

redis-dashboard.json

mysql-dashboard.json

下载json文件后,逐个导入到grafana的dashboards里面即可

mysql性能监控页面

在这里插入图片描述

mysql如果想监控到MySQL Slow Queries也就是慢查询,就需要在mysql的配置文件里开启慢查询日志记录

#开启慢查询日志
slow_query_log = 1

#指定慢查询日志文件的位置
slow_query_log_file = /var/log/mysql/slow-query.log

#设置慢查询的时间阈值(单位:秒)
long_query_time = 2

redis性能监控页面

在这里插入图片描述

redis监控要看到memory usagea数据,就需要在运行redis的时候,在redis的redis.conf里面添加如下配置:

#设置redis的最大内存

maxmemory 1024M

如果docker拉取镜像失败超时,可参考如下两篇文章,对应两种解决方案

方案一:轻松解决Docker拉取镜像失败问题
方案二:GitHub Actions + 阿里云解决Docker镜像拉取难题,实现镜像自由


http://www.kler.cn/a/387796.html

相关文章:

  • PaaS云原生:分布式集群中如何构建自动化压测工具
  • 综合案例铁锅炖(CSS项目大杂烩)
  • 原生 JavaScript基本内容和常用特性详解
  • 客户手机号收集小程序有什么用
  • Pencils Protocol 上线新板块 Auction,生态版图进一步完善
  • 【NLP】使用 PyTorch 从头构建自己的大型语言模型 (LLM)
  • 喜报!景联文科技成功通过DCMM数据管理能力成熟度二级认证
  • redis和数据库的数据一致性
  • Golang--文件操作
  • D64【python 接口自动化学习】- python基础之数据库
  • Redis常用的五大数据类型(列表List,集合set)
  • 计算机视觉实验四:特征检测与匹配
  • CSS外边距合并及解决办法
  • PL端:HDMI 输出实验
  • XMLHttpRequest以及Promise对象的使用
  • adb:Android调试桥
  • 揭秘云计算 | 2、业务需求推动IT发展
  • 单相锁相环,原理与Matlab实现
  • 【ECCV2024】V-IRL: Grounding Virtual Intelligence in Real Life
  • 海量数据迁移:Elasticsearch到OpenSearch的无缝迁移策略与实践
  • 【优选算法篇】微位至简,数之恢宏——解构 C++ 位运算中的理与美
  • uni-app小程序开发(1)
  • 【大模型】Spring AI Alibaba 对接百炼平台大模型使用详解
  • CX_SY_OPEN_SQL_DB
  • leetcode92:反转链表||
  • C#入门 017 字段,属性,索引器,常量