关于腾讯云:手把手教你使用-Prometheus-监控-MySQL-与-MariaDBmd

39次阅读

共计 3601 个字符,预计需要花费 10 分钟才能阅读完成。

概述

MySQL 是罕用的关系型数据库,MariaDB 作为 MySQL 的分支版本,兼容 MySQL 协定,也越来越风行。在 Kubernetes 环境中如何应用 Prometheus 来对它们进行监控呢?通常是借助开源的 mysqld-exporter 来实现,本文将围绕这个主题开展具体介绍下。

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 pods
NAME                     READY   STATUS        RESTARTS   AGE
mysql-698b898bf7-4dc5k   1/1     Running       0          11s
  1. 获取 root 明码:
$ kubectl get secret -o jsonpath={.data.mysql-root-password} mysql
6ZAj33yLBo

有了 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/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

! 留神依据理论状况替换 DATA_SOURCE_NAME 中的账号密码,以及 MySQL 的连贯地址

增加监控采集配置

有了 mysqld-exporter 后,咱们就能够配置监控的采集,让 mysqld-exporter 裸露的数据被采集起来,如果你的集群中装置了 prometheus-operator,能够通过定义 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 的这个面板: https://grafana.com/grafana/d…

如果须要更丰盛的面板,能够导入 percona 开源的一些面板,地址: https://github.com/percona/gr… (导入 MySQL_ 结尾的 json 文件中的内容即可 )。

小结

本文介绍了如何利用开源的 mysqld-exporter 将本来不反对 Prometheus 的 MySQL 或 MariaDB 接入进来,让 Prometheus 也能采集数据库的监控指标,并增加 Grafana 监控面板,让查看监控更加不便。

【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!

正文完
 0