准备环境
mysql 环境可以搭建2个或者一个来进行监控
我这个是搭建了2个一个使用容器启动,一个二进制安装如图所示
配置mysql-exporter进行采集数据
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-exporter
namespace: monitoring
spec:
replicas: 1
selector:
matchLabels:
k8s-app: mysql-exporter
template:
metadata:
labels:
k8s-app: mysql-exporter
spec:
containers:
- image: prom/mysqld-exporter
name: mysqld
env:
- name: DATA_SOURCE_NAME
value: "exporter:exporter@(mysql.default:3306)/"
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9104
- image: prom/mysqld-exporter
name: mysqld-exporter
command: [ "sh","-c","/bin/mysqld_exporter --web.listen-address=':9003'"]
env:
- name: DATA_SOURCE_NAME
value: "exporter:exporter@(172.17.0.7:3306)/"
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9003
查看是否安装成功
kubectl get deployments.apps -n monitoring
kubectl get po -n monitoring
通过sercice来进行暴漏端口
apiVersion: v1
kind: Service
metadata:
name: mysql-exporter
namespace: monitoring
labels:
k8s-app: mysql-exporter
mingcheng: dnsxmu
spec:
ports:
- port: 9104
protocol: TCP
name: api-mysql
- port: 9003
protocol: TCP
name: api
selector:
k8s-app: mysql-exporter
type: ClusterIP
查看是否安装成功
kubectl get svc -n monitoring
curl 10.97.126.45:9104/metrics |tail -2
curl 10.97.126.45:9003/metrics |tail -2
配置监控ServiceMonitor收集
ServiceMonitor相当于是把之前采集好的数据自动可以让普罗米修斯自动识别
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: mysql-exporter
namespace: monitoring
labels:
k8s-app: mysql-exporter
spec:
endpoints:
- interval: 10s
port: api-mysql
relabelings:
- action: replace
regex: (.*)
replacement: $1
sourceLabels: [__meta_kubernetes_endpoints_label_xiangming]
targetLabel: xingming
scheme: http
- interval: 10s
port: api
scheme: http
selector:
matchLabels:
k8s-app: mysql-exporter
namespaceSelector:
matchNames:
- monitoring
验证是否配置成功ServiceMonitor
kubectl get servicemonitors.monitoring.coreos.com -n monitoring
整体的yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-exporter
namespace: monitoring
spec:
replicas: 1
selector:
matchLabels:
k8s-app: mysql-exporter
template:
metadata:
labels:
k8s-app: mysql-exporter
spec:
containers:
- image: prom/mysqld-exporter
name: mysqld
env:
- name: DATA_SOURCE_NAME
value: "exporter:exporter@(mysql.default:3306)/"
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9104
- image: prom/mysqld-exporter
name: mysqld-exporter
command: [ "sh","-c","/bin/mysqld_exporter --web.listen-address=':9003'"]
env:
- name: DATA_SOURCE_NAME
value: "exporter:exporter@(172.17.0.7:3306)/"
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9003
---
apiVersion: v1
kind: Service
metadata:
name: mysql-exporter
namespace: monitoring
labels:
k8s-app: mysql-exporter
spec:
ports:
- port: 9104
protocol: TCP
name: api-mysql
- port: 9003
protocol: TCP
name: api
selector:
k8s-app: mysql-exporter
type: ClusterIP
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: mysql-exporter
namespace: monitoring
labels:
k8s-app: mysql-exporter
spec:
endpoints:
- interval: 10s
port: api-mysql
relabelings:
- action: replace
regex: (.*)
replacement: $1
sourceLabels: [__meta_kubernetes_endpoints_label_xiangming]
targetLabel: xingming
scheme: http
- interval: 10s
port: api
scheme: http
selector:
matchLabels:
k8s-app: mysql-exporter
namespaceSelector:
matchNames:
- monitoring
开始进行验证
查看普罗米修斯是否自动发现刚刚配置的监控
查看是否可以看到自定义的便签:我这边使用其他的资源进行演示:
这个是我自定义的便签,配置到svc上就可以了
发现是可以展示出来的
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)