天天看点

对于k8s微服务的性能测试监控平台搭建

之前有写过对于传统项目的性能测试监控,但是对于目前市场占比已经很低,大部分项目使用k8s,今天讲一下对于k8s如何去监控。

对于k8s的监控我们所有的操作都要在master下进行。

一、部署grafana

作者会提供一个grafana的yaml文件,对于文件进行适配项目的修改即可

1、修改配置文件

 spec:
      containers:
      - name: grafana
    #镜像版本号
        image: grafana/grafana:7.2.1
        ports:
        - containerPort: 3000
        env:
        - name: GF_SECURITY_ADMIN_USER
      # 登录账号
          value: admin
        - name: GF_SECURITY_ADMIN_PASSWORD
      #登录密码
          value: admin123
        volumeMounts:
        - mountPath: /var/lib/grafana/abc
          name: storage
      volumes:
      - name: storage
        nfs:
      #master的 ipv4地址
          server: 192.0.0.1
          path: /root/nfs-share      

2、部署grafana

创建garafana pod

kubectl create -f /root/k8s/node_exporter.yaml      

二、部署mysql_exporter

由于mysql_exporter是对mysql数据库进行监控,我们需要把mysql_exporter和mysql数据库打包在一个pod中,所以要对项目原有的mysql yaml文件进行update

      - name: mysql-exporter
        env:
        - name: DATA_SOURCE_NAME
      # 数据库账号:密码@(地址:端口)
          value: root:123@(127.0.0.1:3306)/
        image: prom/mysqld-exporter
        imagePullPolicy: Always
        name: mysql-exporter
        ports:
        - containerPort: 9104
          protocol: TCP
      volumes:
      - name: mysql-data
        nfs:
      #修改为master的ipv4地址
          server: 192.168.19.133
          path: /root/nfs-share
---
apiVersion: v1
kind: Service
metadata:
  name: mysql
  labels:
    name: mysql
spec:
  type: NodePort
  ports:
  - port: 3306
    nodePort: 30306
    targetPort: 3306
    name: mysql
  - port: 9104
    protocol: TCP
    targetPort: 9104
    nodePort: 30304
    name: mysql-exporter
  selector:
    name: mysql      

上面的为新增内容(有部分会与当前已有的重复),新增后重建pod。

如果有多个节点请在replicas : 后面增加节点数

三、部署node_exporter

apiVersion: apps/v1
# DaemonSet 方式会在所有绑定master的节点下安装
kind: DaemonSet
metadata:
  name: node-exporter
  namespace: kube-system
  labels:
    k8s-app: node-exporter
spec:
  selector:
    matchLabels:
      k8s-app: node-exporter
  template:
    metadata:
      labels:
        k8s-app: node-exporter
    spec:
      containers:
      - image: prom/node-exporter
        name: node-exporter
        ports:
        - containerPort: 9100
          protocol: TCP
          name: http
---
apiVersion: v1
kind: Service
metadata:
  labels:
    k8s-app: node-exporter
  name: node-exporter
  namespace: kube-system
spec:
  ports:
  - name: http
    port: 9100
    nodePort: 31672
    protocol: TCP
  type: NodePort
  selector:
    k8s-app: node-exporter      

创建node_exporter pod:

kubectl create -f /root/k8s/node_exporter.yaml      

四、部署Prometheus

1.修改configmap.yaml文件

    - job_name: k8s-nodes
      static_configs:
      - targets:

        - 192.168.1.180:31672
     # master 节点ip
        - 192.168.1.181:31672
        # node1 节点ip
        - 192.168.1.182:31672
        # node2 节点ip
    - job_name: mysql
      static_configs:
      - targets:
        - 192.168.1.180:30304
     # master 节点ip      

2.访问prometheus,http://ip:30003/targets

3.访问grafana并配置http://ip:31000/login,用户名和密码为创建pod时设置的账号密码。

4.配置Prometheus数据源 http://ip:30003 

  30003端口是在配置文件prometheus.svc.yml中配置

导入模板后的效果给大家看一下:

对于k8s微服务的性能测试监控平台搭建

 五、新增节点监控操作

如果集群中新增一个节点,此时我们的监控已经完成,我们应该如何去操作

1.当一个新的节点新增到集群中,node_exporter会自动在新的节点下创建一个pod,所以这里不需要额外操作

2.需要对Prometheus的配置文件进行uodate:

  修改配置文件configmap.yaml:

    - job_name: k8s-nodes
      static_configs:
      - targets:
        - 192.168.1.180:31672
        - 192.168.1.181:31672
        - 192.168.1.182:31672
        # 增加新的节点地址
        - 192.168.1.183:31672      

  然后执行下面的操作:

kubectl replace -f configmap.yaml #替换配置文件
kubectl delete -f prometheus.deploy.yml#删除服务
kubectl create -f prometheus.deploy.yml #重建服务      

此时,新的节点监控添加完成

文章中提到的所有yaml文件分享在下面地址中,可以自行下载,如果需要监控模板可以发送私信索要,如果还不清楚如何导入模板可以查看历史随笔。