托管 Prometheus 服务提供基于 exporter 的方式来监控 MySQL 运行状态,本文为您介绍如何在集群中部署 mysqld-exporter,并实现对 MySQL 的监控。
mysqld-exporter 是通过查询数据库中状态数据来对其进行监控,所以需要为对应的数据库实例进行授权。您可以执行以下命令,为用户进行授权。
CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'XXXXXXXX' WITH MAX_USER_CONNECTIONS 3; GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
说明
建议为该用户设置最大连接数限制,以避免因监控数据抓取对数据库带来影响。但并非所有版本的数据库中都可以生效,例如 MariaDB 10.1 版本不支持最大连接数设置。
apiVersion: v1 kind: Secret metadata: name: mysql-secret-demo # 配置保密字典的名称 namespace: volcano-metrics # 配置保密字典的命名空间 type: Opaque stringData: datasource: "user:password@tcp(ip:port)/" # 配置 MySQL 实例的连接串信息,包括用户名、密码、地址和端口号
apiVersion: apps/v1 kind: Deployment metadata: name: mysql-exporter # 配置 exporter 的名称 namespace: volcano-metrics # 配置 exporter 的命名空间 labels: app-name: mysql-exporter # 配置 exporter 的标签 spec: replicas: 1 selector: matchLabels: app-name: mysql-exporter # 根据业务需要调整成对应的名称,可以使用 MySQL 的实例信息 template: metadata: labels: app-name: mysql-exporter # 根据业务需要调整成对应的名称,可以使用 MySQL 的实例信息 spec: containers: - env: - name: DATA_SOURCE_NAME valueForm: secretKeyRef: name: mysql-secret-demo key: datasource image: prom/mysqld-exporter:latest # 拉取 Docker Hub 中的 exporter 镜像 imagePullPolicy: IfNotPresent name: mysql-exporter # 配置容器名称 ports: - containerPort: 9104 # 配置容器端口号 name: metric-port # 配置容器端口名称 dnsPolicy: ClusterFirst restartPolicy: Always terminationGracePeriodSeconds: 30
apiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: name: mysql-exporter # 配置 PodMonitor 的名称 namespace: volcano-metrics # 配置 PodMonitor 的命名空间 labels: volcengine.vmp: "true" # 配置 PodMonitor 的标签,允许被 Prometheus-agent 发现 spec: podMetricsEndpoints: - interval: 30s port: metric-port # 填写 exporter 的容器端口名称 path: /metrics # 填写指标暴露的 URI 路径,不填默认为 /metrics relabelings: # 配置指标的 relabel。如没有该需求,可省略。 - action: replace sourceLabels: - instance regex: (.*) targetLabel: instance replacement: 'mysql-xxxxxx' # 配置为对应 mysql 实例的 ID 值 namespaceSelector: matchNames: - volcano-metrics # 配置为 exporter 所在的命名空间 selector: matchLabels: app-name: mysql-exporter # 配置 exporter 的 Label 值,以定位和选择目标 Pod
kubectl port-forward service/grafana 3000:3000 -n volcano-metrics
admin
密码admin
登录。说明
mysql-exporter 的详细参数,请参见 mysqld-exporter。