Enabling some monitoring for Fedora-CI #13285

Open
opened 2026-04-22 14:13:16 +00:00 by lecris · 7 comments

Description of request

We would like to ask some help in setting up the monitoring for Fedora-CI. Currently the other monitoring infrastructures that we have available is packit's and testing-farm's which are not publicly visible, and that is primarily why I think getting something worked together with Fedora-infra would be better.

The main things that the monitoring should have are:

  • Be publicly visible
  • Catch when more than n tests are failing or are taking more time than normal
  • Report when something is going wrong on matrix or slack or anything else
  • Allow for other interesting parties to get relevant notifications, e.g. when many rpminspect tests fail have the rpminspect team CC-ed

The current infrastructure in Fedora-CI:

  • Jenkins layer that executes testing-farm jobs on bodhi update. Should have the most information
  • Packit-service layer that does koji scratch-build and testing-farm jobs on PRs. Also should have the most information
  • Testing-farm webhooks. Currently only reports when a whole test starts running and finished, all other parsing has to be done manually 🙁
  • tmt tests that run underneath everything. Can be extended with an arbitrary report plugin, but is only run at the end of a job (should probably avoid this if possible)

CC: @gwmngilfen

### Description of request We would like to ask some help in setting up the monitoring for Fedora-CI. Currently the other monitoring infrastructures that we have available is packit's and testing-farm's which are not publicly visible, and that is primarily why I think getting something worked together with Fedora-infra would be better. The main things that the monitoring should have are: - Be publicly visible - Catch when more than `n` tests are failing or are taking more time than normal - Report when something is going wrong on matrix or slack or anything else - Allow for other interesting parties to get relevant notifications, e.g. when many rpminspect tests fail have the rpminspect team CC-ed The current infrastructure in Fedora-CI: - Jenkins layer that executes testing-farm jobs on bodhi update. Should have the most information - Packit-service layer that does koji scratch-build and testing-farm jobs on PRs. Also should have the most information - Testing-farm webhooks. Currently only reports when a whole test starts running and finished, all other parsing has to be done manually 🙁 - tmt tests that run underneath everything. Can be extended with an arbitrary `report` plugin, but is only run at the end of a job (should probably avoid this if possible) CC: @gwmngilfen
Member

Really not sure how easy this is to integrate into zabbix ... Doesn't seem like the normal things we monitor, so 5 might not be enough.

Really not sure how easy this is to integrate into zabbix ... Doesn't seem like the normal things we monitor, so 5 might not be enough.
Author

Totally, ideas of how break down this would be good. Maybe we can start with the dashboard and hooking the jenkins jobs into it?

Totally, ideas of how break down this would be good. Maybe we can start with the dashboard and hooking the jenkins jobs into it?
Member

Sorry for the lag, I lost track of this after @lecris asked me in chat.

I think this is generally achievable. What I know is:

  • Zabbix can notify arbitrary users in arbitrary ways. Today that looks like "all alerts of Average or above > Matrix" but it can be much more flexible. We can run some trials of email or Matrix-to-a-different room on staging whenever you like.
  • In terms of consuming data, we can use a variety of methinds. Here it sounds like a query to the Jenkins API might be the best way to go, but we also have other options.

@lecris we should sync up on this and toss some ideas around of a more concrete plan. I'll ping you in chat.

Sorry for the lag, I lost track of this after @lecris asked me in chat. I think this is generally achievable. What I know is: - Zabbix can notify arbitrary users in arbitrary ways. Today that looks like "all alerts of Average or above > Matrix" but it can be much more flexible. We can run some trials of email or Matrix-to-a-different room on staging whenever you like. - In terms of consuming data, we can use a variety of methinds. Here it *sounds* like a query to the Jenkins API might be the best way to go, but we also have other options. @lecris we should sync up on this and toss some ideas around of a more concrete plan. I'll ping you in chat.
Author

Ok, so there are 2 parts of this, the metrics from Jenkins and the metrics from packit. The latter probably needs more fine-tuning of the metrics, will continue the discussion in https://github.com/packit/packit-service/issues/3117.

For the jenkins part, the metrics are available under the /prometheus/ path (probably best not to make the actual url easy to scrape 😉). The things that should be monitored in there right now are:

  • default_jenkins_builds_duration_milliseconds_summary_count
  • default_jenkins_builds_duration_milliseconds_summary_sum

Those are separated by parameters jenkins_job, status, DIST_GIT_BRANCH being the main ones. We can start with status="UNSTABLE" and status="FAILURE" for the jenkins_job="fedora-ci/rmdepcheck-pipeline/main".

Ok, so there are 2 parts of this, the metrics from Jenkins and the metrics from packit. The latter probably needs more fine-tuning of the metrics, will continue the discussion in https://github.com/packit/packit-service/issues/3117. For the jenkins part, the metrics are available under the `/prometheus/` path (probably best not to make the actual url easy to scrape 😉). The things that should be monitored in there right now are: - `default_jenkins_builds_duration_milliseconds_summary_count` - `default_jenkins_builds_duration_milliseconds_summary_sum` Those are separated by parameters `jenkins_job`, `status`, `DIST_GIT_BRANCH` being the main ones. We can start with `status="UNSTABLE"` and `status="FAILURE"` for the `jenkins_job="fedora-ci/rmdepcheck-pipeline/main"`.
Member

@lecris so the Jenkins part is ready to hook up then? I can maybe look at that next week, if so.

@lecris so the Jenkins part is ready to hook up then? I can maybe look at that next week, if so.
Author

Yes it should be ready for first iteration. Let me know if you need me during that.

Yes it should be ready for first iteration. Let me know if you need me during that.
Member

I've started testing this out. We have a template (Fedora/CI/Jenkins by HTTP) that is pulling the Prometheus data and parsing it for the rmdepcheck/UNSTABLE combo on each branch. It has thrown up some questions:

  • We have no CI hosts in Fedora Zabbix, so we'll have to decide where this belongs. Right now it's attached to zabbix01 for testing.
  • There's a potentially large matrix of job/status/branch to look at. We may need to move to LLDiscovery rather than hand-coding it
  • It's not clear exactly what the metrics represent (what is a count of a job with "milliseconds" in the title?" nor when/if they reset their counters

Right now we've set up these test items (no triggers) and are letting it run for a few days to gather data to look at. Thanks to @lecris for the help!

I've started testing this out. We have a template (Fedora/CI/Jenkins by HTTP) that is pulling the Prometheus data and parsing it for the rmdepcheck/UNSTABLE combo on each branch. It has thrown up some questions: - We have no CI hosts in Fedora Zabbix, so we'll have to decide where this belongs. Right now it's attached to zabbix01 for testing. - There's a potentially large matrix of job/status/branch to look at. We may need to move to LLDiscovery rather than hand-coding it - It's not clear exactly what the metrics represent (what is a count of a job with "milliseconds" in the title?" nor when/if they reset their counters Right now we've set up these test items (no triggers) and are letting it run for a few days to gather data to look at. Thanks to @lecris for the help!
Sign in to join this conversation.
No milestone
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
infra/tickets#13285
No description provided.