Node Exporter 自定义指标采集

参考文档

Node Exporter textfile 自定义指标收集器_富士康质检员张全蛋的博客-CSDN博客 除了本身可以收集系统指标之外,还可以通过 textfile,模块来采集我们自定义的监控指标,这对于系统监控提供了更灵活的使用空间,比如我们通过脚本采集的监控数据就可以通过该模块暴露出去,用于 Prometheus 进行监控报警。)

指标格式

指定一个生成的监控指标存放目录下,并以 .prom 文件名后缀结尾。

  1. textfile_network_send_packages{src="172.18.252.1",dest="172.31.0.25"} 7
  2. textfile_network_recieved_package{src="172.18.252.1",dest="172.31.0.25"} 7
  3. textfile_network_availability{src="172.18.252.1",dest="172.31.0.25"} 100
  4. textfile_network_rtt{src="172.18.252.1",dest="172.31.0.25"} 20
  5. textfile_network_send_packages{src="172.18.252.1",dest="172.31.0.33"} 7
  6. textfile_network_recieved_package{src="172.18.252.1",dest="172.31.0.33"} 7
  7. textfile_network_availability{src="172.18.252.1",dest="172.31.0.33"} 100
  8. textfile_network_rtt{src="172.18.252.1",dest="172.31.0.33"} 20
  1. [root@k8s-node-nj-71 textfile]# pwd
  2. /tmp/textfile
  3. [root@k8s-node-nj-71 textfile]# ls
  4. network.prom
  5. [root@k8s-node-nj-71 textfile]# cat network.prom
  6. textfile_network_send_packages{src="172.18.252.1",dest="172.31.0.25"} 7
  7. textfile_network_recieved_package{src="172.18.252.1",dest="172.31.0.25"} 7
  8. textfile_network_availability{src="172.18.252.1",dest="172.31.0.25"} 100
  9. textfile_network_rtt{src="172.18.252.1",dest="172.31.0.25"} 20
  10. textfile_network_send_packages{src="172.18.252.1",dest="172.31.0.33"} 7
  11. textfile_network_recieved_package{src="172.18.252.1",dest="172.31.0.33"} 7
  12. textfile_network_availability{src="172.18.252.1",dest="172.31.0.33"} 100
  13. textfile_network_rtt{src="172.18.252.1",dest="172.31.0.33"} 60

node exporter yaml文件

  1. apiVersion: apps/v1
  2. kind: DaemonSet
  3. metadata:
  4. name: node-exporter
  5. namespace: thanos
  6. labels:
  7. app: node-exporter
  8. spec:
  9. selector:
  10. matchLabels:
  11. app: node-exporter
  12. template:
  13. metadata:
  14. labels:
  15. app: node-exporter
  16. spec:
  17. hostPID: true
  18. hostIPC: true
  19. hostNetwork: true
  20. nodeSelector:
  21. kubernetes.io/os: linux
  22. containers:
  23. - name: node-exporter
  24. image: 172.16.140.21/prometheus/node-exporter:v1.2.2
  25. args:
  26. - --web.listen-address=$(HOSTIP):9100
  27. - --path.procfs=/host/proc
  28. - --path.sysfs=/host/sys
  29. - --path.rootfs=/host/root
  30. - --collector.filesystem.ignored-mount-points=^/(dev|proc|sys|var/lib/docker/.+)($|/)
  31. - --collector.filesystem.ignored-fs-types=^(autofs|binfmt_misc|cgroup|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|mqueue|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|sysfs|tracefs)$
  32. - --collector.textfile.directory=/tmp/textfile
  33. ports:
  34. - containerPort: 9100
  35. env:
  36. - name: HOSTIP
  37. valueFrom:
  38. fieldRef:
  39. fieldPath: status.hostIP
  40. resources:
  41. requests:
  42. cpu: 150m
  43. memory: 180Mi
  44. limits:
  45. cpu: 150m
  46. memory: 180Mi
  47. securityContext:
  48. runAsNonRoot: true
  49. runAsUser: 65534
  50. volumeMounts:
  51. - name: proc
  52. mountPath: /host/proc
  53. - name: sys
  54. mountPath: /host/sys
  55. - name: root
  56. mountPath: /host/root
  57. mountPropagation: HostToContainer
  58. readOnly: true
  59. - name: textfile
  60. mountPath: /tmp/textfile/
  61. tolerations:
  62. - operator: "Exists"
  63. volumes:
  64. - name: proc
  65. hostPath:
  66. path: /proc
  67. - name: dev
  68. hostPath:
  69. path: /dev
  70. - name: sys
  71. hostPath:
  72. path: /sys
  73. - name: root
  74. hostPath:
  75. path: /
  76. - name: textfile
  77. hostPath:
  78. path: /tmp/textfile/