Skip to content
Advertisement

Get cpu, memory, disk data using Python script from node exporter metrics

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:

  1. Select two simple metrics
  2. Send http call to node exporter and save coutput to a file or keep in a variable
  3. Extract the value of the metric
  4. You can have the mapping of metric and node exporter metric in a separate file
  5. 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)
User contributions licensed under: CC BY-SA
5 People found this is helpful
Advertisement