当前位置: 首页 > backend >正文

prometheus-operator部署服务监控其他节点mysql服务

资源清单
名称ip地址端口号
mysql服务192.168.59.213306
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相关信息

接入grafana.(自己到grafana官网找到相关模板,关联一下就可以.这里不做专门解释.)

http://www.xdnf.cn/news/870.html

相关文章:

  • 重构・协同・共生:传统代理渠道数字化融合全链路解决方案
  • 如何远程访问家中服务器-FRP内网穿透详细
  • 获取电脑信息(登录电脑的进程、C盘文件信息、浏览器信息、IP)
  • Windows网络及服务:制作系统盘
  • idea30天使用无限使用
  • uni-app 状态管理深度解析:Vuex 与全局方案实战指南
  • Android audio_policy_configuration.xml加载流程
  • 云原生--基础篇-2--云计算概述(云计算是云原生的基础,IaaS、PaaS和SaaS服务模型)
  • 在 UE5 编辑器中,由于游戏设置 -> EV100 设置,点击播放前后的光照不同。如何保持点击播放前后的光照一致?
  • 如何在腾讯云Ubuntu服务器上部署Node.js项目
  • SVM(支持向量机)
  • Ray Tracing(光线追踪)与 Ray Casting(光线投射)
  • 【pytorch】torch.nn.Unfold操作
  • PyTorch实现糖尿病预测的CNN模型:从数据加载到模型部署全解析【N折交叉验证、文末免费下载】
  • Android端使用无障碍服务实现远程、自动刷短视频
  • 流量抓取工具(wireshark)
  • 大文件分片上传进阶版(新增md5校验、上传进度展示、并行控制,智能分片、加密上传、断点续传、自动重试),实现四位一体的网络感知型大文件传输系统‌
  • 二叉树操作与遍历实现
  • 详细介绍:MCP(大模型上下文协议)的架构与组件,以及MCP的开发实践
  • VTK官方C++ demo1
  • 论文分享:【2024 CVPR】Vision-and-Language Navigation via Causal Learning
  • Harbor对接非AWS对象存储
  • 零基础学Python——第六章:Python标准库
  • mongodb 存储数据的具体实现方式
  • 计算机视觉中的正则化:从理论到实践的全面解析
  • 缓存设计模式
  • HTTP与HTTPS的区别
  • 固定资产全生命周期管理:采购至报废的高效管理路径
  • CC注入Tomcat Upgrade/Executor/WebSocket内存马
  • 【网络安全】CI/CD 流水线漏洞