Utility to generate a Prometheus data source from programming languages inside GitLab repositores
Project description
gitlab-languages
Utility to generate a Prometheus data source text file for your GitLab instance using the GitLab Language API
installation from PyPI
-
Install from PyPI as CLI
pip install -U gitlab-languages
-
Run the program
gitlab-languages --cache cache.json --args owned=True # more info about usage: see below
installation from source
-
Install python dependencies
poetry install
-
Set the required environment variables
export GITLAB_TOKEN=<SOME_TOKEN_WITH_API_SCOPE> export GITLAB_URL=https://gitlab.com # optional, defaults to https://gitlab.com # optional: export WORKER_COUNT=24
-
Run the tool
gitlab-languages
usage
usage: gitlab_languages [-h] [--project_limit PROJECT_LIMIT]
[--args ARGS [ARGS ...]]
[--groups GROUPS [GROUPS ...]]
[--ignore_groups IGNORE_GROUPS [IGNORE_GROUPS ...]]
[--cache CACHE] [-o OUTPUT]
optional arguments:
-h, --help show this help message and exit
--project_limit PROJECT_LIMIT
Set project limit to scan
--args ARGS [ARGS ...]
Provide custom args to the GitLab API
--groups GROUPS [GROUPS ...]
Scan only certain groups
--ignore_groups IGNORE_GROUPS [IGNORE_GROUPS ...]
Ignore certain groups and their projects
--cache CACHE Cache file to use
-o OUTPUT, --output OUTPUT
Location of the metrics file output
additional arguments
You can specify additional arguments, that will be directly supplied to the python-gitlab library or to the GitLab API endpoint. Example:
gitlab-languages --args owned=True
More info about the available additional args can be found here:
example output
The output will look something like this:
metrics.txt
# HELP languages_percent Languages scanned in percent
# TYPE languages_percent gauge
languages_percent{language="Java"} 11.73
languages_percent{language="CSS"} 1.97
languages_percent{language="TypeScript"} 3.5
languages_percent{language="HTML"} 6.14
languages_percent{language="JavaScript"} 17.16
languages_percent{language="Python"} 10.4
languages_percent{language="Modelica"} 3.7
languages_percent{language="TeX"} 1.64
languages_percent{language="Shell"} 6.35
languages_percent{language="Batchfile"} 0.76
languages_percent{language="HCL"} 7.15
languages_percent{language="BitBake"} 0.56
languages_percent{language="C"} 5.25
languages_percent{language="C++"} 0.72
languages_percent{language="Matlab"} 2.77
languages_percent{language="TXL"} 0.05
languages_percent{language="Objective-C"} 1.48
languages_percent{language="XSLT"} 1.68
languages_percent{language="Perl"} 1.71
languages_percent{language="Ruby"} 0.03
languages_percent{language="C#"} 10.3
languages_percent{language="PowerShell"} 0.11
languages_percent{language="Pascal"} 0.01
languages_percent{language="ASP"} 0.0
languages_percent{language="PLpgSQL"} 0.0
languages_percent{language="Makefile"} 2.06
languages_percent{language="SQLPL"} 0.0
languages_percent{language="Puppet"} 0.0
languages_percent{language="Groovy"} 2.56
languages_percent{language="M4"} 0.01
languages_percent{language="Roff"} 0.15
languages_percent{language="CMake"} 0.01
languages_percent{language="NSIS"} 0.01
languages_percent{language="PHP"} 0.0
languages_percent{language="Go"} 0.0
languages_percent{language="Smalltalk"} 0.02
languages_percent{language="Visual Basic"} 0.0
languages_percent{language="Smarty"} 0.0
# HELP languages_scanned_total Total languages scanned
# TYPE languages_scanned_total gauge
languages_scanned_total 38.0
# HELP projects_scanned_total Total projects scanned
# TYPE projects_scanned_total gauge
projects_scanned_total 61.0
# HELP projects_skipped_total Total projects skipped
# TYPE projects_skipped_total gauge
projects_skipped_total 0.0
# HELP projects_no_language_total Projects without language detected
# TYPE projects_no_language_total gauge
projects_no_language_total 39.0
# HELP groups_scanned_total Total groups scanned
# TYPE groups_scanned_total gauge
groups_scanned_total 0.0
Run the script via GitLab CI with schedules and export the metrics.txt file as GitLab pages. Then you can add it to your Prometheus instance as scrape source.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for gitlab_languages-2.4.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b4f6e5fbdd8a6106c17a74dad9507a78d767efaba4a2ce7c6512f88bea7db7f |
|
MD5 | a0e3433a0101d60fe8dead7a3f5c8a6a |
|
BLAKE2b-256 | 572d17e73e2e6a467b39250b5f04d8376abd8fa018df17f6571452323c800d93 |