K8s

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

2019-07-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 就可以查看实时监控数据,如下图:


上一篇下一篇

猜你喜欢

热点阅读