目录
部署mysql实例
[root@k8s-master myweb]# vim mysql-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: mysql
spec:
replicas: 1
selector:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.6
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
[root@k8s-master src]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
mysql-7jjsg 1/1 Running 0 28m 10.244.1.9 k8s-node2 <none> <none>
连接测试
[root@k8s-master src]# mysql -uroot -p123456 -h 10.244.1.9
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 21
Server version: 5.6.49 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]>
helm 一键安装prometheus-mysql-exporter 服务
在kubernetes中添加mysql监控的exporter:prometheus-mysql-exporter
这里采用helm的方式安装prometheus-mysql-exporter
[root@k8s-master kube-prometheus]# helm search repo prometheus-mysql-exporter
NAME CHART VERSION APP VERSION DESCRIPTION
stable/prometheus-mysql-exporter 0.7.0 v0.11.0 A Helm chart for prometheus mysql exporter with...
1.下载prometheus-mysql-exporter
helm pull stable/prometheus-mysql-exporter
2. 解压
tar zxvf prometheus-mysql-exporter-0.7.0.tgz
3. 修改values.yaml
修改values.yaml中的datasource为安装在kubernetes中mysql的地址:
cd prometheus-mysql-exporter
vim values.yaml
mysql:
db: ""
host: "10.244.1.9"
param: ""
pass: "123456"
port: 3306
protocol: ""
user: "root"
existingSecret: false
4. 重新打包
重新打包为:prometheus-mysql-exporter-v.1.0.tgz
tar zcvf prometheus-mysql-exporter-v.1.0.tgz prometheus-mysql-exporter
5. helm install
helm install mysql prometheus-mysql-exporter-v.1.0.tgz
[root@k8s-master src]# kubectl get pod,svc | grep mysql
pod/mysql-7jjsg 1/1 Running 0 46m
pod/mysql-prometheus-mysql-exporter-6cd877b86f-g8qbd 1/1 Running 0 41m
service/mysql NodePort 10.1.128.103 <none> 3306:30001/TCP 57m
service/mysql-prometheus-mysql-exporter ClusterIP 10.1.192.61 <none> 9104/TCP 41m
6. exporter 测试与MySQL连接
当指标值为1时表示能够正常获取监控数据,如果不是1请排查MySQL连接设置,权限,日志等
[root@k8s-master src]# curl 10.1.192.61:9104/metrics|grep mysql_up
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 112k 100 112k 0 0 1821 0 0:01:03 0:01:03 --:--:-- 29236
# HELP mysql_up Whether the MySQL server is up.
# TYPE mysql_up gauge
mysql_up 1
7. 创建ServiceMonitor
[root@k8s-master src]# vim servicemonitor.yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
prometheus: kube-prometheus
name: prometheus-exporter-mysql
namespace: monitoring
spec:
jobLabel: app
selector:
matchLabels:
app: prometheus-mysql-exporter
namespaceSelector:
matchNames:
- default
endpoints:
- port: mysql-exporter
interval: 30s
honorLabels: true
[root@k8s-master src]# kubectl get servicemonitors.monitoring.coreos.com -n monitoring
NAME AGE
alertmanager 171m
coredns 171m
grafana 171m
kube-apiserver 171m
kube-controller-manager 171m
kube-scheduler 171m
kube-state-metrics 171m
kubelet 171m
node-exporter 171m
prometheus 171m
prometheus-adapter 171m
prometheus-exporter-mysql 29m
prometheus-operator 171m
8. 浏览器验证
参考:https://www.cnblogs.com/wangxu01/articles/11655497.html