千家信息网

如何使用Prometheus监控MySQL与MariaDB.md

发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,本篇内容介绍了"如何使用Prometheus监控MySQL与MariaDB.md"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大
千家信息网最后更新 2025年02月06日如何使用Prometheus监控MySQL与MariaDB.md

本篇内容介绍了"如何使用Prometheus监控MySQL与MariaDB.md"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

mysqld-exporter 原理介绍

mysqld-exporter 通过读取 MySQL 或 MariaDB 中的一些数据库状态的数据,并将其转换为 Prometheus 的指标格式并暴露成 http 接口被 Prometheus 所采集,来实现让原本不支持 Prometheus 指标的 MySQL 和 MariaDB 能够被 Prometheus 监控起来:

操作步骤

部署 mysqld-exporter

在部署 mysqld-exporter 之前首先保证 MySQL 或 MariaDB 已经部署,可以在集群内,也可以在集群外,或者使用现成的云服务。如果还没有,这里以从应用市场部署到集群为例来部署一个 MySQL:

  1. 在应用市场中找到 MySQL,点击 创建应用-创建

  1. 查看 mysql 是否正常运行:

$ kubectl get podsNAME                     READY   STATUS        RESTARTS   AGEmysql-698b898bf7-4dc5k   1/1     Running       0          11s
  1. 获取 root 密码:

$ kubectl get secret -o jsonpath={.data.mysql-root-password} mysql6ZAj33yLBo

有了 MySQL 后,我们开始准备部署 mysqld-exporter,首先为 mysqld-exporter 创建一个账号,登录 MySQL:

$ kubectl exec -it mysql-698b898bf7-4dc5k bash$ mysql -uroot -p6ZAj33yLBo

然后输入 SQL 来创建账号,这里以 mysqld-exporter/123456 为例:

CREATE USER 'mysqld-exporter' IDENTIFIED BY '123456' WITH MAX_USER_CONNECTIONS 3;GRANT PROCESS, REPLICATION CLIENT, REPLICATION SLAVE, SELECT ON *.* TO 'mysqld-exporter';flush privileges;

然后使用以下 yaml 来部署 mysqld-exporter:

apiVersion: apps/v1kind: Deploymentmetadata:  name: mysqld-exporterspec:  replicas: 1  selector:    matchLabels:      app: mysqld-exporter  template:    metadata:      labels:        app: mysqld-exporter    spec:      containers:      - name: mysqld-exporter        image: prom/mysqld-exporter:v0.12.1        args:        - --collect.info_schema.tables        - --collect.info_schema.innodb_tablespaces        - --collect.info_schema.innodb_metrics        - --collect.global_status        - --collect.global_variables        - --collect.slave_status        - --collect.info_schema.processlist        - --collect.perf_schema.tablelocks        - --collect.perf_schema.eventsstatements        - --collect.perf_schema.eventsstatementssum        - --collect.perf_schema.eventswaits        - --collect.auto_increment.columns        - --collect.binlog_size        - --collect.perf_schema.tableiowaits        - --collect.perf_schema.indexiowaits        - --collect.info_schema.userstats        - --collect.info_schema.clientstats        - --collect.info_schema.tablestats        - --collect.info_schema.schemastats        - --collect.perf_schema.file_events        - --collect.perf_schema.file_instances        - --collect.perf_schema.replication_group_member_stats        - --collect.perf_schema.replication_applier_status_by_worker        - --collect.slave_hosts        - --collect.info_schema.innodb_cmp        - --collect.info_schema.innodb_cmpmem        - --collect.info_schema.query_response_time        - --collect.engine_tokudb_status        - --collect.engine_innodb_status        ports:        - containerPort: 9104          protocol: TCP        env:        - name: DATA_SOURCE_NAME          value: "mysqld-exporter:123456@(mysql.default.svc.cluster.local:3306)/"---apiVersion: v1kind: Servicemetadata:  name: mysqld-exporter  labels:    app: mysqld-exporterspec:  type: ClusterIP  ports:  - port: 9104    protocol: TCP    name: http  selector:    app: mysqld-exporter

! 注意根据实际情况替换 DATA_SOURCE_NAME 中的账号密码,以及 MySQL 的连接地址

添加监控采集配置

有了 mysqld-exporter 后,我们就可以配置监控的采集,让 mysqld-exporter 暴露的数据被采集起来,如果你的集群中安装了 prometheus-operator,可以通过定义 ServiceMonitor 来配置采集规则,示例:

apiVersion: monitoring.coreos.com/v1kind: ServiceMonitormetadata:  name: mysqld-exporterspec:  endpoints:    interval: 5s    targetPort: 9104  namespaceSelector:    matchNames:    - default  selector:    matchLabels:      app: mysqld-exporter

你可以通过修改 Prometheus 原生的配置文件来配置采集规则,示例:

    - job_name: mysqld-exporter      scrape_interval: 5s      kubernetes_sd_configs:      - role: endpoints        namespaces:          names:          - default      relabel_configs:      - action: keep        source_labels:        - __meta_kubernetes_service_label_app_kubernetes_io_name        regex: mysqld-exporter      - action: keep        source_labels:        - __meta_kubernetes_endpoint_port_name        regex: http

添加监控面板

采集配置好,正常采集有了数据之后,还需要为 Grafana 添加监控面板进行展示,如果只是看 MySQL 或 MariaDB 的一些概览情况,可以导入 grafana.com 的这个面板: https://grafana.com/grafana/dashboards/7362

"如何使用Prometheus监控MySQL与MariaDB.md"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

监控 配置 数据 集群 情况 账号 面板 应用 内容 可以通过 实际 密码 市场 指标 更多 知识 示例 规则 实用 学有所成 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全 什么培训机构 数据库建立索引有用吗 php ci 数据库操作 护苗网络安全课堂演讲稿 计算机网络技术学习计划书 够买国外云服务器 数据库系统 数据库原理 黑洞加速服务器怎么样 服务器执行php脚本 女生软件开发做什么工作 河北手机软件开发的用途和特点 宁波专业软件开发外包 数据库主关键字无效 软件开发c 面试题 华为服务器上贴的ip是什么意思 达梦数据库具有高安全性的特点 江西服务器机柜定制虚拟主机 软件开发安全介入环节 大学网络安全专业好找工作吗 pe找不到服务器硬盘 渠道网络技术招聘 求个我的世界服务器 数据库数据保存在电脑哪个磁盘好 鹰皇金伯仕网络技术有限公司 松原织密网络安全 英国网络技术排名 梦幻西游 服务器列表错误 梦幻西游服务器配置 计算机网络安全及防火墙技术探析 2020梦幻西游服务器排名11月份
0