SlideShare a Scribd company logo
GO Monitoring at Lazada
Rinat Takhautdinov & Ninh Dang
Senior Software Engineers at PDP Vertical Team – Lazada
Golang meetup # 11
About Us – PDP Vertical Department
- We’re doing product development at Lazada
- Product Detail Page
- Home Page
- Login/Signup
- Work mostly with Golang and PHP
Golang meetup # 11
- Overview of time-series metrics monitoring
- Big picture
- Prometheus
- Grafana
- How monitoring helps us at Lazada
- Use case 1: Product Ratings & Reviews performance optimization
- Use case 2: Shaping the product for Buyer-Seller Communication
- Conclusions
Agenda
Golang meetup # 11
- Overview of time-series metrics monitoring
- Big picture
- Prometheus
- Grafana
- How monitoring helps us at Lazada
- Use case 1: Product Ratings & Reviews performance optimization
- Use case 2: Shaping the product for Buyer-Seller Communication
- Conclusions
Agenda
Golang meetup # 11
Monitoring: General Architecture
http://service:port/metrics
Golang meetup # 11
What does Prometheus do?
• Time series database
• Written in Go - no external
dependencies
• Powerful functional query
language
• Pull, not push
• Thousands of targets
• Hundreds of thousands of
samples per second
• Millions of time series
• Distributed (or not)
a) can be run as a single node
b) can be run as a cluster for
redundancy & performance
Golang meetup # 11
Exporters and direct instrumentation
Client libraries
https://prometheus.io/docs/instrumenting/clientlibs/
Official
Go (https://github.com/prometheus/client_golang)
Java (JVM)
Ruby
Python
Unofficial
.NET / C#
Node.js
Bash
Exporters
https://prometheus.io/docs/instrumenting/exporters/
Official
Node/system metrics exporter
Graphite exporter
Collectd exporter
JMX exporter
HAProxy exporter
StatsD bridge
AWS CloudWatch exporter
Hystrix metrics publisher
Mesos task exporter Consul exporter
Direct instrumentation
Kubernetes
Kubernetes-Mesos
Etcd
gokit
go-metrics instrumentation library
Golang meetup # 11
Metrics and labels
Metric types:
- counter
- gauge
- histogram
- summary
var httpResponsesTotal = prometheus.NewCounterVec(
prometheus.CounterOpts{
Namespace: "my_super_puper_production",
Subsystem: "http_server",
Name: "http_responses_total",
Help: "The count of http responses issued, classified by
code and method.",
},
[]string{"code", "method"},
)
Listing 1
CAUTION: Remember that every unique combination of key-
value label pairs represents a new time series, which can
dramatically increase the amount of data stored. Do not use
labels to store dimensions with high cardinality (many different
label values), such as user IDs, email addresses, or other
unbounded sets of values.
Golang meetup # 11
Powerful query language
topk(3, sum(rate(bazooka_instance_cpu_time_ns[5m])) by (app, proc))
sort_desc(sum(bazooka_instance_memory_limit_bytes -
bazooka_instance_memory_usage_bytes) by (app, proc))
Expression browser
Golang meetup # 11
Grafana
Golang meetup # 11
Grafana
Golang meetup # 11
Grafana
Golang meetup # 11
- Overview of time-series metrics monitoring
- Big picture
- Prometheus
- Grafana
- How monitoring helps us at Lazada
- Use case 1: Product Ratings & Reviews performance optimization
- Use case 2: Shaping the product for Buyer-Seller Communication
- Conclusions
Agenda
Golang meetup # 11
Product Ratings & Reviews
Golang meetup # 11
Problem – High level
- Lazada has many campaigns throughout the year
- How do we prepare for the campaigns?
- Stress tests + monitoring
- Find & fix bottlenecks
- Verify results
- What happened to us?
- Site was broken, checkout not working
- Backend service alert (Review API)
Golang meetup # 11
Review API architecture
Golang meetup # 11
What do we monitor for our Review API?
- CPU / memory
- Goroutines
- Avg RT, RT per handler
- Error rates
- Throughput [per clients]
- DB connection
- Cache size (number of items)
- Cache hits / misses (utilization)
- …
Golang meetup # 11
What do we monitor for our Review API?
Golang meetup # 11
What do we monitor for our Review API?
Golang meetup # 11
What we found in our case?
- Number of cache items went up very high
- Review API version fragmentation
- Many calls on old version API endpoints
Golang meetup # 11
Optimization in action
1. Reduce number of calls from clients.
2. Force all clients move to use the latest versions.
3. Deprecate outdated handlers (keep multi-version of API is expensive)
Golang meetup # 11
Feel rock?
Golang meetup # 11
Business metrics monitoring for product development
Product delivering focused team
Many kind of KPIs how to check product health need to tracked
A lot of ideas how to make our products better
Limited capacity to do it
Smooth rollout and looking for better way
Golang meetup # 11
Business metrics monitoring for product development
Golang meetup # 11
Business metrics monitoring for product development
- Helps us to validate and evolve our MVP
- Transparent for everyone (e.g. dev team, country PMs)
- Real time tracking product health
Golang meetup # 11
Conclusions
- Having monitoring is extremely critical for any business
- If you have many teams, having standard is important
- Define most important metrics for each microservice
- Have some TV screens with some graphs near your team
corner!
Golang meetup # 11
Q&A
Golang meetup # 11
- WE ARE HIRING!
- 4 x Senior Backend Developers (GO/PHP)
- Contact us for more information:
- ninh.dang@lazada.com
- rinat.takhautdinov@lazada.com

More Related Content

PPTX
SemVer and microservices in go
PPTX
Test armada integration with sauce labs
PPTX
Quality automation at walmart scale
PPTX
Why we used Feature Branching
PDF
Introduction to Back End Automation Testing - Nguyen Vu Hoang, Hoang Phi
PDF
Performance profiling and testing of symfony application 2
KEY
improving the performance of Rails web Applications
PDF
Mobile App Development for Startups | Phase Specific Presentation
SemVer and microservices in go
Test armada integration with sauce labs
Quality automation at walmart scale
Why we used Feature Branching
Introduction to Back End Automation Testing - Nguyen Vu Hoang, Hoang Phi
Performance profiling and testing of symfony application 2
improving the performance of Rails web Applications
Mobile App Development for Startups | Phase Specific Presentation

Similar to GO Monitoring at lazada (20)

PDF
Google App Engine – niekonwencjonalna platforma aplikacji SaaS do Twojego nas...
PDF
An Introduction to Microservices
PDF
apidays LIVE Paris - GraphQL meshes by Jens Neuse
ODP
Google App Engine - unusual application plaform for your next SaaS Project
PDF
2024-11-19 UI Automation at Contentserv Sergej Mudruk
DOCX
Shriraam-performance test engineer 5.4 years
DOCX
Updated resume
PPTX
Splunk for Developers Breakout Session
PPTX
SplunkLive! Seattle - Splunk for Developers
PDF
Google BigQuery for Everyday Developer
PDF
Apache Flink Adoption at Shopify
PDF
Google Cloud Platform Solutions for DevOps Engineers
PPTX
How to Improve Performance Testing Using InfluxDB and Apache JMeter
PPTX
Splunk for Developers
PDF
Performance Testing ISV Apps to Scale 11/9/2016
PDF
Performance Testing ISV Apps to Scale
DOCX
Sudheer_SAP_ABAP_Resume
PPTX
Splunk for Developers
PPTX
Splunk for Developers
DOC
GaneshaShetty_Automation_Testing_Resume-Final
Google App Engine – niekonwencjonalna platforma aplikacji SaaS do Twojego nas...
An Introduction to Microservices
apidays LIVE Paris - GraphQL meshes by Jens Neuse
Google App Engine - unusual application plaform for your next SaaS Project
2024-11-19 UI Automation at Contentserv Sergej Mudruk
Shriraam-performance test engineer 5.4 years
Updated resume
Splunk for Developers Breakout Session
SplunkLive! Seattle - Splunk for Developers
Google BigQuery for Everyday Developer
Apache Flink Adoption at Shopify
Google Cloud Platform Solutions for DevOps Engineers
How to Improve Performance Testing Using InfluxDB and Apache JMeter
Splunk for Developers
Performance Testing ISV Apps to Scale 11/9/2016
Performance Testing ISV Apps to Scale
Sudheer_SAP_ABAP_Resume
Splunk for Developers
Splunk for Developers
GaneshaShetty_Automation_Testing_Resume-Final
Ad

More from Anton Stepanenko (6)

PPTX
Seamy side of autotests
PPTX
Functional monitoring
PPTX
Speeding up UI tests, profiling of UI tests
PPTX
Hand helper for manual testing
PPTX
Нагрузочное тестирование по-живому
PDF
Flow based programming in golang
Seamy side of autotests
Functional monitoring
Speeding up UI tests, profiling of UI tests
Hand helper for manual testing
Нагрузочное тестирование по-живому
Flow based programming in golang
Ad

Recently uploaded (20)

PDF
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
PPTX
bas. eng. economics group 4 presentation 1.pptx
PPTX
Current and future trends in Computer Vision.pptx
PPTX
UNIT-1 - COAL BASED THERMAL POWER PLANTS
PPTX
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
PPTX
OOP with Java - Java Introduction (Basics)
PDF
Model Code of Practice - Construction Work - 21102022 .pdf
PPTX
M Tech Sem 1 Civil Engineering Environmental Sciences.pptx
PDF
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
PDF
PPT on Performance Review to get promotions
PPT
Mechanical Engineering MATERIALS Selection
PDF
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
PDF
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
PPT
Project quality management in manufacturing
PDF
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
PDF
Enhancing Cyber Defense Against Zero-Day Attacks using Ensemble Neural Networks
PPTX
web development for engineering and engineering
PPTX
CH1 Production IntroductoryConcepts.pptx
DOCX
ASol_English-Language-Literature-Set-1-27-02-2023-converted.docx
PPTX
CYBER-CRIMES AND SECURITY A guide to understanding
Mohammad Mahdi Farshadian CV - Prospective PhD Student 2026
bas. eng. economics group 4 presentation 1.pptx
Current and future trends in Computer Vision.pptx
UNIT-1 - COAL BASED THERMAL POWER PLANTS
FINAL REVIEW FOR COPD DIANOSIS FOR PULMONARY DISEASE.pptx
OOP with Java - Java Introduction (Basics)
Model Code of Practice - Construction Work - 21102022 .pdf
M Tech Sem 1 Civil Engineering Environmental Sciences.pptx
Evaluating the Democratization of the Turkish Armed Forces from a Normative P...
PPT on Performance Review to get promotions
Mechanical Engineering MATERIALS Selection
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
July 2025 - Top 10 Read Articles in International Journal of Software Enginee...
Project quality management in manufacturing
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
Enhancing Cyber Defense Against Zero-Day Attacks using Ensemble Neural Networks
web development for engineering and engineering
CH1 Production IntroductoryConcepts.pptx
ASol_English-Language-Literature-Set-1-27-02-2023-converted.docx
CYBER-CRIMES AND SECURITY A guide to understanding

GO Monitoring at lazada

  • 1. GO Monitoring at Lazada Rinat Takhautdinov & Ninh Dang Senior Software Engineers at PDP Vertical Team – Lazada
  • 2. Golang meetup # 11 About Us – PDP Vertical Department - We’re doing product development at Lazada - Product Detail Page - Home Page - Login/Signup - Work mostly with Golang and PHP
  • 3. Golang meetup # 11 - Overview of time-series metrics monitoring - Big picture - Prometheus - Grafana - How monitoring helps us at Lazada - Use case 1: Product Ratings & Reviews performance optimization - Use case 2: Shaping the product for Buyer-Seller Communication - Conclusions Agenda
  • 4. Golang meetup # 11 - Overview of time-series metrics monitoring - Big picture - Prometheus - Grafana - How monitoring helps us at Lazada - Use case 1: Product Ratings & Reviews performance optimization - Use case 2: Shaping the product for Buyer-Seller Communication - Conclusions Agenda
  • 5. Golang meetup # 11 Monitoring: General Architecture http://service:port/metrics
  • 6. Golang meetup # 11 What does Prometheus do? • Time series database • Written in Go - no external dependencies • Powerful functional query language • Pull, not push • Thousands of targets • Hundreds of thousands of samples per second • Millions of time series • Distributed (or not) a) can be run as a single node b) can be run as a cluster for redundancy & performance
  • 7. Golang meetup # 11 Exporters and direct instrumentation Client libraries https://prometheus.io/docs/instrumenting/clientlibs/ Official Go (https://github.com/prometheus/client_golang) Java (JVM) Ruby Python Unofficial .NET / C# Node.js Bash Exporters https://prometheus.io/docs/instrumenting/exporters/ Official Node/system metrics exporter Graphite exporter Collectd exporter JMX exporter HAProxy exporter StatsD bridge AWS CloudWatch exporter Hystrix metrics publisher Mesos task exporter Consul exporter Direct instrumentation Kubernetes Kubernetes-Mesos Etcd gokit go-metrics instrumentation library
  • 8. Golang meetup # 11 Metrics and labels Metric types: - counter - gauge - histogram - summary var httpResponsesTotal = prometheus.NewCounterVec( prometheus.CounterOpts{ Namespace: "my_super_puper_production", Subsystem: "http_server", Name: "http_responses_total", Help: "The count of http responses issued, classified by code and method.", }, []string{"code", "method"}, ) Listing 1 CAUTION: Remember that every unique combination of key- value label pairs represents a new time series, which can dramatically increase the amount of data stored. Do not use labels to store dimensions with high cardinality (many different label values), such as user IDs, email addresses, or other unbounded sets of values.
  • 9. Golang meetup # 11 Powerful query language topk(3, sum(rate(bazooka_instance_cpu_time_ns[5m])) by (app, proc)) sort_desc(sum(bazooka_instance_memory_limit_bytes - bazooka_instance_memory_usage_bytes) by (app, proc)) Expression browser
  • 10. Golang meetup # 11 Grafana
  • 11. Golang meetup # 11 Grafana
  • 12. Golang meetup # 11 Grafana
  • 13. Golang meetup # 11 - Overview of time-series metrics monitoring - Big picture - Prometheus - Grafana - How monitoring helps us at Lazada - Use case 1: Product Ratings & Reviews performance optimization - Use case 2: Shaping the product for Buyer-Seller Communication - Conclusions Agenda
  • 14. Golang meetup # 11 Product Ratings & Reviews
  • 15. Golang meetup # 11 Problem – High level - Lazada has many campaigns throughout the year - How do we prepare for the campaigns? - Stress tests + monitoring - Find & fix bottlenecks - Verify results - What happened to us? - Site was broken, checkout not working - Backend service alert (Review API)
  • 16. Golang meetup # 11 Review API architecture
  • 17. Golang meetup # 11 What do we monitor for our Review API? - CPU / memory - Goroutines - Avg RT, RT per handler - Error rates - Throughput [per clients] - DB connection - Cache size (number of items) - Cache hits / misses (utilization) - …
  • 18. Golang meetup # 11 What do we monitor for our Review API?
  • 19. Golang meetup # 11 What do we monitor for our Review API?
  • 20. Golang meetup # 11 What we found in our case? - Number of cache items went up very high - Review API version fragmentation - Many calls on old version API endpoints
  • 21. Golang meetup # 11 Optimization in action 1. Reduce number of calls from clients. 2. Force all clients move to use the latest versions. 3. Deprecate outdated handlers (keep multi-version of API is expensive)
  • 22. Golang meetup # 11 Feel rock?
  • 23. Golang meetup # 11 Business metrics monitoring for product development Product delivering focused team Many kind of KPIs how to check product health need to tracked A lot of ideas how to make our products better Limited capacity to do it Smooth rollout and looking for better way
  • 24. Golang meetup # 11 Business metrics monitoring for product development
  • 25. Golang meetup # 11 Business metrics monitoring for product development - Helps us to validate and evolve our MVP - Transparent for everyone (e.g. dev team, country PMs) - Real time tracking product health
  • 26. Golang meetup # 11 Conclusions - Having monitoring is extremely critical for any business - If you have many teams, having standard is important - Define most important metrics for each microservice - Have some TV screens with some graphs near your team corner!
  • 27. Golang meetup # 11 Q&A
  • 28. Golang meetup # 11 - WE ARE HIRING! - 4 x Senior Backend Developers (GO/PHP) - Contact us for more information: - ninh.dang@lazada.com - rinat.takhautdinov@lazada.com

Editor's Notes