跳转至

prometheus监控mysql

mysqld_exporter v0.15.0 起(现在用的 v0.18.0),废弃了 DATA_SOURCE_NAME 环境变量

创建监控用户

kubectl exec -ti mysql-0 -- bash
CREATE USER 'exporter'@'%' IDENTIFIED BY 'exporter' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'%';

创建secret

kubectl -n monitoring create secret generic mysql-exporter-secret \
  --from-literal=.my.cnf='[client]
user=exporter
password=exporter
host=mysql.default.svc.cluster.local
port=3306'

kubectl get secret -n monitoring

mysqld-exporter.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql-exporter
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql-exporter
  template:
    metadata:
      labels:
        app: mysql-exporter
    spec:
      containers:
      - name: mysql-exporter
        image: registry.cn-hangzhou.aliyuncs.com/xxx/mysqld-exporter:latest
        imagePullPolicy: IfNotPresent
        args:
          - --config.my-cnf=/etc/mysql/.my.cnf
          - --web.listen-address=:9104
          - --collect.global_status
          - --collect.engine_innodb_status
          - --collect.info_schema.processlist
          - --collect.info_schema.tables
          - --collect.info_schema.tablestats
          - --collect.info_schema.userstats
          - --collect.perf_schema.eventsstatements
          - --collect.perf_schema.eventsstatementssum
        ports:
        - containerPort: 9104
        volumeMounts:
        - name: mysql-exporter-config
          mountPath: /etc/mysql/.my.cnf
          subPath: .my.cnf
      volumes:
      - name: mysql-exporter-config
        secret:
          secretName: mysql-exporter-secret

创建service

apiVersion: v1
kind: Service
metadata:
  name: mysql-exporter
  namespace: monitoring
  labels:
    app: mysql-exporter
spec:
  selector:
    app: mysql-exporter
  ports:
  - name: http
    port: 9104
    targetPort: 9104

curl 10.96.177.111:9104/metrics

ServiceMonitor

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: mysql-exporter
  namespace: monitoring
spec:
  selector:
    matchLabels:
      app: mysql-exporter   
  endpoints:
  - port: http
    interval: 30s

查看prometheus后台 http://192.168.124.60:32713/targets 状态是不是up

kubectl get servicemonitor -n monitoring

Grafana导入仪表盘

https://grafana.com/grafana/dashboards/7362 可选中文版 https://grafana.com/grafana/dashboards/14057