2021-04-14 11:14:51 +02:00
---
2023-10-13 13:54:33 +02:00
sort: 31
weight: 31
2023-04-30 12:31:45 +02:00
title: VictoriaMetrics Cluster Per Tenant Statistic
menu:
docs:
2023-10-13 13:54:33 +02:00
parent: 'victoriametrics'
weight: 31
2023-04-30 12:31:45 +02:00
aliases:
- /PerTenantStatistic.html
2021-04-14 11:14:51 +02:00
---
2021-04-25 10:34:28 +02:00
# VictoriaMetrics Cluster Per Tenant Statistic
2021-04-14 10:17:52 +02:00
2023-10-18 20:06:23 +02:00
***The per-tenant statistic is a part of [enterprise package ](https://docs.victoriametrics.com/enterprise.html ). It is available for download and evaluation at [releases page ](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest ). You need to request a [free trial license ](https://victoriametrics.com/products/enterprise/trial/ ) for evaluation.***
2021-06-22 11:43:01 +02:00
2023-11-22 17:22:41 +01:00
< img alt = "cluster-per-tenant-stat" src = "PerTenantStatistic-stats.webp" >
2021-04-14 10:17:52 +02:00
2021-04-25 10:34:28 +02:00
VictoriaMetrics cluster for enterprise provides various metrics and statistics usage per tenant:
2022-03-22 12:40:55 +01:00
2021-04-14 10:17:52 +02:00
- `vminsert`
2022-03-22 12:40:55 +01:00
- `vm_tenant_inserted_rows_total` - total number of inserted rows. Find out which tenant
puts the most of the pressure on the storage.
2021-04-14 10:17:52 +02:00
- `vmselect`
2022-03-22 12:40:55 +01:00
- `vm_tenant_select_requests_duration_ms_total` - query latency.
2021-04-25 10:34:28 +02:00
Helps to identify tenants with the heaviest queries.
2022-03-22 12:40:55 +01:00
- `vm_tenant_select_requests_total` - total number of requests.
2021-04-25 10:34:28 +02:00
Discover which tenant sends the most of the queries and how it changes with time.
2021-04-14 10:17:52 +02:00
- `vmstorage`
2022-03-22 12:40:55 +01:00
- `vm_tenant_active_timeseries` - number of active time series.
This metric correlates with memory usage, so can be used to find the most expensive
tenant in terms of memory.
- `vm_tenant_used_tenant_bytes` - disk space usage. Helps to track disk space usage
2021-04-25 10:34:28 +02:00
per tenant.
2022-03-22 12:40:55 +01:00
- `vm_tenant_timeseries_created_total` - number of new time series created. Helps to track
2021-04-25 10:34:28 +02:00
the churn rate per tenant, or identify inefficient usage of the system.
2021-04-14 10:17:52 +02:00
2022-03-22 12:40:55 +01:00
Collect the metrics by any scrape agent you like (`vmagent`, `victoriametrics` , Prometheus, etc) and put into TSDB.
2021-04-25 10:34:28 +02:00
It is ok to use existing cluster for storing such metrics, but make sure to use a different tenant for it to avoid collisions.
2023-05-10 09:50:41 +02:00
Or just run a separate TSDB (VM single, Prometheus, etc.) to keep the data isolated from the main cluster.
2021-04-14 10:17:52 +02:00
2022-03-22 12:40:55 +01:00
Example of the scraping configuration for statistic is the following:
2021-04-14 10:17:52 +02:00
```yaml
scrape_configs:
- job_name: cluster
scrape_interval: 10s
static_configs:
- targets: ['vmselect:8481','vmstorage:8482','vminsert:8480']
```
2021-04-25 10:34:28 +02:00
## Visualization
2021-04-14 10:17:52 +02:00
2024-01-21 23:09:19 +01:00
Use [this dashboard ](https://grafana.com/grafana/dashboards/16399 ) for visualizing per-tenant statistics in Grafana.
2021-04-14 10:17:52 +02:00
2021-04-25 10:34:28 +02:00
## Integration with vmgateway
2021-04-14 10:17:52 +02:00
2022-03-22 12:40:55 +01:00
`vmgateway` supports integration with Per Tenant Statistics data for rate limiting purposes.
2021-04-25 10:34:28 +02:00
More information can be found [here ](https://docs.victoriametrics.com/vmgateway.html )
2021-04-14 10:17:52 +02:00
2021-04-25 10:34:28 +02:00
## Integration with vmalert
2021-04-14 10:17:52 +02:00
2022-03-22 12:40:55 +01:00
You can generate alerts based on each tenant's resource usage and send notifications
2021-04-25 10:34:28 +02:00
to prevent limits exhaustion.
2021-04-14 10:17:52 +02:00
2021-04-25 10:34:28 +02:00
Here is an alert example for high churn rate by the tenant:
2021-04-14 10:17:52 +02:00
2022-05-16 09:27:19 +02:00
{% raw %}
2021-04-14 10:17:52 +02:00
```yaml
- alert: TooHighChurnRate
expr: |
(
sum(rate(vm_tenant_timeseries_created_total[5m])) by(accountID,projectID)
/
sum(rate(vm_tenant_inserted_rows_total[5m])) by(accountID,projectID)
) > 0.1
for: 15m
labels:
severity: warning
annotations:
summary: "Churn rate is more than 10% for the last 15m"
2021-04-14 17:44:24 +02:00
description: "VM constantly creates new time series in the tenant: {{ $labels.accountID }}:{{ $labels.projectID }}.\n
2021-04-14 10:17:52 +02:00
This effect is known as Churn Rate.\n
2021-04-14 17:44:24 +02:00
High Churn Rate is tightly connected with database performance and may
2021-04-14 10:17:52 +02:00
result in unexpected OOM's or slow queries."
```
2022-05-16 09:27:19 +02:00
{% endraw %}