View
775
Download
0
Embed Size (px)
DESCRIPTION
Naarad is an open-source performance analysis tool (https://github.com/linkedin/naarad) written in python and developed by the Performance team. Naarad analyzes various metrics (gc, sar, Jmeter etc), evaluates SLAs and generates a user friendly report to aid in performance analysis and investigations. In this talk, we will give an overview of Naarad, its usage, examples use-cases, its architecture and our future plans.
Citation preview
NaaradA Performance Analysis Tool
Ritesh Maheshwari, Sharad GandhiPerformance Team @ LinkedIngithub.com/linkedin/naarad
2
Agenda
1. Motivation2. What is Naarad?3. Architecture4. Usage5. Demo6. Extending Naarad7. Next Play
3
4
Environment Setup
Monitoring
Test Kickoff
Metrics Collection
Parse
Grade
Report
Analysis
Performance Analysis
5
Environment Setup
Monitoring
Test Kickoff
Metrics Collection
Parse
Grade
Report
Analysis
NAARAD
6
What is Naarad?
• Naarad is a performance analysis tool– Analyze various metrics– Evaluate rules / SLAs– Visualize Data (plot timeseries, CDF)– Compare (diff)– CLI / Python API
• Open Sourced – http://github.com/linkedin/naarad
7
Fetch & Parse
Run CommandRun Command
DiffReport
NAARAD
Analysis
Visualization
config
GC Logs
System Metrics
inGraphs
…
Workload Logs
Report
Pass or
Fail
8
Fetch & Parse
Run CommandRun Command
DiffReport
NAARAD
Analysis
Visualization
config
Report 2
Report 1
Pass or
Fail
9
Extensible Architecture
metric charting reporting
• Delimited files• GC logs• sar• /proc metrics• RUM logs• Jmeter logs• netstat• cluster
• png (matplotlib)• svg (pygal)• js (dygraphs)
NAARAD
• Jinja2 templates
10
Supports Proprietary Extensions
metric charting reporting
NAARAD
inGraphs HighCharts Custom templates
ProprietaryOpen Source
11
Usage
NAARADPython API
API ClientsContinuous Integration
CLI
12
Extensible Architecture
metric charting reporting
• Delimited files• GC logs• sar• /proc metrics• RUM logs• Jmeter logs• netstat• cluster
• png (matplotlib)• svg (pygal)• js (dygraphs)
NAARAD
• analysis report• diff report• Jinja2 templates
13
Adding New Metricsmetric
collect()
parse()
calc()
calculate_stats()
check_sla()
graph_data()
custom metric
parse()
Fetch Logs
Parse Logs
Derived metrics
Calculate Statistics
Validate SLAs
Plot timeseries, cdf charts
14
$ sar –n DEV 1 3
SAR-dev.eth0.rxpck-per-s.csv SAR-dev.eth0.rxkB-per-s.csv
15
Next Play
• Root Cause Analysis– Anomaly Detection– Metric Correlation– Potential Culprits Stack Ranked
• Pip install