上云无忧 > 文档中心 > 腾讯云容器服务实战教程 - 使用 Prometheus 监控 MySQL 与 MariaDB
容器服务 TKE
腾讯云容器服务实战教程 - 使用 Prometheus 监控 MySQL 与 MariaDB

文档简介:
操作场景: MySQL 是常用的关系型数据库,MariaDB 作为 MySQL 的分支版本,兼容 MySQL 协议,也越来越流行。在 Kubernetes 环境中,可借助开源的 mysqld-exporter 来使用 Prometheus 监控 MySQL 与 MariaDB。您可通过本文了解 Prometheus 并开始使用。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

操作场景

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

mysqld-exporter 简介

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

操作步骤

部署 mysqld-exporter

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

部署 MySQL

以从应用市场部署 MySQL 到集群为例。步骤如下:
1. 登录 容器服务控制台,在左侧导航栏选择应用市场
2. 应用市场页面,搜索并选择 MySQL
3. 应用详情页面,单击创建应用
4. 创建应用页面,填写应用信息后单击创建
5. 应用创建完成后,在左侧导航栏选择应用,在应用页面查看应用详情。
6. 执行以下命令,查看 MySQL 是否正常运行。
		
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
mysql-698b898bf7-4dc5k 1/1 Running 0 11s
7. 执行以下命令,获取 root 密码。
		
$ kubectl get secret -o jsonpath={.data.mysql-root-password} mysql | base64 -d
6ZAj33yLBo

部署 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/v1
kind: Deployment
metadata:
name: mysqld-exporter
spec:
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: v1
kind: Service
metadata:
name: mysqld-exporter
labels:
app: mysqld-exporter
spec:
type: ClusterIP
ports:
- port: 9104
protocol: TCP
name: http
selector:
app: mysqld-exporter

添加监控采集配置

部署 mysqld-exporter 后,添加监控采集配置,让 mysqld-exporter 暴露的数据可被采集。ServiceMonitor 定义示例如下(需要集群中支持):
		
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: mysqld-exporter
spec:
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。如下图所示:

如果需要更丰富的面板,导入 percona 开源面板MySQL_ 开头的 json 文件中的内容即可。
相似文档
  • 本文主要描述使用自建 Prometheus 采集腾讯云容器服务 TKE 的监控数据时如何配置采集规则。TKE 集群内按照节点类型分为常规节点和超级节点,Prometheus 通过配置 scrape_config 来抓取节点和容器的监控数据,由于节点性质不同因此需要配置的采集规则略有差异。
  • 实践背景: 众所周知,Prometheus 是容器场景的最佳监控工具,但自建 Prometheus 对于运维人力有限的中小型企业而言,成本太高;对于业务发展快速的大企业又容易出现性能瓶颈。因而使用云上托管 Prometheus 已成为越来越多上云企业的第一选择。下列将为您介绍如何使用 托管 Prometheus 监控腾讯云容器服务 TKE。
  • 操作场景: 在容器服务 TKE 的众多场景中,例如 K8S 版本升级、内核版本升级等,都需要进行节点移出再移入的操作。本文详细介绍了节点移出再移入的过程,主要分为以下几个步骤: 1. 驱逐节点上运行的 Pod。 2. 将节点移出集群再重新添加到集群,该节点将重装系统。 3. 解除封锁。
  • 操作场景: 容器服务 TKE 集群新增节点可通过在“自定义数据”中填入脚本来进行批量操作,例如统一修改内核参数。但如需对已新增的存量节点进行批量操作,您可参考本文使用开源工具 Ansible 进行操作。
  • 使用场景: 当发生人为误操作、应用出现 bug、恶意程序调用 apiserver 接口,集群资源会被删除或修改。此时可通过集群审计功能记录 apiserver 的接口调用,即可根据条件检索和分析审计日志找到问题原因。本文介绍了集群审计功能的具体使用场景及使用示例,您可参考本文开始使用集群审计功能。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部