Case Study: Grammarly
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
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
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
sum(avg_over_time(process_resident_memory_bytes[24h]))
sum(rate(process_cpu_seconds_total[24h]))
sum(max_over_time(vm_cache_entries{type="storage/hour_metric_ids"}[24h]))
sum(increase(vm_new_timeseries_created_total[24h]))
sum(rate(vm_rows_inserted_total[24h]))
sum(vm_rows{type=~"storage/.+"})
sum(vm_rows{type="indexdb"}))
sum(vm_data_size_bytes{type=~"storage/.+"})
sum(vm_data_size_bytes{type="indexdb"})
sum(vm_data_size_bytes) / sum(vm_rows)
sum(rate(vm_http_requests_total{path=~".*/api/v1/query_range"}[24h]))
sum(rate(vm_http_requests_total{path=~".*/api/v1/query"}[24h]))
max(avg_over_time(vm_request_duration_seconds{path=~".*/api/v1/query_range"}[24h])) by (quantile)
0.500 0.006s
0.900 0.3s
0.970 1.04s
0.990 2.21s
max(avg_over_time(vm_request_duration_seconds{path=~".*/api/v1/query"}[24h])) by (quantile)
0.500 0.007s
0.900 0.2s
0.970 1s
0.990 2.6s