跳转至

使用 prometheus 监控 mysql

部署 mysql

1. 编写 mysql 资源清单 mysql.yaml
# 1. 创建 namespace
apiVersion: v1
kind: Namespace
metadata:
  labels:
    kubernetes.io/metadata.name: mysql
  name: mysql
---
# 2. 创建 deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
  namespace: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - image: mysql
        name: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: password
---
# 3. 创建 service
apiVersion: v1
kind: Service
metadata:
  name: mysql
  namespace: mysql
spec:
  type: ClusterIP
  ports:
  - port: 3306
    targetPort: 3306
  selector:
    app: mysql
2. 创建资源
kubectl apply -f mysql.yaml
3. 查看创建后的资源
kubectl get pods -n mysql
4. 记录连接信息
host: mysql.mysql.svc.cluster.local
port: 3306
user: root
passwd: password

部署及验证 mysql exporter

1. 下载 exporter 资源
helm pull prometheus-community/prometheus-mysql-exporter
2. 解压文件
tar -xf prometheus-mysql-exporter-2.5.1.tgz && cd prometheus-mysql-exporter
3. 修改 values.yaml 文件
serviceMonitor:
  # enabled should be set to true to enable prometheus-operator discovery of this service
  enabled: true 默认为false,修改为true
  # interval is the interval at which metrics should be scraped
  interval: 30s 开启
  # scrapeTimeout is the timeout after which the scrape is ended
  scrapeTimeout: 10s 开启
  #namespace: monitoring

mysql:
  db: ""
  host: "mysql.mysql.svc.cluster.local"
  # config my.cnf https://dev.mysql.com/doc/c-api/8.0/en/mysql-options.html
  additionalConfig:
    # - connect-timeout=5
    # - debug
  pass: "password"
  port: 3306
  protocol: ""
  user: "root"
4. 安装 prometheus-mysql-exporter
helm install prometheus-mysql-exporter ./ -f values.yaml -n mysql
4. 查看资源
kubectl get pod -n mysql
4. 安装 prometheus-mysql-exporter
helm install prometheus-mysql-exporter ./ -f values.yaml -n mysql

查看 prometheus

image-20240413212855665

配置 grafana

image-20240413213401763