Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Graphite 1.0-ish

Jason Dixon
November 30, 2016

Graphite 1.0-ish

Jason Dixon

November 30, 2016
Tweet

More Decks by Jason Dixon

Other Decks in Programming

Transcript

  1. The Launch of
    Graphite 1.0-ish
    aka the cage match between 0.9.x and 0.10.0

    View Slide

  2. what is graphite?

    View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. View Slide

  7. how did we get here?

    View Slide

  8. View Slide

  9. http://www.aosabook.org/en/
    graphite.html

    View Slide

  10. View Slide

  11. the changing tsdb
    landscape

    View Slide

  12. the not-so-secret
    secret about tsdb’s

    View Slide

  13. the future now of graphite

    View Slide

  14. not 0.9.x

    View Slide

  15. but I love 0.9.x

    View Slide

  16. ok, so what now?

    View Slide

  17. live demo

    View Slide

  18. highlights

    View Slide

  19. pluggable storage finders
    • standard (whisper, rrd)
    • ceres
    • Cyanite (external, Cassandra-based)
    • KairosDB (external)
    • OpenTSDB (external)
    • < your custom finder here >

    View Slide

  20. pluggable carbon
    protocols

    View Slide

  21. zomg so much test
    coverage special thanks
    to @brutasse @cbowman0

    View Slide

  22. improved brace
    expansion and globstar
    support

    View Slide

  23. View Slide

  24. improved unicode,
    timezone, and special
    char support throughout

    View Slide

  25. updated requirements
    • Python 2.7
    • Django 1.9 (graphite-web)
    • Twisted 13.2+ (carbon)

    View Slide

  26. new (optional) components
    • Carbonate (rebalancing suite)
    • Ceres (experimental tsdb)

    View Slide

  27. zomg new functions

    View Slide

  28. View Slide

  29. aggregateLine

    View Slide

  30. avg
    min
    max

    View Slide

  31. applyByNode

    View Slide

  32. i tried i really did but you
    should just go read the
    applyByNode function docs
    because omg i can’t even

    View Slide

  33. averageOutsidePercentile

    View Slide

  34. View Slide

  35. delay

    View Slide

  36. View Slide

  37. fallbackSeries

    View Slide

  38. fallbackSeries(foo.requests,
    constantLine(0))

    View Slide

  39. grep

    View Slide

  40. View Slide

  41. groupByNodes

    View Slide

  42. groupByNodes(app.server*.*.reqs.*,
    "sumSeries",1,4)

    View Slide

  43. integralByInterval

    View Slide

  44. View Slide

  45. interpolate

    View Slide

  46. sorta behaves like
    lineMode=connected except it
    also supports a limit arg for how
    many null values to interpolate over

    View Slide

  47. invert

    View Slide

  48. View Slide

  49. View Slide

  50. isNonNull

    View Slide

  51. View Slide

  52. linearRegression

    View Slide

  53. View Slide

  54. linearRegressionAnalysis

    View Slide

  55. View Slide

  56. mapSeries
    reduceSeries

    View Slide

  57. map and reduce,
    nbd (again, rtd)

    View Slide

  58. multiplySeriesWithWildcards

    View Slide

  59. just like the other
    *SeriesWithWildcards
    functions but more fun,
    because multiplication

    View Slide

  60. offsetToZero

    View Slide

  61. basically treats the lowest value in
    a series as the floor and subtracts
    that from all values in the series

    View Slide

  62. View Slide

  63. zomg are we done yet

    View Slide

  64. pow

    View Slide

  65. power(foo.bar, 10)
    factor

    View Slide

  66. removeBetweenPercentile

    View Slide

  67. only render series that have a
    value outside the Nth percentile
    of all values within an interval

    View Slide

  68. View Slide

  69. removeEmptySeries

    View Slide

  70. View Slide

  71. sortByTotal

    View Slide

  72. sort series by the sum
    of their total values

    View Slide

  73. squareRoot

    View Slide

  74. View Slide

  75. timeSlice

    View Slide

  76. used to limit values to a specific set of
    intervals within the larger time range, e.g.
    when you’re interested in a contiguous
    span across disparate metrics

    View Slide

  77. View Slide

  78. verticalLine

    View Slide

  79. verticalLine("-1h")

    View Slide

  80. weightedAverage

    View Slide

  81. View Slide

  82. zomg new display
    formats

    View Slide

  83. pdf

    View Slide

  84. View Slide

  85. width=2000&height=800
    format=pdf

    View Slide

  86. View Slide

  87. dygraph

    View Slide

  88. rickshaw

    View Slide

  89. no surprises, work as intended,
    useful for quick prototyping with
    their respective frameworks

    View Slide

  90. zomg new graph
    options

    View Slide

  91. hideNullFromLegend

    View Slide

  92. hideXAxis

    View Slide

  93. noNullPoints
    (format=json)

    View Slide

  94. pieLabels
    valueLabels
    valueLabelsColor
    valueLabelsMin

    View Slide

  95. View Slide

  96. anything else because we
    still have some time left
    on the clock I think?

    View Slide

  97. live demo

    View Slide

  98. new logo

    View Slide

  99. View Slide

  100. zomg new settings

    View Slide

  101. INTRACLUSTER_HTTPS

    View Slide

  102. MAX_TAG_LENGTH

    View Slide

  103. DATE_FORMAT

    View Slide

  104. WHISPER_FADVISE_RANDOM

    View Slide

  105. MAX_RECEIVER_CONNECTIONS

    View Slide

  106. ok I think that’s all but if we have
    time left I guess I can answer
    questions or rant about Trump or
    whatever

    View Slide

  107. thank you

    View Slide