Maia is a multi-tenant OpenStack-service for accessing metrics and alarms collected through Prometheus. It offers a Prometheus-compatible API and supports federation.
At SAP we use it to share tenant-specific metrics from our Converged Cloud platform with our users. For their convenience we included a CLI, so that metrics can be discovered and retrieved from shell scripts.
If you don't use OpenStack, you can still use Maia CLI as a feature-complete shell client for Prometheus.
- Multi-tenant Prometheus API offering isolation and resource restriction
- Supports both project and domain-based authentication from OpenStack
- Global region support for virtual region metric queries using global keystone authentication
- Fetches required service endpoints from Keystone service catalog
- JSON Web Token validation for the OpenStack Elektra UI
- OpenStack Identity v3 authentication and authorization
- Project- and domain-level access control (scoping)
- Compatible to Grafana's Prometheus data source
- Compatible to Prometheus API (read-only)
- Supports secure federation to additional Prometheus instances
- Prometheus expression browser adapted to Maia
- Browse projects and metrics
- Perform ad-hoc PromQL queries
- Graph metrics
- Feature-complete CLI supporting all API operations
- JSON and Go-template-based output for reliable automation
- Works with Prometheus, too (no OpenStack required)
- Global region support via
--globalflag for querying metrics from virtual/global regions
Maia can be built with Go 1.20. Older versions are not supported. Newer versions are not tested.
Binary releases for Linux and MacOS can be downloaded from the GitHub releases area.
maketo compile and run the binaries from thebuild/directorymake && make installto install to/usrmake && make install PREFIX=/some/pathto install to/some/pathmake dockerto build the Docker image (set image name and tag with theDOCKER_IMAGEandDOCKER_TAGvariables)
Maia can be used via Web-UI or CLI.
Enter maia --help to see a list of commands and options.
The Maia CLI supports querying metrics from global/virtual regions using the --global flag:
# Query metrics from the regional backend (default)
maia query "up"
# Query metrics from the global backend
maia query "up" --global
# Compare metrics between regional and global
maia series --selector="job=prometheus" # Regional
maia series --selector="job=prometheus" --global # GlobalNote: The --global flag requires that the Maia server is configured with global keystone support. The CLI uses the same environment variables (OS_USERNAME, OS_PASSWORD, etc.) for both regional and global queries - the flag simply tells the server which backend keystone to use.
Please refer to the Maia user guide for more instructions.
The easiest way to deploy Maia as a service is Kubernetes.
Feel free to reuse our Maia helm chart which includes Maia, Prometheus and Thanos.
Follow the Maia operators guide to learn how to setup the Maia service from scratch and integrate with Prometheus.
The Maia developers guide describes how to use the Maia API. Also it contains information how to contribute to the Maia development.
This project is open to feature requests/suggestions, bug reports etc. via GitHub issues. Contribution and feedback are encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our Contribution Guidelines.
If you find any bug that may be a security problem, please follow our instructions in our security policy on how to report it. Please do not create GitHub issues for security-related doubts or problems.
We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone. By participating in this project, you agree to abide by its Code of Conduct at all times.
Copyright 2017-2025 SAP SE or an SAP affiliate company and maia contributors. Please see our LICENSE for copyright and license information. Detailed information including third-party components and their licensing/copyright information is available via the REUSE tool.