phsmith / rundeck_exporter

Rundeck Metrics Exporter
GNU General Public License v3.0
58 stars 25 forks source link

fix: Issue #42 Further fix duplicates #46

Closed WilsonSunBritten closed 2 years ago

WilsonSunBritten commented 2 years ago

Goal: 1 HELP metric line should exist per metric. Currently 1 will appear per project. Example output with this change:

HELP rundeck_project_execution_status Rundeck Project ProjectName Execution Status

TYPE rundeck_project_execution_status gauge

rundeck_project_execution_status{execution_id="5122",execution_type="scheduled",instance_address="rundeck3:4440",job_group="",job_id="7c0247e6-3fbb-4c20-913c-331a1a7c3959",job_name="testjob-1",project_name="test-project",status="succeeded",user="admin"} 1.0 rundeck_project_execution_status{execution_id="5122",execution_type="scheduled",instance_address="rundeck3:4440",job_group="",job_id="7c0247e6-3fbb-4c20-913c-331a1a7c3959",job_name="testjob-1",project_name="test-project",status="running",user="admin"} 0.0 rundeck_project_execution_status{execution_id="5122",execution_type="scheduled",instance_address="rundeck3:4440",job_group="",job_id="7c0247e6-3fbb-4c20-913c-331a1a7c3959",job_name="testjob-1",project_name="test-project",status="failed",user="admin"} 0.0 rundeck_project_execution_status{execution_id="5122",execution_type="scheduled",instance_address="rundeck3:4440",job_group="",job_id="7c0247e6-3fbb-4c20-913c-331a1a7c3959",job_name="testjob-1",project_name="test-project",status="aborted",user="admin"} 0.0 rundeck_project_execution_status{execution_id="5122",execution_type="scheduled",instance_address="rundeck3:4440",job_group="",job_id="7c0247e6-3fbb-4c20-913c-331a1a7c3959",job_name="testjob-1",project_name="test-project",status="unknown",user="admin"} 0.0 rundeck_project_execution_status{execution_id="5104",execution_type="scheduled",instance_address="rundeck3:4440",job_group="",job_id="dcf0d988-74b6-47ec-b2b8-ba59866c7cdc",job_name="testjob-2",project_name="test-project",status="succeeded",user="admin"} 1.0 rundeck_project_execution_status{execution_id="5104",execution_type="scheduled",instance_address="rundeck3:4440",job_group="",job_id="dcf0d988-74b6-47ec-b2b8-ba59866c7cdc",job_name="testjob-2",project_name="test-project",status="running",user="admin"} 0.0 rundeck_project_execution_status{execution_id="5104",execution_type="scheduled",instance_address="rundeck3:4440",job_group="",job_id="dcf0d988-74b6-47ec-b2b8-ba59866c7cdc",job_name="testjob-2",project_name="test-project",status="failed",user="admin"} 0.0 rundeck_project_execution_status{execution_id="5104",execution_type="scheduled",instance_address="rundeck3:4440",job_group="",job_id="dcf0d988-74b6-47ec-b2b8-ba59866c7cdc",job_name="testjob-2",project_name="test-project",status="aborted",user="admin"} 0.0 rundeck_project_execution_status{execution_id="5104",execution_type="scheduled",instance_address="rundeck3:4440",job_group="",job_id="dcf0d988-74b6-47ec-b2b8-ba59866c7cdc",job_name="testjob-2",project_name="test-project",status="unknown",user="admin"} 0.0 rundeck_project_execution_status{execution_id="5108",execution_type="scheduled",instance_address="rundeck3:4440",job_group="",job_id="6b916bf2-a730-4adf-9e56-9613bfb17c9d",job_name="testjob-3",project_name="test-project-2",status="succeeded",user="admin"} 1.0 rundeck_project_execution_status{execution_id="5108",execution_type="scheduled",instance_address="rundeck3:4440",job_group="",job_id="6b916bf2-a730-4adf-9e56-9613bfb17c9d",job_name="testjob-3",project_name="test-project-2",status="running",user="admin"} 0.0 rundeck_project_execution_status{execution_id="5108",execution_type="scheduled",instance_address="rundeck3:4440",job_group="",job_id="6b916bf2-a730-4adf-9e56-9613bfb17c9d",job_name="testjob-3",project_name="test-project-2",status="failed",user="admin"} 0.0 rundeck_project_execution_status{execution_id="5108",execution_type="scheduled",instance_address="rundeck3:4440",job_group="",job_id="6b916bf2-a730-4adf-9e56-9613bfb17c9d",job_name="testjob-3",project_name="test-project-2",status="aborted",user="admin"} 0.0 rundeck_project_execution_status{execution_id="5108",execution_type="scheduled",instance_address="rundeck3:4440",job_group="",job_id="6b916bf2-a730-4adf-9e56-9613bfb17c9d",job_name="testjob-3",project_name="test-project-2",status="unknown",user="admin"} 0.0

WilsonSunBritten commented 2 years ago

Open to input on formatting/etc, I'm not too familiar with python. The big trouble here was keeping the threadpool performance gains on the network requests for different projects while still splitting up the metric groups.

phsmith commented 2 years ago

I get it @WilsonSunBritten. What about that approach with NamedTuples https://github.com/phsmith/rundeck_exporter/pull/46/commits/0734ea4e57deb19834d76c65142b24ffd0a5d1f2?

Oh, and sorry, I've just see that I made the commit direct on your branch.

WilsonSunBritten commented 2 years ago

No worries, I do think that looks a bit cleaner. Thanks for the iteration!

phsmith commented 2 years ago

Great, man! Let's publish a new release then. Thanks a lot for the contribution!

WilsonSunBritten commented 2 years ago

Thanks for the speedy feedback and release! I used the new file in a setup where telegraf passes these metrics onto datadog and have already gotten great insights today. I look forward to switching back to an official release tomorrow.