On 09/12/2020 13:10, Animesh Kumar wrote:
> Hi Team,
>
> I am trying to check if we can make Prometheus tenant aware in such a
> way that there is a data separation.
>
Prometheus has no native support for multi-tenancy. All data within a
single Prometheus server is stored together. It would be possible to
have a label to indicate the tenant for every metric, but you'd need to
ensure that was applied everywhere (for queries you could use the query
proxy). Having all data within a single Prometheus could have problems.
You might find that the overall usage of the Prometheus server (number
of metrics and queries) could become bigger than you can accommodate
(e.g. memory needed). Also as everything is shared you wouldn't be able
to have different retention periods or other settings (like query
limits) and you would find that one tenant could easily impact on others
(e.g. more scrapes or running large queries).
Having said that several of the Prometheus scaling & remote read/write
solutions such as Thanos do support different levels of multi-tenancy,
usually allowing you to segment storage or run queries in a way that
prevents cross-tenant impact. Alternatively you could just run a
separate Prometheus server for each tenant. The overhead for running
multiple instances isn't all that high, so you shouldn't really see many
downsides compared to a single shared instance, while getting the
advantages of separate storage, independent settings and lack of
cross-tenant impacts.