详情页标题前

腾讯云容器服务使用 Prometheus 监控 MySQL 与 MariaDB同尘科技

详情页1

操作场景

MySQL 是常用的关系型数据库,MariaDB 作为 MySQL 的分支版本,兼容 MySQL 协议,也越来越流行。在 Kubernetes 环境中,可借助开源的 mysqld-exporter 来使用 Prometheus 监控 MySQL 与 MariaDB。您可通过本文了解 Prometheus 并开始使用。

mysqld-exporter 简介

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

腾讯云容器服务使用 Prometheus 监控 MySQL 与 MariaDB同尘科技



操作步骤

部署 mysqld-exporter

注意在部署 mysqld-exporter 之前需确保已在集群内、集群外或使用已有的云服务中部署 MySQL 或 MariaDB。

部署 MySQL

以从应用市场部署 MySQL 到集群为例。步骤如下:1. 登录 容器服务控制台,在左侧导航栏选择应用市场。 2.应用市场页面,搜索并选择 MySQL。 3.应用详情页面,单击创建应用。 4.创建应用页面,填写应用信息后单击创建。5. 应用创建完成后,在左侧导航栏选择应用,在应用页面查看应用详情。6. 执行以下命令,查看 MySQL 是否正常运行。

$ kubectl get podsNAME                     READY   STATUS        RESTARTS   AGEmysql-698b898bf7-4dc5k   1/1     Running       0          11s

7. 执行以下命令,获取 root 密码。

$ kubectl get secret -o jsonpath={.data.mysql-root-password} mysql | base64 -d6ZAj33yLBo

部署 mysqld-exporter

部署 MySQL 后,可以开始部署 mysqld-exporter。步骤如下:1. 依次执行以下命令,创建 mysqld-exporter 账号并登录 MySQL。示例如下:

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

2. 执行以下命令,输入 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;

3. 使用 yaml 文件部署 mysqld-exporter。示例如下:注意需根据实际情况替换 DATA_SOURCE_NAME 中的账号密码,以及 MySQL 的连接地址。

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

添加监控采集配置

部署 mysqld-exporter 后,添加监控采集配置,让 mysqld-exporter 暴露的数据可被采集。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。如下图所示:

腾讯云容器服务使用 Prometheus 监控 MySQL 与 MariaDB同尘科技


如果需要更丰富的面板,导入 percona 开源面板 中 MySQL_ 开头的 json 文件中的内容即可。
容器服务官网1折活动,限时活动,即将结束,速速收藏
同尘科技腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/148537.html

(0)
上一篇 2023年12月9日 下午12:57
下一篇 2023年12月9日
详情页2

相关推荐

  • 腾讯云轻量应用服务器Lightwings使用文档云小二

    什么是Lightwings Lightwings 是一款腾讯云自研的应用开发工具,通过提供模块化开发能力以及代码管理能力,让您更专注于代码的编写,快速构建自己的应用。目前支持 golang-http、python3-http、java11、node17、php8 5种语言。如果想要更多的应用代码模板可加入官方交流群联系我们。 如何使用 Lightwings…

    2023年12月9日
  • 腾讯云TDSQL-C MySQL版数据库表

    对比传统本地盘的数据库,TDSQL-C MySQL 版中的大表存储有什么优势? TDSQL-C MySQL 版中的一张表,物理上会被拆分到 N 台存储服务器上存储,因此对一张表的 I/O 会被分摊到多块存储磁盘中,I/O 读取的整体吞吐性能要远优于集中式的本地盘数据库。 创建数据库、表的数量有限制吗? TDSQL-C MySQL 版不会对创建数据库的数量和创…

    2023年12月9日
  • 视觉智能平台我们目前这个oss存储不是上海地区的。这个处理方式目前只能是文档里面两种的么?-云小二-阿里云

    视觉智能平台我们目前这个oss存储不是上海地区的。这个处理方式目前只能是文档里面两种的么? 以下为热心网友提供的参考意见 阿里云视觉智能开放平台在进行人脸识别服务时,确实支持使用上海地域或者非上海地域的OSS链接文件URL进行处理。具体来说,如果你的图片是存储在华东2(上海)地域的OSS上,那么可以直接使用人脸接口进行识别。然而,如果你选择将图片存储到其他地…

    2024年1月9日
  • 腾讯云轻量应用服务器创建及管理 Docker 容器云小二

    操作场景 轻量应用服务器支持使用 Docker 基础镜像创建实例,您可选择在创建实例时创建容器,也可在实例创建成功后通过控制台直接创建容器。您可使用该功能快速部署容器化应用,并直接通过控制台便捷管理 Docker 容器。本文介绍如何通过轻量应用服务器控制台,进行创建、重建容器等容器管理操作。 操作步骤 创建容器 您可结合实际情况,选择以下方式创建容器:购买实…

    2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云对象存储基础图片处理

    简介 腾讯云对象存储(Cloud Object Storage,COS)集成了 数据万象(Cloud Infinite,CI)专业的一体化多媒体解决方案,涵盖以下图片处理功能,详情可见 图片处理概述。 功能 说明 缩放 等比缩放、设定目标宽高缩放等多种方式 裁剪 普通裁剪、缩放裁剪、内切圆、人脸智能裁剪 旋转 自适应旋转、普通旋转 格式转换 …

    腾讯云 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。