溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用Prometheus監(jiān)控MySQL與MariaDB.md

發(fā)布時(shí)間:2021-12-04 11:48:45 來源:億速云 閱讀:230 作者:iii 欄目:云計(jì)算

本篇內(nèi)容介紹了“如何使用Prometheus監(jiān)控MySQL與MariaDB.md”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

mysqld-exporter 原理介紹

mysqld-exporter 通過讀取 MySQL 或 MariaDB 中的一些數(shù)據(jù)庫狀態(tài)的數(shù)據(jù),并將其轉(zhuǎn)換為 Prometheus 的指標(biāo)格式并暴露成 http 接口被 Prometheus 所采集,來實(shí)現(xiàn)讓原本不支持 Prometheus 指標(biāo)的 MySQL 和 MariaDB 能夠被 Prometheus 監(jiān)控起來:

如何使用Prometheus監(jiān)控MySQL與MariaDB.md

操作步驟

部署 mysqld-exporter

在部署 mysqld-exporter 之前首先保證 MySQL 或 MariaDB 已經(jīng)部署,可以在集群內(nèi),也可以在集群外,或者使用現(xiàn)成的云服務(wù)。如果還沒有,這里以從應(yīng)用市場(chǎng)部署到集群為例來部署一個(gè) MySQL:

  1. 在應(yīng)用市場(chǎng)中找到 MySQL,點(diǎn)擊 創(chuàng)建應(yīng)用-創(chuàng)建。

如何使用Prometheus監(jiān)控MySQL與MariaDB.md

  1. 查看 mysql 是否正常運(yùn)行:

$ 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 后,我們開始準(zhǔn)備部署 mysqld-exporter,首先為 mysqld-exporter 創(chuàng)建一個(gè)賬號(hào),登錄 MySQL:

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

然后輸入 SQL 來創(chuàng)建賬號(hào),這里以 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

! 注意根據(jù)實(shí)際情況替換 DATA_SOURCE_NAME 中的賬號(hào)密碼,以及 MySQL 的連接地址

添加監(jiān)控采集配置

有了 mysqld-exporter 后,我們就可以配置監(jiān)控的采集,讓 mysqld-exporter 暴露的數(shù)據(jù)被采集起來,如果你的集群中安裝了 prometheus-operator,可以通過定義 ServiceMonitor 來配置采集規(guī)則,示例:

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 原生的配置文件來配置采集規(guī)則,示例:

    - 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

添加監(jiān)控面板

采集配置好,正常采集有了數(shù)據(jù)之后,還需要為 Grafana 添加監(jiān)控面板進(jìn)行展示,如果只是看 MySQL 或 MariaDB 的一些概覽情況,可以導(dǎo)入 grafana.com 的這個(gè)面板: https://grafana.com/grafana/dashboards/7362

如何使用Prometheus監(jiān)控MySQL與MariaDB.md

“如何使用Prometheus監(jiān)控MySQL與MariaDB.md”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI