Case Study: Grammarly

“VictoriaMetrics Just Works - and Uses Fewer Hardware Resources Compared to Other Tools!”
Industry:
Internet
Location:
San Francisco, USA
Size:
500+ Employees

Grammarly’s digital writing assistant supports more than 30 million DAUs and 30,000 teams write more clearly and effectively every day. In building a product that scales across multiple platforms and devices, Grammarly works to empower users whenever and wherever they communicate.

Grammarly’s values-driven team is growing to support our expanding user base and to continue developing our writing assistant into a truly comprehensive communication partner. With a working model that balances remote work with in-person collaboration at Grammarly’s hubs in San Francisco, Kyiv, New York, and Vancouver, the Grammarly team strives to help people around the world connect and be understood.

Mission: Improve lives by improving communication.

Main Benefits of Using VictoriaMetrics

10x Cost Savings
Ingestion Types Flexibility
Performance
Easy to Get Started
Responsive VM Developers
Great Support & Docs

Challenge

The maintenance and scaling of our previous on-premises monitoring system was hard and required major engineering time and resources to maintain.

The stability of the previous solution was unreliable..

Our previous system struggled with storing frequently changing metrics (the moderate churn rate was a concern).

The overall costs of the previous solution were too high.

Solution

Ingestion type flexibility (support for Graphite, OpenMetrics, etc.) was definitely a winning feature and important benefit for us.

VictoriaMetrics comes with good documentation and is easy to bootstrap.

The high level of responsiveness of the VictoriaMetrics developers and support team during our research phase and production have made us extremely happy customers.

Delivered 10x cost savings versus our prior monitoring solution.

Why VictoriaMetrics Was Chosen Over Other Solutions

Great On-Premises Solution
Outperformed Competitive Solutions in Benchmarks
Strong POC Results
Direct Access & Great Support by VM Developers

After trying out SaaS solutions we decided to go with an in-house setup. Out of the various in-house tools we had short-listed, we decided to try VM first during a PoC taking into account publicly available benchmarking with competitive solutions. The PoC results and the VictoriaMetrics developers' help made it an easy decision to move forward with a VictoriaMetrics solution.

Technical Stats

Median memory usage during the last 24h
sum(median_over_time(process_resident_memory_bytes[24h]))
259139604480
The average number of cpu cores used during the last 24h
sum(rate(process_cpu_seconds_total[24h]))
11.682877662037036
The maximum number of active time series during the last 24 hours
sum(max_over_time(vm_cache_entries{type="storage/hour_metric_ids"}[24h]))
34977029
Daily time series churn rate
sum(increase(vm_new_timeseries_created_total[24h]))
27044806
The average ingestion rate over the last 24h
sum(rate(vm_rows_inserted_total[24h]))
940492.9308449074
The total number of datapoints
sum(vm_rows{type=~"storage/.+"})
44053965771564
The total number of entries in inverted index
sum(vm_rows{type="indexdb"}))
58236641714
Data size on disk
sum(vm_data_size_bytes{type=~"storage/.+"})
23779454484390
Index size on disk:
sum(vm_data_size_bytes{type="indexdb"})
719254374771
The average datapoint size on disk
sum(vm_data_size_bytes) / sum(vm_rows{type=~"storage/.+"})
0.5561141337896018
The average range query rate over the last 24h
sum(rate(vm_http_requests_total{path=~".*/api/v1/query_range"}[24h]))
357.4513425925926
The average instant query rate over the last 24h
sum(rate(vm_http_requests_total{path=~".*/api/v1/query"}[24h]))
23.650289351851853
Median range query duration quantiles over the last 24h
max(median_over_time(vm_request_duration_seconds{path=~".*/api/v1/query_range"}[24h])) by (quantile)
1          0.214827286
0.500  0.001001687
0.900  0.001084474
0.970  0.001161109
0.990  0.00149857
Median instant query duration quantiles over the last 24h
max(median_over_time(vm_request_duration_seconds{path=~".*/api/v1/query"}[24h])) by (quantile)
1          0.72570606
0.500  0.002041698
0.900  0.072547807
0.970  0.288032203
0.990  0.490414721

Watch Your Monitoring SkyRocket With VictoriaMetrics!