prometheus-operator部署服务监控其他节点mysql服务
名称 | ip地址 | 端口号 |
---|---|---|
mysql服务 | 192.168.59.21 | 3306 |
k8s集群节点 | 192.168.59.90 |
说明一下:
这里我使用的是单节点部署k8s服务仅作为测试使用,生产环境根据实际情况做修改.
创建mysql用户,
192.168.59.21
用于exporter到mysql服务上进行数据采集.
创建用户并且授权该用户系统表权限:-- 创建用户并允许远程连接
CREATE USER 'app'@'%' IDENTIFIED BY 'mysql';
授权app用户,仅允许对mysq数据库下的所有表进行select权限.
GRANT SELECT ON `mysql`.* TO 'app'@'%';-- 刷新权限
FLUSH PRIVILEGES;
部署mysqld-exporter
创建本地my.cnf文件,用户挂载到docker-compose中就,进行配置文件持久化
#创建my.cnf配置文件
[root@prometheus-operator /zpf/prometheus/exporter/docker-compose]$cat my.cnf
[client]
host=192.168.59.21
user=app
password=mysql
port=3306
创建docker-compose文件,部署
[root@prometheus-operator /zpf/prometheus/exporter/docker-compose]$cat docker-compose.yaml
version: '3.3'
services:mysqld-exporter:image: registry.cn-beijing.aliyuncs.com/scorpio/mysqld-exporter:0.17.2container_name: mysqld-exporterrestart: alwayscommand:- '--collect.info_schema.processlist'- '--collect.info_schema.innodb_metrics'- '--collect.info_schema.tablestats'- '--collect.info_schema.tables'- '--collect.info_schema.userstats'- '--collect.engine_innodb_status'- '--config.my-cnf=/my.cnf'volumes:- ./my.cnf:/my.cnfports:- 9104:9104#这里说明下,image镜像地址是我自己的阿里云容器镜像仓库的地址,根据个人需要修改成dockerhub上的地址,也可以吧dockerhub上的镜像拉倒本地使用.
启动docker-compose
并查看相关状态
[root@prometheus-operator /zpf/prometheus/exporter/docker-compose]$docker-compose up -d
[+] Running 1/2⠧ Network docker-compose_default Created 0.7s✔ Container mysqld-exporter Started#启动成功查看端口
[root@prometheus-operator /zpf/prometheus/exporter/docker-compose]$netstat -lntup|grep 9104
tcp 0 0 0.0.0.0:9104 0.0.0.0:* LISTEN 897/docker-proxy
tcp6 0 0 :::9104 :::* LISTEN 903/docker-proxy
查看是否有数据返回
#查看是否有数据返回
[root@prometheus-operator /zpf/prometheus/exporter/docker-compose]$curl 192.168.59.90:9104
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>MySQLd Exporter</title><style>body {font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;margin: 0;
}
header {background-color: #e6522c;color: #fff;font-size: 1rem;padding: 1rem;
}
main {padding: 1rem;
}
label {display: inline-block;width: 0.5em;
}
#pprof {border: black 2px solid;padding: 1rem;width: fit-content;
}</style></head><body><header><h1>MySQLd Exporter</h1></header><main><h2>Prometheus Exporter for MySQL servers</h2><div>Version: (version=0.17.2, branch=HEAD, revision=e84f4f22f8a11089d5f04ff9bfdc5fc042605773)</div><div><ul><li><a href="/metrics">Metrics</a></li></ul></div><div id="pprof">Download a detailed report of resource usage (pprof format, from the Go runtime):<ul><li><a href="debug/pprof/heap">heap usage (memory)</a><li><a href="debug/pprof/profile?seconds=60">CPU usage (60 second profile)</a></ul>To visualize and share profiles you can upload to <a href="https://pprof.me" target="_blank">pprof.me</a></div></main></body>
</html>
k8s上部署svc,endpoint,以及ServiceMonitoring相关资源,
apiVersion: v1
kind: Service
metadata:name: mysql-exporternamespace: monitoring # 假设放在 monitoring 命名空间labels:app: mysql-exporter
spec:ports:- name: http-metricsport: 9104targetPort: 9104protocol: TCPtype: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:name: mysql-exporternamespace: monitoring
subsets:- addresses:- ip: 192.168.59.90 # 替换为运行 MySQL Exporter 的节点 IPports:- name: http-metricsport: 9104protocol: TCP
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:name: mysql-exporternamespace: monitoring
spec:endpoints:- port: http-metrics # 必须匹配 Service 中的端口名称interval: 15sselector:matchLabels:app: mysql-exporter # 匹配 Service 的标签namespaceSelector:matchNames:- monitoring # 必须与 Service 同命名空间
----
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:name: mysql-exporternamespace: monitoring
spec:endpoints:- port: http-metrics # 必须匹配 Service 中的端口名称interval: 15sselector:matchLabels:app: mysql-exporter # 匹配 Service 的标签namespaceSelector:matchNames:- monitoring # 必须与 Service 同命名空间
验证资源创建是否成功
#svc创建结果
[root@prometheus-operator /zpf/prometheus/exporter/docker-compose]$kubectl get svc -A|grep mysql
monitoring mysql-exporter ClusterIP 10.233.22.17 <none> 9104/TCP 12m
#endpoint创建结果
[root@prometheus-operator /zpf/prometheus/exporter/docker-compose]$kubectl get ep -A|grep mysql
monitoring mysql-exporter 192.168.59.90:9104 12m
#ServiceMonitor创建结果
[root@prometheus-operator /zpf/prometheus/exporter/docker-compose]$kubectl get ServiceMonitor -A|grep mysql
monitoring mysql-exporter 13m
验证是否有数据返回
#这里已经差动了svc的ip以及后端代理的端口,使用ip+端口信息验证数据返回结果
[root@prometheus-operator /zpf/prometheus/exporter/docker-compose]$curl 10.233.22.17:9104
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>MySQLd Exporter</title><style>body {font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;margin: 0;
}
header {background-color: #e6522c;color: #fff;font-size: 1rem;padding: 1rem;
}
main {padding: 1rem;
}
label {display: inline-block;width: 0.5em;
}
#pprof {border: black 2px solid;padding: 1rem;width: fit-content;
}</style></head><body><header><h1>MySQLd Exporter</h1></header><main><h2>Prometheus Exporter for MySQL servers</h2><div>Version: (version=0.17.2, branch=HEAD, revision=e84f4f22f8a11089d5f04ff9bfdc5fc042605773)</div><div><ul><li><a href="/metrics">Metrics</a></li></ul></div><div id="pprof">Download a detailed report of resource usage (pprof format, from the Go runtime):<ul><li><a href="debug/pprof/heap">heap usage (memory)</a><li><a href="debug/pprof/profile?seconds=60">CPU usage (60 second profile)</a></ul>To visualize and share profiles you can upload to <a href="https://pprof.me" target="_blank">pprof.me</a></div></main></body>
</html>#验证成功
这里的ServiceMonitor就是接入prometheus-operator的配置,
所以通过页面应该是可以看到mysql的相关指标信息.
prometheus监控页面成功显示mysql相关信息