监控mysql数据变化_Kubernetes kubeprometheus中添加自定义监控项监控MySQL

fa50dc65e8980751fe10526b8113e356.png

以前传统方式去监控一个mysql服务,首先需要安装mysql-exporter,获取mysql metrics,并且暴露一个Port端口,等待prometheus服务来拉取监控信息,然后去Prometheus Server的prometheus.yaml文件中在scarpe_config中添加mysql-exporter的job,配置mysql-exporter的地址和端口等信息,再然后重启Prometheus服务,就完成添加一个mysql监控的任务。

现在以Prometheus-Operator的方式来部署Prometheus,当需要添加一个mysql服务监控会怎么做,首先第一步和传统方式一样,部署一个mysql-exporter来获取mysql监控项,然后编写一个ServiceMonitor通过labelSelector选择刚才部署的mysql-exporter,由于Operator在部署Prometheus的时候默认指定了Prometheus选择label为:prometheus: kube-prometheus的ServiceMonitor,所以只需要在ServiceMonitor上打上prometheus: kube-prometheus标签就可以被Prometheus选择了,完成以上两步就完成了对mysql服务的监控,不需要改Prometheus配置文件,也不需要重启Prometheus服务,Operator观察到ServiceMonitor发生变化,会动态生成Prometheus配置文件,并保证配置文件实时生效。

添加自定义监控项流程

  1. 创建ServiceMonitor对象,用于Kube-Prometheus添加监控项

  2. 创建Service对象,提供metrics数据接口,并将其和ServiceMonitor关联

  3. 确保Service对象可以正确获取metrics数据

如何编写ServiceMonitor

ServiceMonitor是一个kubernetes的自定义资源,所以得遵循Kubernetes ServiceMonitor编写规范,这里通过动态添加一个mysql监控的示例来演示如何编写ServiceMonitor。

先决条件:

1. 已搭建好kubernetes集群 (Kubernetes 1.18.2集群部署 (单Master)+docker)

2. 已通过使用prometheus-operator来部署好了Prometheus服务  (此处加链接)

3. 已经成功安装好了mysql  ( Kubernetes Prometheus监控MySQL  ——安装mysql 用于监控测试,创建账号并授权)

在满足上述先决条件的情况下,首先打开prometheus server的界面,如下图,可以在Targets下看到已经有prometheus和kubernetes集群自身的监控了,目前还没有mysql监控。

a14660409a2e774327477667a2fdff76.png

接下来在kubernetes集群中添加mysql监控的exporter:prometheus-mysql-exporter 

https://github.com/helm/charts/tree/master/stable/prometheus-mysql-exporter

这里采用helm的方式安装prometheus-mysql-exporter,按照github上的步骤进行安装。

预先安装helm (参考文章  加链接)

#验证helm 和 tiller版本[root@k8s-master01 helm]# helm versionClient: &version.Version{
    SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}Server: &version.Version{
    SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"

安装方法1:

修改values.yaml中的datasource为安装在kubernetes中mysql的地址,然后执行命令

helm install --name my-release -f values.yaml stable/prometheus-mysql-exporter

安装方法2:(选择此方法)

Specify each parameter using the --set key=value[,key=value] argument to helm install. For example,

添加helm仓库地址[root@k8s-master01 helm]# helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts[root@k8s-master01 helm]# helm repo add apphub https://apphub.aliyuncs.com[root@k8s-master01 helm]# helm repo add azure http://mirror.azure.cn/kubernetes/charts查看helm仓库列表[root@k8s-master01 helm]# helm repo listNAME    URL                                                   stable  https://kubernetes.oss-cn-hangzhou.aliyuncs.com/chartslocal   http://127.0.0.1:8879/charts                          apphub  https://apphub.aliyuncs.com                           azure   http://mirror.azure.cn/kubernetes/charts更新helm仓库chart[root@k8s-master01 helm]# helm repo updateHang tight while we grab the latest from your chart repositories......Skip local chart repository...Successfully got an update from the "stable" chart repository...Successfully got an update from the "apphub" chart repository...Successfully got an update from the "azure" chart repositoryUpdate Complete. ⎈ Happy Helming!⎈查找chart prometheus-mysql-exporter[root@k8s-master01 helm]# helm search  prometheus-mysql-exporterNAME                              CHART VERSION  APP VERSION  DESCRIPTION                                                 apphub/prometheus-mysql-exporter  0.5.2          v0.11.0      A Helm chart for prometheus mysql exporter with cloudsqlp...azure/prometheus-mysql-exporter   0.6.0          v0.11.0      A Helm chart for prometheus mysql exporter with cloudsqlp...kubernetes集群中已有成功安装好mysql数据库,mysql信息如下:mysql.user="mysql_exporter1",mysql.pass="Abcdef123",mysql.host="localhost",mysql.port="3306"安装chart prometheus-mysql-exporter[root@k8s-master01 helm]# helm install --namespace monitoring --name my-release apphub/prometheus-mysql-exporter --set mysql.user="mysql_exporter1",mysql.pass="Abcdef123",mysql.host="localhost",mysql.port="3306" NAME:   my-releaseLAST DEPLOYED: Wed Jul 15 14:35:46 2020NAMESPACE: monitoringSTATUS: DEPLOYEDRESOURCES:==> v1/DeploymentNAME                                  READY  UP-TO-DATE  AVAILABLE  AGEmy-release-prometheus-mysql-exporter  0/1    1           0          2s==> v1/Pod(related)NAME                                                   READY  STATUS             RESTARTS  AGEmy-release-prometheus-mysql-exporter-58ff67f687-22qpk  0/1    ContainerCreating  0         1s==> v1/SecretNAME                                  TYPE    DATA  AGEmy-release-prometheus-mysql-exporter  Opaque  1     2s==> v1/ServiceNAME                                  TYPE       CLUSTER-IP     EXTERNAL-IP  PORT(S)   AGEmy-release-prometheus-mysql-exporter  ClusterIP  10.101.57.225  <none>       9104/TCP  2sNOTES:1. Get the application URL by running these commands:  export POD_NAME=$(kubectl get pods --namespace monitoring -l "app=prometheus-mysql-exporter,release=my-release" -o jsonpath="{.items[0].metadata.name}")  kubectl port-forward $POD_NAME 8080:9104  echo "Visit http://127.0.0.1:8080 to use your application"

接下来查看刚才安装的mysql-exporter的service:

[root@k8s-master01 helm]# kubectl get svc -n monitoringNAME                                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGEalertmanager-main                      NodePort    10.96.186.209   <none>        9093:30093/TCP       
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值