https://github.com/bossm8/gitlab-pages-exporter
Prometheus exporter showing statistics about static pages deployment of a GitLab instance
https://github.com/bossm8/gitlab-pages-exporter
gitlab-pages prometheus-exporter
Last synced: over 1 year ago
JSON representation
Prometheus exporter showing statistics about static pages deployment of a GitLab instance
- Host: GitHub
- URL: https://github.com/bossm8/gitlab-pages-exporter
- Owner: bossm8
- License: bsd-3-clause
- Created: 2023-11-08T13:01:46.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-12-19T08:34:28.000Z (over 1 year ago)
- Last Synced: 2024-12-19T09:29:17.464Z (over 1 year ago)
- Topics: gitlab-pages, prometheus-exporter
- Language: Go
- Homepage:
- Size: 88.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# GitLab Pages Exporter (gpe)
Exporter gathering periodic statistics about GitLab pages via GitLab's API.
## Why This Exporter Exists
There is no builtin way in GitLab to find information about what projects
expose pages.
## How it Works
The exporter periodically scrapes the GitLab API to get information about pages
deployments. Since there is no built-in way in GitLab to get all projects with
pages deployments the exporter checks if a project has CI/CD enabled and if so
if there is a job named `pages` which was successfully run. If those conditions
are met, the exporter assumes pages are deployed.
[GitLab Pages Doc](https://docs.gitlab.com/ee/user/project/pages/#how-it-works)
**Note**: Scraping may issue a lot of requests depending on how large your
instance is and you might need to check your rate-limiting settings.
## Exposed Metrics
The following metrics will be exposed to `:2112/metrics`:
| Metric Name | Description |
| ------------------------------------------|-----------------------------------------------|
| `gpe_project_pages_enabled` | If GitLab pages are enabled |
| `gpe_project_pages_total` | Total number of projects with deployed pages |
| `gpe_custom_domains_verified` | If a custom Domain is verified |
| `gpe_custom_domains_total` | Total number of custom domains registered |
| `gpe_projects_checked_total` | Number of projects processed |
| `gpe_check_running` | If the check is currently running |
| `gpe_last_check_duration_seconds` | How long the last check took |
| `gpe_last_check_run_finished_seconds` | When the last check happened |
| `gpe_next_check_run_scheduled_seconds` | When the next check will happen |
| `gpe_number_of_scrapes` | How many times the exporter ran since restart |
## Configuration
Currently configuration can only be achieved with environment variables, it is
recommended to use the docker image to run the exporter.
| Variable Name | Description | Default |
| -------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------|
| `GPE_GITLAB_ADMIN_READ_TOKEN` | A read-only API token with admin permissions (to be able to fetch all projects). | `` |
| `GPE_GITLAB_API_URL` | The base URL to your GitLab instance. | `` |
| `GPE_CRON_SCHEDULE` | Schedule for tests in cron format (seconds, minutes, hours, day of month, month, day of week). | `0 0 2 * * *` |
| `GPE_SET_ALL_PROJECT_METRICS` | If all projects should be exposed as metric, by default only project with pages deployed are exposed. Only set to true if really needed as this grows quick! | `false` |
Example usage:
```bash
docker run -it --rm \
-e GPE_GITLAB_ADMIN_READ_TOKEN= \
-e GPE_GITLAB_API_URL= \
-e TZ=Europe/Zurich \
-p 2112:2112 \
ghcr.io/bossm8/gitlab-pages-exporter:latest
```
## Grafana Dashboards
Find an example dashboard in the `grafana` folder.
## Credits
Originally developed at Bern University of Applied Sciences (TI): [BFH](https://www.bfh.ch/ti/en/)