FinOPS之 节点内存态统计和计算Node-metrics

本文涉及的产品
资源编排,不限时长
无影云电脑企业版,4核8GB 120小时 1个月
无影云电脑个人版,1个月黄金款+200核时
简介: 董江,容器技术布道者及实践者,中国移动高级系统架构专家,曾担任华为云核心网技术专家,CloudNative社区核心成员,KubeServiceStack社区发起者,Prometheus社区PMC,Knative Committer,Grafana社区Contributer。 欢迎关注:https://kubeservice.cn/

节点内存态统计和计算 Node-metrics

背景

请查看第一篇:https://kubeservice.cn/2022/11/24/k8s-crane-scheduler-plus/

实现

Node Metrics是内存态统计计算模块,实现metrics的avgminmax 等级的数据聚合查询。

Node Metrics = Node exporter + Prometheus PromSQL

Node Metrics中添加了:

  • Memory TSDB, 添加轻量内存化内存存储
  • Statistics, 实现通用内存avgminmax等静态function方法
  • Scheduler, 实现定时采集,数据从proc中采集统一方法
  • Server Handler, 数据通过metricsstatistics 方法对外提供

以存储一天数据为例: 每10s存储一次,每次存储cpumemorydisk 原生数据 3个
整个存储数量为: 也就是 300KB 不到.

(38Byte(float64)+8Byte(time数据)) 24 * 3600/10 = 276480Byte = 270KB

使用

apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: node-metrics
  name: node-metrics
  namespace: crane-system
spec:
  selector:
    matchLabels:
      app: node-metrics
  template:
    metadata:
      labels:
        app: node-metrics
    spec:
      containers:
      - image: dongjiang1989/node-metrics:latest
        name: node-metrics
        args:
        - --web.listen-address=0.0.0.0:19101
        resources:
          limits:
            cpu: 102m
            memory: 180Mi
          requests:
            cpu: 102m
            memory: 180Mi
      hostNetwork: true
      hostPID: true
      tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/master

两类接口:

  1. 接口“/metrics”接口

    ...
    # HELP node_cpu_usage_active cpu usage active.
    # TYPE node_cpu_usage_active gauge
    node_cpu_usage_active 6.801955214695443
    # HELP node_cpu_usage_avg_5m cpu usage avg 5m.
    # TYPE node_cpu_usage_avg_5m gauge
    node_cpu_usage_avg_5m 6.8018810008297335
    # HELP node_cpu_usage_max_avg_1d cpu usage max avg 1d.
    # TYPE node_cpu_usage_max_avg_1d gauge
    node_cpu_usage_max_avg_1d 6.801955214695443
    # HELP node_cpu_usage_max_avg_1h cpu usage max avg 1h.
    # TYPE node_cpu_usage_max_avg_1h gauge
    node_cpu_usage_max_avg_1h 6.801955214695443
    # HELP node_mem_usage_active mem usage active.
    # TYPE node_mem_usage_active gauge
    node_mem_usage_active 44.272822236553765
    # HELP node_mem_usage_avg_5m mem usage avg 5m.
    # TYPE node_mem_usage_avg_5m gauge
    node_mem_usage_avg_5m 43.68676937682602
    # HELP node_mem_usage_max_avg_1d mem usage max avg 1d.
    # TYPE node_mem_usage_max_avg_1d gauge
    node_mem_usage_max_avg_1d 44.447325557125225
    # HELP node_mem_usage_max_avg_1h mem usage max avg 1h.
    # TYPE node_mem_usage_max_avg_1h gauge
    node_mem_usage_max_avg_1h 44.447325557125225
    ...
    
  2. 接口“/statistics”接口

{
   
   
  "cpu_usage_active": 6.801955214695443,
  "cpu_usage_avg_5m": 6.8018810008297335,
  "cpu_usage_max_avg_1d": 6.801955214695443,
  "cpu_usage_max_avg_1h": 6.801955214695443,
  "mem_usage_active": 44.272822236553765,
  "mem_usage_avg_5m": 43.68676937682602,
  "mem_usage_max_avg_1d": 44.447325557125225,
  "mem_usage_max_avg_1h": 44.447325557125225
}

Source

https://github.com/kubeservice-stack/node-metrics

相关文章
|
1月前
|
监控 JavaScript 算法
如何使用内存监控工具来定位和解决Node.js应用中的性能问题?
总之,利用内存监控工具结合代码分析和业务理解,能够逐步定位和解决 Node.js 应用中的性能问题,提高应用的运行效率和稳定性。需要耐心和细致地进行排查和优化,不断提升应用的性能表现。
181 77
|
1月前
|
监控 JavaScript
选择适合自己的Node.js内存监控工具
选择合适的内存监控工具是优化 Node.js 应用内存使用的重要一步,它可以帮助你更好地了解内存状况,及时发现问题并采取措施,提高应用的性能和稳定性。
117 76
|
1月前
|
监控 JavaScript 数据库连接
解读Node.js内存监控工具生成的报告
需要注意的是,不同的内存监控工具可能会有不同的报告格式和内容,具体的解读方法可能会有所差异。因此,在使用具体工具时,还需要参考其相关的文档和说明,以更好地理解和利用报告中的信息。通过深入解读内存监控报告,我们可以不断优化 Node.js 应用的内存使用,提高其性能和稳定性。
101 74
|
1月前
|
Web App开发 缓存 监控
如何解决Node框架中内存管理的挑战?
解决 Node 框架中内存管理的挑战需要综合运用多种方法,并且需要在开发过程中保持谨慎和细心,不断优化和改进代码。同时,定期进行内存管理的检查和维护也是非常重要的。
112 63
|
1月前
|
存储 缓存 JavaScript
如何优化Node.js应用的内存使用以提高性能?
通过以上多种方法的综合运用,可以有效地优化 Node.js 应用的内存使用,提高性能,提升用户体验。同时,不断关注内存管理的最新技术和最佳实践,持续改进应用的性能表现。
124 62
|
1月前
|
监控 JavaScript Java
Node.js中内存泄漏的检测方法
检测内存泄漏需要综合运用多种方法,并结合实际的应用场景和代码特点进行分析。及时发现和解决内存泄漏问题,可以提高应用的稳定性和性能,避免潜在的风险和故障。同时,不断学习和掌握内存管理的知识,也是有效预防内存泄漏的重要途径。
133 52
|
28天前
|
存储 缓存 监控
如何使用内存监控工具来优化 Node.js 应用的性能
需要注意的是,不同的内存监控工具可能具有不同的功能和特点,在使用时需要根据具体工具的要求和操作指南进行正确使用和分析。
70 31
|
28天前
|
JavaScript
如何使用内存快照分析工具来分析Node.js应用的内存问题?
需要注意的是,不同的内存快照分析工具可能具有不同的功能和操作方式,在使用时需要根据具体工具的说明和特点进行灵活运用。
43 3
|
1月前
|
缓存 监控 JavaScript
避免在Node.js中出现内存泄漏
总之,避免内存泄漏需要在开发过程中保持谨慎和细心,遵循最佳实践,不断优化和改进代码。同时,定期进行内存管理的检查和维护也是非常重要的。通过采取这些措施,可以有效地降低 Node.js 应用中出现内存泄漏的风险,确保应用的稳定和性能。
|
2月前
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)