Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Stupid Graphite Tips
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Jason Dixon
November 04, 2013
Technology
4.9k
37
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Stupid Graphite Tips
My Ignite talk from DevOpsDays Portland on November 4, 2013.
Jason Dixon
November 04, 2013
More Decks by Jason Dixon
See All by Jason Dixon
Graphite 1.0-ish
obfuscurity
0
400
Monitorama PDX 2015 - Closing Plenary
obfuscurity
1
470
The State of Open-Source Monitoring
obfuscurity
145
50k
Trending with Purpose
obfuscurity
11
1.4k
Other Decks in Technology
See All in Technology
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
1
890
Dylib Hijacking on macOS: Dead or Alive?
patrickwardle
0
130
指示待ちから変化に応じるClaude Codeへ!~環境からAgentへの帰り道を作る~
gotalab555
8
1.6k
The Django UUID Story - DjangoCon US 2026
pauloxnet
0
310
AIレビュー時代に必要なのは、SLOで引く撤退ライン
nobuoooo
0
150
Claude Teamプランの コスト最適化を考える
rfdnxbro
1
800
LLMアプリ、 雰囲気で運用してませんか? 〜LLMOpsの現在地〜
taka_aki
1
560
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3.2k
Distributed Transactions Under Fire: Building a Zero-Oversell Flash Sale Platform with Amazon Aurora DSQL
yama3133
1
110
みてねにおけるAI-DLC導入活動とAIドリブン開発の現在地/JAWS-UG AI-DLC #2
isaoshimizu
2
280
最新技術に積極チャレンジ!EKS共通基盤のこれまでとこれから
daitak
0
250
AI駆動開発を組織で促すために
lycorptech_jp
PRO
7
8.7k
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Why Our Code Smells
bkeepers
PRO
340
58k
Being A Developer After 40
akosma
91
590k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Building an army of robots
kneath
306
46k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
400
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Technical Leadership for Architectural Decision Making
baasie
3
540
How to Talk to Developers About Accessibility
jct
2
530
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
490
Transcript
Stupid Graphite Tips DevOpsDays Portland 2013
What is Graphite? carbon whisper metrics
require 'socket' require ‘time’ conn = TCPSocket.new 'graphite.example.com', 2003 conn.puts
"foo #{value} #{Time.now.to_i}\n" conn.close metric key value timestamp $ echo "test.foo.bar 1 `date +%s`" | nc graphite.example.com 2003 metric key value timestamp Sending metrics to Carbon
Organizing metrics • Prefix with your collector/agent/app source • Keep
test/development stuff in check • Automatically purge test & release metrics • Avoid the urge to include your username
and Tracking deployments drawAsInfinite(color(custom.instances.*.killed,"white")) summarize(sumSeries(group(custom.instances.*.killed)), "1d")
mostDeviant(5, runtime.*.load.1m) Finding the Outliers p.s. Don’t forget about sortByMaxima,
sortByMinima and limit !
Adjusting Rate scale(nonNegativeDerivative(snmp.IF-MIB::ifInOctets.7),0.133333333) doesn’t scale! ... because as soon as
you hit a new resolution, your math is wrong. scaleToSeconds(nonNegativeDerivative(snmp.IF-MIB::ifInOctets.7),1)
Time Shifting sumSeries(mail.hosts.mta-*.messages.in) timeShift(sumSeries(mail.hosts.mta-*.messages.in),"6mon")
Counting metrics sumSeries(offset(scale(collectd.*.load.load.longterm,0),1))
Hybrid Graphs mail.hosts.mta-*.messages.in alpha(stacked(sumSeries(mail.hosts.mta-*.messages.in)),0.6)
Renaming Keys on-the-fly Ever wanted to redefine your metric key
in the middle of a query because the wildcard wasn’t quite in the right spot? aliasSub(hosts.web-01-pdx-prod-example- com.metric,”-(\w+)-prod”, ”.\1.prod”)
Graph Bookmarklet javascript:url=prompt("Enter Url");if (url) {content.Composer.loadMyGraph("temp", decodeURIComponent(url));};
Listing metrics $ curl -s http://graphite/metrics/index.json | json_pp | tail
"graphite-1.processes.ps_state-blocked.value", "graphite-1.processes.ps_state-paging.value", "graphite-1.processes.ps_state-running.value", "graphite-1.processes.ps_state-sleeping.value", "graphite-1.processes.ps_state-stopped.value", "graphite-1.processes.ps_state-zombies.value", "graphite-1.users.users.users", "test.bar", "test.foo" ]
Grokking Whisper $ whisper-info.py foo.wsp maxRetention: 31536000 xFilesFactor: 0.0 aggregationMethod:
average fileSize: 1262932 Archive 0 retention: 86400 secondsPerPoint: 1 points: 86400 size: 1036800 offset: 52 $ whisper-fetch.py foo.wsp | tail 1383585660! None 1383585720! 29.529000 1383585780! 87.016000 1383585840! 33.416000 1383585900! 29.012000 1383585960! 31.164000 1383586020! None 1383586080! 29.702000 1383586140! 29.299000 1383586200! None
Repairing Data $ whisper-fetch.py foo.wsp | grep -v None 1376066700
1.000000 1376066760 226.000000 1376066820 215.000000 1376066880 266.000000 1376066940 237.000000 1376072760 5.000000 1376074560 1.000000 1376075280 2.000000 $ for i in 1376066760 1376066820 1376066880 1376066940; \ do whisper-update.py foo.wsp ${i}:0"; done
Know your Carbon sumSeries(group(carbon.agents.*.updateOperations)) sumSeries(group(carbon.agents.*.metricsReceived)) sumSeries(group(carbon.agents.*.committedPoints)) secondYAxis(sumSeries(group(carbon.agents.*.pointsPerUpdate))) secondYAxis(averageSeries(group(carbon.agents.*.cpuUsage))) secondYAxis(sumSeries(group(carbon.agents.*.creates))) p.s.
Check out @scott_sanders’ collectd-tail examples https://gist.github.com/jssjr/35b592b4852625449c27
Tagged Events $ curl -X POST http://graphite/events/ \ -d '{"what":
"Something Interesting", "tags" : "wtf", "data" : "foo bar"}' events(“wtf”) events(“wtf”,”zomg”) events(“*”)
Dat Spark $ brew install spark $ curl -H 'Accept:
application/json' -s "http://graphite/ render/?target=foo&format=json&from=-30min" | json_pp | grep ',' | grep -v '\]' | grep -v target | spark ▂▂▁▂▂▂▂▂▁▃▁▂▂▂▄▃▂▂█▇▃█▂▃▂▃▁▂▄▂
Scaling dat Carbon Open Spaces, doge. omg multicore hip fanout
replication me much io vintage metrics
Thank You