In the previous articles, we have talked about monitoring using Prometheus and other ways. In this article, we are going to talk about how you can write your own exporter using Python.
To write your own exporter you need to use prometheus_client library. To install it you can type the below command.
pip install prometheus_client
Now let’s look at the code where we will export the metrics and then our Prometheus can scrape those metrics.
from prometheus_client import start_http_server, Summary
import random
import time
REQUEST_TIME = Summary('request_processing_seconds', 'Time spent processing request')
@REQUEST_TIME.time()
def process_request(t):
time.sleep(t)
if __name__ == '__main__':
start_http_server(9000)
while True:
process_request(random.random())
In the above code what we have done is imported prometheus_client
and started the http_server which will serve the metrics endpoint. We have created a Request_Time
function with help of summary
, this function is acting as a decorator and then can be added to any function to check how much time it took to execute that part of code.
Then in our process_request
function, we added a random sleep to simulate the time taken to execute the function. In main, we just started the server and then in a loop called the process_request function with random values. This will trigger the Request_Time function and the metrics get recorded. If you open localhost:9000/metrics
you will see something like below.
Now you can add this endpoint in Prometheus to start scraping.
- job_name: python
static_configs:
- targets: ['localhost:9000']
Now you Prometheus will start scrapping the metrics. You can now use Grafana to plot the metrics.
This was how you can write a very basic Prometheus exporter and then you to plot on Grafana.
If you like the article please share and subscribe.