mysqld-exporter 暴露mysql监控指标, 非宿主机方案
目标: 对现有的mysql服务,接入到k8s prometheus 监控体系,方便后续监控告警的实现。
实现方式: 在k8s集群部署一个 mysqld-exporter, 接入到k8s prometheus 监控体系,对现有的mysql 中间件无侵入。
1.1 添加mysqld-exporter Configmap配置
Configmap:
kind: ConfigMap
apiVersion: v1
metadata:
name: mysql-dev-exporter-config
namespace: common
annotations:
kubesphere.io/creator: daizhiqiang
data:
my.cnf: |
[client]
host = 192.168.174.187
port = 3306
user = root
password = nhdTaVMSAC
1.2 添加mysqld-exporter Deployment 配置
Deployment:
kind: Deployment
apiVersion: apps/v1
metadata:
name: mysql-dev-exporter
namespace: common
labels:
app: mysql-dev-exporter
annotations:
deployment.kubernetes.io/revision: '2'
kubesphere.io/creator: daizhiqiang
spec:
replicas: 1
selector:
matchLabels:
app: mysql-dev-exporter
template:
metadata:
creationTimestamp: null
labels:
app: mysql-dev-exporter
annotations:
kubesphere.io/creator: daizhiqiang
prometheus.io/path: /metrics
prometheus.io/port: '9104'
prometheus.io/scrape: 'true'
spec:
volumes:
- name: mysql-config
configMap:
name: mysql-dev-exporter-config
defaultMode: 420
containers:
- name: mysqld-dev-exporter
image: 'prom/mysqld-exporter:v0.15.0'
args:
- '--config.my-cnf=/etc/mysql/my.cnf'
ports:
- name: metrics
containerPort: 9104
protocol: TCP
resources:
limits:
cpu: 50m
memory: 128Mi
requests:
cpu: 10m
memory: 64Mi
volumeMounts:
- name: mysql-config
readOnly: true
mountPath: /etc/mysql
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: IfNotPresent
securityContext:
runAsUser: 65534
runAsNonRoot: true
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
restartPolicy: Always
terminationGracePeriodSeconds: 30
dnsPolicy: ClusterFirst
securityContext: {}
schedulerName: default-scheduler
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 25%
revisionHistoryLimit: 10
progressDeadlineSeconds: 600
1.3 添加mysqld-exporter Service 配置
kind: Service
apiVersion: v1
metadata:
name: mysql-dev-exporter
namespace: common
labels:
app: mysql-dev-exporter
annotations:
kubesphere.io/creator: daizhiqiang
spec:
ports:
- name: metrics
protocol: TCP
port: 9104
targetPort: 9104
nodePort: 30596
selector:
app: mysql-dev-exporter
clusterIP: 10.233.15.38
clusterIPs:
- 10.233.15.38
type: NodePort
sessionAffinity: None
externalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
internalTrafficPolicy: Cluster
1.4 添加mysql-scrape.yaml 配置
additional-scrape-configs -> mysql-scrape.yaml
- job_name: 'mysql-187'
static_configs:
- targets: ['192.168.168.207:30596']
labels:
instance: 'mysql-187'
environment: 'prod'
scrape_interval: 15s
scrape_timeout: 10s
1.5 grafana显示
host 选择: mysql-187
