专栏首页测试技术圈grafana&prometheus生产级容器化监控-3:监控mysql

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

目录

(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

本文分享自微信公众号 - V社 北京社(SoftwareTesters)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

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

    prometheus是时序数据库,相比传统数据库更适合存储监控类数据;是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统;同时也...

    Criss@陈磊
  • 测者的性能测试手册:故障诊断工具Glassbox在Tomcat上应用

    glassBox是一个自动故障排除和监控的应用程序,通过一次点击诊断常见的问题。无论是在生产或测试,你都可以拖放到您现有的Java应用服务器中。它故障排除的知识...

    Criss@陈磊
  • 故障诊断工具Glassbox在Tomcat上应用

    glassBox是一个自动故障排除和监控的应用程序,通过一次点击诊断常见的问题。无论是在生产或测试,你都可以拖放到您现有的Java应用服务器中。它故障排除的知识...

    Criss@陈磊
  • grafana&prometheus生产级容器化监控-3:监控mysql

    1.prometheus-storage-mysql-configmap.yaml

    千里行走
  • Prometheus监控工具安装部署

    Prometheus是一个开放性的监控解决方案,其灵感来自于Google的Borgmon,于2016年5月继k8s后加入CNCF基金会。Prometheus具备...

    Eights
  • CentOS7下简单搭建Prometheus+Grafana监控系统

    Prometheus is an open-source systems monitoring and alerting toolkit originally ...

    yuanfan2012
  • centos7安装prometheus和node_exporter

    1、创建新用户并下载Prometheus Prometheus服务将以非root用户身份运行。 所以需要在系统上创建一个新的非root用户。 将创建一个名为“...

    菲宇
  • 开发环境准备(一)

    官方推荐的是mongodb,mongodb也看了点,本身对数据库这块就不太熟,所以我也是从mysql开始,这里只介绍几种mysql工具

    RtyXmd
  • 构建狂拽炫酷屌的 MySQL 监控平台

    prometheus+grafana 对于现在这个时间点来说,相信很多同行都应该已经开始玩起来了,当仍然可能有一部分人可能还不知道prometheus+graf...

    田帅萌
  • Centos7.X 搭建Prometheus+node_exporter+Grafana实时监控平台

    主要模块包含: Server, Exporters, Pushgateway, PromQL, Alertmanager, WebUI 等。

    小菠萝测试笔记

扫码关注云+社区

领取腾讯云代金券