使用 Python 脚本从节点导出器指标获取 CPU、内存、磁盘数据

Posted

技术标签:

【中文标题】使用 Python 脚本从节点导出器指标获取 CPU、内存、磁盘数据【英文标题】:Get cpu, memory, disk data using Python script from node exporter metrics 【发布时间】:2021-05-26 13:33:20 【问题描述】:

目前我正在开发一个 python 烧瓶应用程序。我需要获取机器的cpu、内存、磁盘数据。我想使用 Python 脚本使用 node-exporter 获取这些数据。目前我正在处理虚拟数据。

以下是提供的说明:

    选择两个简单的指标 向节点导出器发送 http 调用并将 coutput 保存到文件或保存在变量中 提取指标的值 您可以将指标和节点导出器指标的映射放在单独的文件中 保存表格中的值

有人知道如何开发这种 Python 脚本吗?

这是我没有节点导出器查询的控制器类:

indicator_data = db.session.query(Indicator_data.indicator_data_id,
                                      Indicator_data.indicator_id, Indicator_data.value, Vnfc_instance.vnfc_instance_id,
                                      Vnfc_instance.vnfc_instance_name,
                                      func.max(Indicator_data.timestamp)).group_by(Indicator_data.indicator_id)


    get_indicators_list = []
    for indicator_record in indicator_data:

        indicator_data_id = indicator_record.indicator_data_id
        value = indicator_record.value
        vnfc_instance_id = indicator_record.vnfc_instance_id
        vnfc_instance_name = indicator_record.vnfc_instance_name

        self_dict = 
            'href': request.base_url ,
        
        vnfInstance_dict = 
            'href': 'https//:www.example.com',
        
        links_dic = 
            'self': self_dict,
            'vnfInstance': vnfInstance_dict
        

        get_indicators_dict = 
            '_links': links_dic,
            'id': indicator_data_id,
            'value': value,
            'vnfInstanceId': vnfc_instance_id,
            'name': vnfc_instance_name

        
        get_indicators_list.append(get_indicators_dict)
        print(get_indicators_dict)
    return get_indicators_list

【问题讨论】:

【参考方案1】:

看到这个example:

import psutil
import time

from prometheus.collectors import Gauge

ram_metric = Gauge("memory_usage_bytes", "Memory usage in bytes.",
                   'host': host)
cpu_metric = Gauge("cpu_usage_percent", "CPU usage percent.",
                   'host': host)

while True:
    time.sleep(1)

    # Add ram metrics
    ram = psutil.virtual_memory()
    swap = psutil.swap_memory()

    ram_metric.set('type': "virtual", , ram.used)
    ram_metric.set('type': "virtual", 'status': "cached", ram.cached)
    ram_metric.set('type': "swap", swap.used)

    # Add cpu metrics
    for c, p in enumerate(psutil.cpu_percent(interval=1, percpu=True)):
        cpu_metric.set('core': c, p)

【讨论】:

以上是关于使用 Python 脚本从节点导出器指标获取 CPU、内存、磁盘数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JSON 格式获取 Prometheus 节点导出器指标

查询通过 prometheus 节点导出器文本文件收集器公开的自定义指标失败

如何在没有节点导出器或 cadvisor 的情况下从目标服务器抓取数据

如何在节点导出器中设置 --collector.textfile.directory

Or-Tools CP-SAT 求解器导出/导入:加载模型后如何访问变量?

如何使用 JMX 导出器将 JMX 指标从 Kafka 消费者推送到普罗米修斯