10.9.10 2====== 3*5/31/12* 4 5Graphite 0.9.10 has been released and is now available. The packages for Whisper, Carbon, and Graphite-web are available via several sources: 6 7* Pypi (and by extension, `pip <http://www.pip-installer.org/en/latest/index.html>`_) 8 9 - http://pypi.python.org/pypi/graphite-web/ 10 - http://pypi.python.org/pypi/carbon/ 11 - http://pypi.python.org/pypi/whisper/ 12 13* Github 14 15 - https://github.com/graphite-project/graphite-web/downloads 16 - https://github.com/graphite-project/carbon/downloads 17 - https://github.com/graphite-project/whisper/downloads 18 19* Launchpad 20 21 - https://launchpad.net/graphite/0.9/0.9.10 22 23This release contains a fabulous amount of incremental improvement over 0.9.9. Some highlights include: 24* Fixes to several annoying Composer and Dashboard UI bugs 25* Import of Saved Graphs into Dashboards 26* Fixes to cache-full behavior for carbon-cache and carbon senders (relay and aggregator) 27* Many new useful render functions and graph options 28* Improvements to the rendering engine and fixes to many rendering bugs 29* Support for rendering graphs as annotated SVG 30* Better organized and more flexible Graphite-web config layout (local_settings.py) 31 32Upgrading from 0.9.9 should be as simple as updating the packages. It is recommended but not necessary that local_settings.py be recreated based on the newly shipped local_settings.py.example as it includes many newly exposed settings and an improved organization and comments. Carbon's config files also have a few new settings as well to check out. 33 34The Graphite project is also in the midst of some project changes. For those who have not yet noticed, the Graphite codebase has been moved to Github (http://github.com/graphite-project) and split into individual components (Graphite-web, Carbon, Whisper, and soon Ceres). The Launchpad project remains active in supporting the project with its Answers (http://answers.launchpad.net/graphite/) and Bugs (http://bugs.launchpad.net/graphite/) functionality. 35 36Development going forward will focus on preparing what will become Graphite 0.10.0 which will include support for the Ceres database format as well as a major refactor of the Carbon daemon (nicknamed "Megacarbon"). The master branches of the project should be considered to be in an 'alpha' state for the time being and subject to backwards-incompatible changes. Fixes to the current version will be maintained in the 0.9.x project branches but no 0.9.11 version is planned for the time being. 37 38A big thanks goes out to all those who have helped the project in contributions of time and energy in the form of code contributions, testing, discussion, and helping each other out with support questions. Additional thanks are due to Aman Gupta (tmm1) for all of his great work on the rendering engine and other fixes, Sidnei Da Silva for his work migrating the project to Github and his fixes, and everyone who's taken the time to answer questions on the Answers site and on IRC. 39 40As always, if you need any assistance please `ask a question <https://answers.launchpad.net/graphite>`_ or join us on IRC in #graphite on Freenode. 41 42The following is a summary of changes since the last release: 43 44New features 45------------ 46 47Whisper 48^^^^^^^ 49 50* Allocate Whisper files in chunks by default (jordansissel) 51* Allow Whisper files to be allocated sparsely (jordansissel) 52* Add whisper-merge command to copy data from one file to another (sidnei) 53* Add whisper-dump utility (amosshapira) 54 55Graphite Dashboard 56^^^^^^^^^^^^^^^^^^ 57 58* New button to retrieve Graph URL (octplane) 59* Add button to send email of rendered graph as attachment (bkjones) 60* Allow relative ‘until’ time to be set in dashboard (daniellawrence) 61* Add ability to import Graphs into dashboards from URL or Saved Graphs 62 63Rendering Engine 64^^^^^^^^^^^^^^^^ 65 66* New minorY option to configure minor gridlines (whd) 67* New alpha() function to set individual color alpha values (tmm1) 68* Allow areaAlpha to set alpha values for all styles of stacked graphs (tmm1) 69* New minimumAbove() function: draw only series whose min is above n (tmm1) 70* New areaBetween() function: draw the area between two graph lines (tmm1) 71* New holtWintersConfidenceArea() function: display area between Holt-Winters confidence bands (tmm1) 72* New SVG output format with embedded graph metadata (tmm1) 73* New metric whitelist/blacklist functionality using pattern files 74* New filterBelowPercentile() function: remove data below n percentile from a series (tmm1) 75* New removeAbovePercentile() and removeAboveValue() functions to remove outliers (tmm1) 76* New removeBelowPercentile() and removeBelowValue() functions to match above counterparts 77* New aliasSub() function: perform a regex search/replace on metric names (tmm1) 78* New rangeOfSeries() function: reduces multiple series into the value range of each point (saysjonathan) 79* New movingMedian() function: moving median, similar to movingAverage (recursify) 80* New multiplySeries() function: combine series by multiplying them 81* New hideYAxis option (mdeeks) 82* New percentileOfSeries() function: Combines series into the value at n percentile for each point 83* New tranformNull() function: transforms None values to specified (cbrinley) 84* New scaleToSeconds() function: scales values based on series step (redbaron) 85* New aliasByMetric() function: trims all but the last element of metric name in legend (obfuscurity) 86* New uniqueLegend option to filter duplicate metric names in legend (mdeeks) 87* New vtitleRight option to label 2nd Y-axis 88 89Carbon 90^^^^^^ 91 92* Allow flock() mode to be configured for Whisper 93* Allow flushing of rrdcached before rrd data fetches (shufgy) 94* Add ability to configure carbon metric prefix (jblaine) 95 96Bug fixes 97--------- 98Whisper 99^^^^^^^ 100 101* Record only the last value when duplicate timestamps are sent (knyar) 102* Fix rrd2whisper.py script to work with newer python-rrdtool api 103 104Carbon 105^^^^^^ 106 107* Fix full drain of queue after cache-full event when flow-control is enabled in both client and carbon-cache 108* Fix unnecessary drop of a single metric point when cache is full 109* Fix instrumentation of carbon-relay (darrellb) 110 111Webapp 112^^^^^^ 113 114* Fix reading of Gzip’d whisper files and remote reading of RRDs 115* Fix registration of Event model in admin site 116* Fix events() to work with timezone aware dates 117* Fix Event model to use tagging properly and fix compatibility with MySQL (hellvinz) 118* Fix compatibility of built-in json module in events and graphlot 119* Fix loading of saved graphs where a target has a ‘%’ in the name 120 121Rendering Engine 122^^^^^^^^^^^^^^^^ 123 124* Fix removal of whitespace above stacked graphs with yMax setting (tmm1) 125* Use powers of 2 when calculating yStep and yUnitSystem=binary (tmm1) 126* Force 100% usage of vertical space when yMax=max 127* Compact memcached keys to keep size under 250 after Django processing (Kevin Clark) 128* Fix alignFromTrue functionality in summarize() (tmm1) 129* Fix cases of mismatched units in holt-winters bootstraps (lapsu,tmm1) 130* Force integer in moving average window parameter (lapsu) 131* Fix incorrect cache fetch when storage dir is symlinked (mk-fraggod) 132* Fix infinite loop in Y-axis render when series range is very-very small 133* Fix “Undo Function” button when braces expressions are present in the target 134* Fix legend column calculation (darrellb) 135* Fix broken aliasByNode() (darrellb) 136* Fix rendering failures when infinite values are present in series 137* Fix legend text overlap with dual Y-axis mode (nleskiw) 138* Fix missing hunk of graph on right side with Dual Y-axis 139* Fix cactiStyle() handling of None values 140* Fix rendering breakage during DST time switch 141* Allow multiple named stacks of metrics (aleh) 142* Fix incorrect/misaligned graphs when series with unaligned steps are mixed in a graph 143* Properly shift over series that have a later start time than the graph start 144 145Composer 146^^^^^^^^ 147 148* Fix JS error on IE due to tailing list commas (reed-r-lance) 149* Fix usage of + instead of %20 for spaces in URL encoding in composer view 150* Fix display of a broken image rather than “No Data” when last target is removed 151* Fix the loss of multiple targets when loading a saved graph with new params (vilkaspilkas) 152* Fix unremovable duplicate metrics 153 154Dashboard 155^^^^^^^^^ 156 157* Fix automatic edit field selection on click (octplane) 158* Fix usage of browser cache-busting uniq parameter to be filtered from memcache key (sidnei) 159* Fix inability to remove Graphs with duplicate target lists 160 161Other improvements 162------------------ 163 164Carbon 165^^^^^^ 166 167* Match time units used in storage-schemas.conf with those in the webapp (ohlol) 168* Only log Carbon queue fullness once (sidnei) 169* Only log Carbon queue space free if it was once full (sidnei) 170* Log a message with the affected filename when a Whisper update fails (bmhatfield) 171* Move carbon instance logs to their own own directory to prevent clobbering 172* Prevent carbon-aggregator from clobbering aggregated values when aggregating to same-name 173* Add SSL option to amqp publisher (sidnei) 174* Remove duplicate dot metric path filtering for performance (drawks) 175* Refactor of schema validation to give more informative errors 176* Add reloading of rewrite-rules and aggregation-schemas for consistency 177 178Webapp 179^^^^^^ 180 181* Refactor settings.py to allow more complete configuration in local_settings.py 182* Make Graphite compatible with Django 1.4 183* Add jsonp support for /browser endpoint 184* Make it harder to break metric browsing with a bad DATA_DIRS entry 185 186Rendering Engine 187^^^^^^^^^^^^^^^^ 188 189* Make asPercent() much more flexible and useful 190* stddev() function made more robust 191* Allow metrics to begin with a braces-wildcard 192* Prevent drawAsInfinite() lines from affecting Y axis height (bmhatfield) 193* Pass through time with secondly rather than minutely resolution to rrdfetch (tmm1) 194* Tree branches should display above all leaves (mdeeks) 195* Add alignToInterval to hitcount() function similar to summarize() (jwoschitz) 196* Fix PieGraph missing function 197* Allow timeShift() to shift forward as well as backward 198 199Composer 200^^^^^^^^ 201 202* Don’t reorder targets when applying functions 203* Refactor of Graph Options menu 204 205Dashboard 206^^^^^^^^^ 207 208* Explicitly size img tags to keep scroll position intact during reloads 209* Default the navBar as collapsed when loading an existing dashboard view 210* Show wildcards in top nav browsing view 211* Allow dashboards to have any character in title (octplane) 212* Make “Remove All Graphs” and “Change Size” dialogs modal (dannyla) 213* Make the new “north” navbar the default 214 215 216