【问题标题】:NFS Persistant Volume monitoring in prometheusprometheus 中的 NFS 持久卷监控
【发布时间】:2020-10-16 16:11:30
【问题描述】:

我有一个 NFS 类型的持久卷,其中有一个在本地运行的源服务器。此 NFS 服务器正在使用 GCP 上的持久卷声明。一切运行良好,但是由于某种原因我无法监控 Prometheus 上的 PVC。它只是没有出现。

问题:如何监控此类磁盘的使用情况?我需要安装一些驱动程序或配置自定义抓取吗?

这是我尝试过的 PromQL 查询:

kubelet_volume_stats_capacity_bytes
kubelet_volume_stats_available_bytes
node_filesystem_size_bytes

注意:我可以在这里看到音量,但我只能看到它的容量,而不是使用量。

kube_persistentvolume_capacity_bytes

这是 NFS 服务器的配置文件:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nfs-server
spec:
  replicas: 1
  selector:
    matchLabels:
      role: nfs-server
  template:
    metadata:
      labels:
        role: nfs-server
    spec:
      containers:
      - name: nfs-server
        image: gcr.io/google_containers/volume-nfs:0.8
        ports:
          - name: nfs
            containerPort: 2049
          - name: mountd
            containerPort: 20048
          - name: rpcbind
            containerPort: 111
        securityContext:
          privileged: true
        volumeMounts:
          - mountPath: /exports
            name: nfs-pvc
      volumes:
        - name: nfs-pvc
          gcePersistentDisk:
            pdName: nfs-disk
            fsType: ext4

这是 PV 配置:

Status:          Bound
Claim:           default/nfs-pvc
Reclaim Policy:  Retain
Access Modes:    RWX
VolumeMode:      Filesystem
Capacity:        1000Gi
Node Affinity:   <none>
Message:
Source:
    Type:      NFS (an NFS mount that lasts the lifetime of a pod)
    Server:    nfs-server.default.svc.cluster.local
    Path:      /
    ReadOnly:  false

这是 PVC 配置:

Name:          nfs-pvc
Namespace:     default
StorageClass:
Status:        Bound
Volume:        nfs-pv
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      1000Gi
Access Modes:  RWX
VolumeMode:    Filesystem
Mounted By:    ...

【问题讨论】:

  • 我发现了这个known issue on github,可能类似。如果用例相似,我建议您在此处发布。

标签: kubernetes google-compute-engine prometheus nfs kubernetes-pvc


【解决方案1】:

Volume Exporter来救援,可以通过以下方式轻松完成。

Volume exporter 是专门为这些需求而创建的,在 node exporter 中可能没有用(它基本上填补了存在的空白)

      - name: volume-exporter
      image:  mnadeem/volume_exporter
      imagePullPolicy: "Always"
      args:
        - --volume-dir=prometheus:/prometheus
        - --volume-dir=appLog:/app/log
      ports:
      - name: metrics-volume
        containerPort: 9888
      volumeMounts:
      - name: prometheus-data
        mountPath: /prometheus
        readOnly: true
      - name: log-data-volume
        mountPath: /app/log
        readOnly: true

导出的指标

            # HELP volume_bytes_free Free size of the volume/disk
            # TYPE volume_bytes_free gauge
            volume_bytes_free{volume_name="bin",volume_path="/bin"} 4.341569536e+10
            volume_bytes_free{volume_name="etc",volume_path="/etc"} 4.341569536e+10
            # HELP volume_bytes_total Total size of the volume/disk
            # TYPE volume_bytes_total gauge
            volume_bytes_total{volume_name="bin",volume_path="/bin"} 6.391887872e+10
            volume_bytes_total{volume_name="etc",volume_path="/etc"} 6.391887872e+10
            # HELP volume_bytes_used Used size of volume/disk
            # TYPE volume_bytes_used gauge
            volume_bytes_used{volume_name="bin",volume_path="/bin"} 2.050318336e+10
            volume_bytes_used{volume_name="etc",volume_path="/etc"} 2.050318336e+10
            # HELP volume_exporter_build_info A metric with a constant '1' value labeled by version, revision, branch, and goversion from which volume_exporter was built.
            # TYPE volume_exporter_build_info gauge
            volume_exporter_build_info{branch="",goversion="go1.15",revision="",version=""} 1
            # HELP volume_percentage_used Percentage of volume/disk Utilization
            # TYPE volume_percentage_used gauge
            volume_percentage_used{volume_name="bin",volume_path="/bin"} 32.07688208958619
            volume_percentage_used{volume_name="etc",volume_path="/etc"} 32.07688208958619

免责声明:我是所有者

【讨论】:

    猜你喜欢
    • 2019-07-14
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2017-03-24
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多