Currently I am developing a python flask application. I need to get cpu, memory, disk data of the machine. I suppose to get those data using node-exporter using Python scripts. Currently I am working with dummy data.
Here are the instructions provided:
- Select two simple metrics
 - Send http call to node exporter and save coutput to a file or keep in a variable
 - Extract the value of the metric
 - You can have the mapping of metric and node exporter metric in a separate file
 - Save the value in the table
 
Does anybody have any idea about how to develop the this kind of Python script?
This is my controller classes without node-exporter queries:
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
Advertisement
Answer
See this 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)