使用 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