I'm new bee and started writing exporter that will use jenkins to pull out 
build executed timestamp and put it on grafana.
I'm able to write script as below:

#!/usr/bin/python3

import json
import time
from urllib.request import urlopen
from prometheus_client import start_http_server
from prometheus_client.core import GaugeMetricFamily, REGISTRY
#import requests
#from datetime import datetime
import datetime

class JenkinsCollector(object):
  def collect(self):
    metric = GaugeMetricFamily(
        'jenkins_job_deployment_frequency',
        'Jenkins job deployment frequency',
        labels=["jobname"])

   # jenkins_url = "http://localhost:8083";
   # username = "admin"
   # password = "admin"
   # job_name = "test"
   # request_url = "{0:s}/job/{1:s}/api/json{2:s}".format(
   # jenkins_url,
   # job_name,
   # "?tree=builds[fullDisplayName,id,number,timestamp,url]")

   # response = requests.get(request_url, auth=(username, password)).json()
   # builds = []

    result = 
json.load(urlopen("http://localhost:8083/job/test2/api/json?tree=builds[fullDisplayName,id,number,timestamp]";))

#    
http://15.207.169.181:8083/job/test/api/xml?tree=builds[fullDisplayName,id,number,timestamp]&pretty=true

    for build in result['builds']:
       #build_date = 
datetime.utcfromtimestamp(build['timestamp']/1000).strftime('%Y-%m-%d 
%H:%M:%S')
       #build_date  = int(float(datetime.datetime.build['timestamp']) * 
1000)
       #build_date = build['timestamp']/1000
       #date_time_obj = datetime.strptime(build_date, '%Y-%m-%d %H:%M:%S')
       #date_time_obj = datetime.fromisoformat(build_date)
       #print build_date
        fullDisplayName = build["fullDisplayName"]
        number = build["number"]
       #build_url = format(build["url"])
        build_date = format(build["timestamp"])
       #build_date = format(build_date)
       #metric.add_metric([fullDisplayName], date_time_obj)
       #build_date = covert_date_to_epoch(build['timestamp'])
       #build_date = int(time.mktime(time.strptime(build_date, '%Y-%m-%d 
%H:%M:%S')))
        metric.add_metric([fullDisplayName],build_date,value=number)
       #timestamp = int(float(datetime.datetime.now().timestamp()) * 1000)
    yield metric

if __name__ == "__main__":
  REGISTRY.register(JenkinsCollector())
  start_http_server(8089)
  while True: time.sleep(1)

I get following output,
jenkins_job_deployment_frequency{jobname="test2"}1610623189647  9.0 
jenkins_job_deployment_frequency{timestamp="test2"}1610555634393 8.0 
jenkins_job_deployment_frequency{timestamp="test2"}1610555615120 7.0 
jenkins_job_deployment_frequency{timestamp="test2"}1610014768328 6.0 
jenkins_job_deployment_frequency{timestamp="test2"}1609824305557 5.0 
jenkins_job_deployment_frequency{timestamp="test2"}1609823502624 4.0 
jenkins_job_deployment_frequency{timestamp="test2"}1609741464774 3.0 
jenkins_job_deployment_frequency{timestamp="test2"} 1609741438261 2.0 
jenkins_job_deployment_frequency{timestamp="test2"} 1607961178782 1.0  

I'm just not sure how to format it to make stat report on grafana that maps 
with timestamp i received from jenkins in prometheus.  My final goal is to 
get result as job name, timestamp and build number where timestamp from 
jenkins will map to time range field on grafana and with selection i will 
get to see deployment frequency, like how many builds executed in that 
duration. I tried to add [$_interval] but i do not get to see the count 
result i am expecting. Can someone help me here please?

-- 
You received this message because you are subscribed to the Google Groups 
"Prometheus Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/prometheus-users/f2c1d68e-43b6-4e26-b314-4ebe1af2e4bfn%40googlegroups.com.

Reply via email to