k8s容器内部通过Prometheus Operator部署MySQL Exporter监控k8s集群外部的MySQL

k8s容器内部通过Prometheus Operator部署MySQL Exporter监控k8s集群外部的MySQL

在按照下面步骤操作之前,请先确保服务器已经部署k8s,prometheus,prometheus operator,关于这些环境的部署,可以自行查找相关资料安装部署,本文档便不在此赘述。

关于prometheus监控这部分,大致的系统架构图如下,感兴趣的同学可以自行研究一下,这里就不再具体说明。

k8s容器内部通过Prometheus Operator部署MySQL Exporter监控k8s集群外部的MySQL_第1张图片

1、问题说明

由于部分业务系统使用MySQL数据库存储数据,同时该数据库部署在k8s集群之外,但是prometheus operator部署在k8s集群内部,这里就涉及到了如何监控k8s集群外部的MySQL实例的问题。MySQL的监控可以使用prometheus的mysql-exporter暴露metrics,对于mysql处在k8s集群外部的场景,可以在创建Deployment时指定监控的数据源实例的IP地址为MySQL所在主机的IP地址,以此来暴露外部MySQL服务到k8s集群中。

2、部署操作

2.1、创建监控数据库的用户并授权

这里主要是创建mysql-exporter连接mysql需要的用户,同时并授予相应权限,操作SQL如下:

复制代码

查看数据库密码长度,确保密码符合要求

SHOW VARIABLES LIKE 'validate_password%';

创建用户并授权,这里以exporter用户为例,密码长度与上述查询长度保持一致

create user 'exporter'@'%' identified with mysql_native_password by 'admin@321';
GRANT ALL PRIVILEGES ON *.* TO 'exporter'@'%' with grant option;
flush privileges;

2.2、k8s集群创建mysql-exporter的Deployment

创建mysql-exporter容器,利用上一步创建的账户密码信息,通过DATA_SOURCE_NAME环境变量传入连接mysql实例的信息,注意需要暴露mysql-exporter的9104端口。

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql-slave02
  namespace: monitoring
spec:
  replicas: 1
  selecto

你可能感兴趣的:(kubernetes,prometheus,mysql)