美文网首页K8s
Prometheus 入门(三):监控MySQL的k8s实现

Prometheus 入门(三):监控MySQL的k8s实现

作者: 星光下的胖子 | 来源:发表于2019-07-05 17:05 被阅读106次

    目录:
      1. mysqld-exporter 镜像下载
      2. yaml 文件编写
      3. Grafana 导入 MySQL 的 dashboard 仪表盘


    一.mysqld-exporter 镜像下载

    1.镜像下载

    下载官网地址:https://hub.docker.com/r/prom/mysqld-exporter

    docker pull prom/mysqld-exporter
    
    2.push 到镜像仓库

    本地 Harbor 镜像仓库地址 172.18.231.30,将镜像推送到仓库的相关命令如下:

    #镜像打成tar包
    docker save prom/mysqld-exporter:latest >  ./mysqld-exporter.tar
    #加载tar包为镜像
    docker load -i mysqld-exporter.tar
    #打tag标签
    docker tag prom/mysqld-exporter:latest 172.18.231.30:5000/si-tech/mysqld-exporter:1.0
    #登录本地Harbor镜像仓库
    docker login 172.18.231.30
    ***
    *********
    #本地镜像推送到Harbor仓库
    docker push 172.18.231.30:5000/si-tech/mysqld-exporter:1.0
    

    由下图可见,成功将镜像 push 到我们的 Harbor 镜像仓库:


    二.yaml 文件编写并执行

    定义 DATA_SOURCE_NAME 环境变量,DATA_SOURCE_NAME 的账号需要对数据库有读写权限,否则权限问题会导致无法获取数据。
    mysql-exporter.yaml:

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: mysql-exporter-1562292684314
    spec:
      replicas: 1
      selector:
        matchLabels:
            app: mysql-exporter-1562292684314
      template:
        metadata:
          labels:
            app: mysql-exporter-1562292684314
        spec:
          containers:
            - name: mysql-exporter
              image: 172.18.231.30:5000/si-tech/mysqld-exporter:1.0
              imagePullPolicy: IfNotPresent
              ports:
              - name: mysqlexporter
                containerPort: 9104
                protocol: TCP
              env:
              - name: "DATA_SOURCE_NAME"
                value: "root:root123@(172.21.1.21:30838)/"
              resources:
                requests:
                  cpu: 0.2
                  memory: 200Mi
                limits:
                  cpu: 0.2
                  memory: 200Mi
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: mysql-exporter-svc-1562292684314
      labels:
        app: mysql-exporter-svc-1562292684314
    spec:
      ports:
      - port: 9104
        targetPort: 9104
        name: mysqlexporter
      selector:
        app: mysql-exporter-1562292684314
      type: NodePort
    ---
    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      labels:
        k8s-app: mysql-exporter-sm-1562292684314
      name: mysql-exporter-sm-1562292684314
    spec:
      endpoints:
      - interval: 15s
        port: mysqlexporter
        path: /metrics
      namespaceSelector:
        matchNames:
        - default
      jobLabel: app
      selector:
        matchLabels:
          app: mysql-exporter-svc-1562292684314
    

    Prometheus 与 ServiceMonitor 及exporter的 Service的关系图解如下:


    执行 mysql-exporter.yaml 文件,成功如下所示:

    三. Grafana 导入 MySQL 的 dashboard

    下载 MySQL 的 dashboard 文件 MySQL_Overview.json,下载地址:https://github.com/percona/grafana-dashboards/tree/master/dashboards

    登录 Grafana 首页,并导入 MySQL_Overview.json,创建 MySQL 的 dashboard。


    重新配置 Data Source 数据源。
    MySQL_Overview.json 中默认的 Data Source 为 Prometheus,我们改为自己的 Prometheus 数据源。

    最后,我们打开 MySQL 的 dashboard 就可以查看实时监控数据,如下图:


    相关文章

      网友评论

        本文标题:Prometheus 入门(三):监控MySQL的k8s实现

        本文链接:https://www.haomeiwen.com/subject/tbbccctx.html