首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >grafana&prometheus生产级容器化监控-3:监控mysql

grafana&prometheus生产级容器化监控-3:监控mysql

作者头像
Criss@陈磊
发布2019-10-28 17:36:39
7080
发布2019-10-28 17:36:39
举报

目录

(1).前置阅读

(2).前置准备

(3).容器化生产规划

(4).使用mysqld-exporter监控mysql实例

1.镜像选择

2.容器化配置

(5).容器化步骤

(6).关键配置

1.prometheus-storage-mysql-configmap.yaml

2.datasource.yml

3.provision.yml

4.exporter-deployment-storage-mysql-apollo.yaml

(7).特别注

(8).最终效果

(9).相关文章

(1).前置阅读

需要先行部署grafana/prometheus,以及合理拓扑,参见:

grafana&prometheus生产级容器化监控-1:生产级容器化

(2).前置准备

容器化mysql数据库实例,可以使用:

https://github.com/hepyu/k8s-app-config/tree/master/yaml/min-cluster-allinone/mysql-min

参考文章:

kubernetes-5:使用helm与yaml两种方式进行mysql容器化

创建exporter专用用户:

CREATE USER 'exporter'@'%' IDENTIFIED BY 'exporterpwd';

GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'exporter'@'%';

GRANT SELECT ON performance_schema.* TO 'exporter'@'%';

在本例中,图简略,使用的是之前已经存在的用户密码:apollo/admin,但生产环境必须使用新的mysql用户,这样更加安全可靠,也方便监控。

(3).容器化生产规划

原始图片位于:

https://github.com/hepyu/k8s-app-config/blob/master/product/standard/grafana-prometheus-pro/images/grafana-prometheus%E7%94%9F%E4%BA%A7%E7%BA%A7%E5%AE%9E%E8%B7%B5.jpg

如上图所示:

容器化多个prometheus实例

由于当数据量很大(metrics很多)或者grafana选择的时间跨度很大时,prometheus的吞吐性能会很有问题,再加上会有很多人通过grafana查看各业务数据,如果生产环境只部署一个prometheus,肯定是有问题的,prometheus会经常性崩溃。

同时,这样也可以设置不同的数据保存时间,比如对于mq来说,我希望保留更长时间的数据。

(4).使用mysqld-exporter监控mysql实例

1.镜像选择

使用percona公司的mysqld-exporter组件监控Mysql数据库实例:

https://github.com/prometheus/mysqld_exporter

注:

percona出了很多关于mysql的产品,比如binlog分析等工具。

笔者提供mysqld-exporter的容器化配置,位于:

https://github.com/hepyu/k8s-app-config/tree/master/product/standard/grafana-prometheus-pro/exporter-storage-mysql

2.容器化配置

建立新的prometheus实例,专门用于存放mysql实例的metrics,同时dashboards导入方式选择provisioning方式(也可以选择grafana的plugin的方式导入percona-mysql的dashboard,但是这种方式无法自定义目录)。

笔者提供生产级容器化配置,位于:

https://github.com/hepyu/k8s-app-config/tree/master/product/standard/grafana-prometheus-pro

prometheus-storage-mysql容器化配置:

https://github.com/hepyu/k8s-app-config/tree/master/product/standard/grafana-prometheus-pro/prometheus-storage-mysql

dashboard位置,从percona的grafana-dashboard中拷贝出mysql相关的dashboards:

https://github.com/hepyu/k8s-app-config/tree/master/product/standard/grafana-prometheus-pro/grafana/provisioning/dashboards/storage-mysql

(5).容器化步骤

大体步骤,注意本例配置默认使用local pv(生产环境需要换成云存储),需要使用者自行创建。

1.cd https://github.com/hepyu/k8s-app-config/tree/master/product/standard/grafana-prometheus-pro

#Kubectl apply -f grafana-prometheus-image-repo-secret.yaml (生产环境使用)

Kubectl apply -f grafana-prometheus-namespace.yaml

2.cd grafana-prometheus-pro/prometheus-storage-mysql

Kubectl apply -f .

3.cd grafana-prometheus-pro/grafana

Kubectl apply -f .

(6).关键配置

1.prometheus-storage-mysql-configmap.yaml

相对路径:prometheus-storage-mysql/prometheus-storage-mysql-configmap.yaml

配置服务发现,从k8s的那些pod拉取metrics:

label_exporter=mysql, namespace=monitor的pod

relabel_configs:
  - source_labels: [__meta_kubernetes_pod_label_exporter, __meta_kubernetes_namespace]
    action: keep
    regex: mysql;monitor

2.datasource.yml

相对路径:grafana/provisioning/datasources

将数据库prometheus-storage-mysql放到grafana的数据库列表中:

 - name: prometheus-storage-mysql
   type: prometheus
   access: proxy
   orgId: 1
   url: http://prometheus-storage-mysql:9090
   isDefault: false
   jsonData:
      tlsAuth: false
      tlsAuthWithCACert: false

3.provision.yml

相对路径:grafana/provisioning/dashboards

将mysql-dashboards放到grafana的dashboards列表中:

- name: 'storage-mysql'
   orgId: 1
   folder: 'storage-mysql'
   folderUid: ''
   type: file
   options:
     path: /var/lib/grafana/k8s-app-config/product/standard/grafana-prometheus-pro/grafana/provisioning/dashboards/storage-mysql 

4.exporter-deployment-storage-mysql-apollo.yaml

相对路径:exporter-storage-mysql/exporter-deployment-storage-mysql-apollo.yaml

配置要监控的目标mysql实例:

containers:
  - name: exporter-mysql-apollo
    #生产环境换成自己的镜像仓库
    image: prom/mysqld-exporter:v0.11.0
    env:
    - name: DATA_SOURCE_NAME
      value: "apollo:admin@(mysql-min.mysql-min:3306)/"

(7).特别注意

需要注意,如果使用的是云RDS,关于mysql宿主机的监控dashboard是没有数据的,如果是独立部署的mysql,mysqld_exporter一定要和mysql实例在一台机器,这样才能收集到mysql宿主机的信息,比如磁盘,io等。

(8).最终效果

(9).相关文章

percona官方grafana-dashboards:

https://github.com/percona/grafana-dashboards

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 质问 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档