0.9.14¶
11/7/2015
Graphite 0.9.14 is now available for usage. Source bundles are available from GitHub:
- https://github.com/graphite-project/graphite-web/archive/0.9.14.tar.gz
- https://github.com/graphite-project/carbon/archive/0.9.14.tar.gz
- https://github.com/graphite-project/whisper/archive/0.9.14.tar.gz
Graphite can also be installed from PyPI via pip. PyPI bundles are here:
- http://pypi.python.org/pypi/graphite-web/
- http://pypi.python.org/pypi/carbon/
- http://pypi.python.org/pypi/whisper/
Upgrading¶
Graphite 0.9.14 now requires a Django version of at least 1.4. Ensure this dependency is satisfied before updating graphite-web.
As always, comparing the example config files with existing ones is recommended to ensure awareness of any new features.
Graphite-web’s application database will need to be upgraded for a new Django fixture. It’s a good idea to backup the database before proceeding with the migration. The following will upgrade a SQLite database:
sudo cp /opt/graphite/storage/graphite.db \
/opt/graphite/storage/graphite.db.backup-`date +%Y%m%d_%H%M%S`
sudo PYTHONPATH=/opt/graphite/webapp django-admin.py syncdb \
--noinput --no-initial-data --settings=graphite.settings
Security Notes¶
No known security issues.
New Features¶
Graphite-web¶
- New
minimumBelow()
function (ojilles) - Add
margin()
function to Composer menu (obfuscurity) - Sort “User Graphs” by creator’s username (ciranor)
- New
changed()
function (kamaradclimber, obfuscurity) - Use
query_bulk
for improved cache query performance (huy, deniszh) - A URL shortener has been added to the composer toolbar (seveas, cbowman0, deniszh)
- Allow metric finder to return jsonp objects (kali-hernandez-sociomantic)
- Document use of alpha color values in
colorList
andbgcolor
(ojilles) - Improved documentation for
areaBetween()
(ojilles, gwaldo) - Improved documentation for
cactiStyle()
(ojilles) - Document installation via Synthesize (gwaldo)
- Mention the Synthensize installation method for Windows users (gwaldo)
- Massive cleanup across all of our documentation pages (gwaldo)
- Support for custom remote authentication backends (steve-dave)
- Improvements to the cache hash function (rmca, esc)
- Improved logging on CarbonLink failed queries (jamesjuran)
- Add navigation elements to reorder metrics in Composer (justino)
- Use Django’s native TZ method (jcsp)
- New test suite and TravisCI integration (brutasse, esc)
- Rename the metrics node from “Graphite” to “Metrics” (obfuscurity)
- New
perSecond()
function (cbowman0, pcn) - Add Composer button to load existing graph url (justino)
- Add
maxDataPoints
to limit number of returned datapoints for json requests (philiphoy, gingerlime) - Refactor json responses for clarity (whilp)
- New grafana color scheme (lainSR)
- Add optional ‘now’ parameter to remote node fetch (Kixeye)
- Graphlot was completely removed (obfuscurity)
- Use cairocffi instead of pycairo (brutasse, esc)
- New icons converted from Font Awesome project (obfuscurity)
- Adding tests for Django 1.7 (brutasse, syepes)
- Bulk-fetch metrics from remote hosts (bmhatfield, deniszh, favoretti)
- Perform all remote fetches in parallel (bmhatfield)
- Perform
/metrics/find
queries in parallel (jraby) - New prefetch cache for remote queries (jraby)
- New
REMOTE_STORE_USE_POST
setting for remote requests (steve-dave) - New single-hue color templates (obfuscurity)
- New
sortByName()
function (jssjr, Krylon360) - Namespace request-cache data with the local node (jssjr)
- Support for retrieving static assets with whitenoise (brutasse, deniszh)
- Enable buffering in HTTPResponse objects (jjneely, deniszh)
- Merge TimeSeries when more than one returned per key, making this feature optional (jjneely, deniszh)
Carbon¶
- Record the blacklist and whitelist metrics (jssjr, deniszh)
- Ability to run in the foreground without debug (jib, deniszh)
- Introduce
QUEUE_LOW_WATERMARK_PCT
andTIME_TO_DEFER_SENDING
to improve batching (pcn, steve-dave) - Configurable files for aggregation and rewrite rules (drawks)
- New bulk cache query type (huy)
- Bulk cache query instrumentation (mleinart)
- Require Twisted >= 13.2.0, adds IPv6 support (obfuscurity)
- Document how to disable individual listeners (steve-dave)
- Support backlogs for TCP listeners (jssjr)
- Improved cache tests (jssjr)
- New
--profiler
option (tail, deniszh) - Support for
DIVERSE_REPLICAS
(deniszh, dctrwatson)
Whisper¶
- New whisper-fill utility imported from Carbonate project (jssjr, grobian, deniszh)
- Add
--estimate
option to whisper-create (steve-dave) - New whisper-diff utility (bheilman, deniszh)
Bug fixes¶
Graphite-web¶
- Missing
pathExpression
inconstantLine()
function (markolson) - Fix for
CLUSTER_SERVERS
whenip_nonlocal_bind
is enabled (PrFalken) - Missing ExtJS gif in Dashboard when viewed in tree configuration (obfuscurity)
- Fix docs builds for the [render function list](http://graphite.readthedocs.org/en/0.9.x/functions.html) (obfuscurity, gwaldo)
aliasByMetric()
was including trailing arguments (obfuscurity)- Fix
initialState
for Dashboard (cbownman0, jamesjuran) - Broken
series.name
inpercentileOfSeries
(simm42) - Refresh “My Graphs” after graph is saved or deleted (obfuscurity)
- Remove superfluous grid line with log scale (ralphm)
- Fix
holtWintersAberration()
when bands haveNone
values (aaronfc) - Number of results from cache query was incorrectly logged (steve-dave)
- Dashboard should only refresh on positive values (linkslice)
- Fix
logBase()
when value between 0 and 1 (wellle) - Fix
PICKLE_SAFE
for remote rendering (deniszh) - Fix
yMaxValue
whenareaMode=stacked
(bitprophet) - Convert
time.mktime
to int to fixidentity()
function (dpkp) - Compatibility fix in Graphlot (steve-dave)
- Off-by-one bug that broke JSON output for
constantLine
(steve-dave) - Minor documentation fix for
sumSeriesWithWildcards()
(steve-dave) - Fix TypeError with
sum()
function (macolu) - Remote storage should return
None
whenseriesList
is empty (steve-dave) - Fix project url in
setup.py
(esc) - Fix condition where missing
until
paramater caused TypeError (steve-dave) - Remove old jQuery workaround in Graphlot (steve-dave)
- Fix
now
handling in render queries (jcsp) - Fix
PICKLE_SAFE
for CarbonLink queries (Dieterbe) - Decimals not printed for
cactiStyle()
(SuminAndrew, drawks) - Typo in exception name (also)
- Fix assumption that RemoteNode inherits from Node (mleinart)
- Updating the copyright notice (gwaldo)
- CACHE_* settings are deprecated in Django 1.3, so, was replaced with CACHES setting (brutasse, deniszh)
- Fix data cache invalidation (esc, deniszh)
- Fix documentation for divideSeries (gwaldo)
- Make HTTP clients only cache graphs as long as we keep them in memcached (aroben, deniszh)
- DST fixes, backport from graphite-api (brutasse, deniszh)
- HttpRequest.raw_post_data was deprecated in Django 1.4 (obfuscurity)
- XSS fixes for browser and composer (illicium, piotr1212, deniszh)
- Docs: Python Dev Headers needed for custom install location (gwaldo)
- Fix pytz install dependency (deniszh)
- Javascript compatibility fixes for Internet Explorer (piotr1212)
- Timezone fixes and tests (brutasse, MFAnderson, deniszh)
- Fix for remote fetch threads (deniszh)
- Fixes for
normalize()
(g76r, jstangroome) - Avoid exceptions when
CARBONLINK_HOSTS
is an empty list (jstangroome) - Lock django-tagging to fix Travis CI (jstangroome)
- Set default timezone (jjneely)
- Never attempt to write empty data to request-cache (apg-pk)
- Never merge CarbonLink results with Whisper rollups (penpen, obfuscurity)
- Fix for SVG graphs (grobian, obfuscurity)
- Skip empty target parameters (obfuscurity)
- Remove unnecessary dependencies (obfuscurity)
Carbon¶
- Restore recursive mkdir on
LOG_DIR
(jamesjuran) - More accurate queue length reporting (pcn, bitprophet)
- Set ownership on log subdirectories if
USER
is defined (jamesjuran) - Improved documentation for
FORWARD_ALL
(hdoshi) - Fix whisper directory umask (alexandreboisvert, steve-dave)
- Unable to load
AGGREGATION_RULES
(drawks) - Compatibility with Twisted 13.2.0 (esc, drawks)
- Incorrect log rotation documentation (mleinart)
- Fix carbon-cache cpu usage 100% when sent metric with too big name (jssr, deniszh)
- Fix aggregator replication factor setting (jssr, deniszh)
- Change the max update on shutdown (f80)
- Document the fact that one can use regexps in the aggregation-rules (ctavan)
- Move tests to tox (jssr)
- Add hup signal handler (jssr)
- Fix instrumentation (avishai-ish-shalom, jssr)
- Fix exception handling (steve-dave)
- Fix CACHE_WRITE_STRATEGY (jssr)
- Fix aggregated metrics (pgul, ctavan)
- Logging fixes (obfuscurity, piotr1212)
- Fix race condition for full queues (mleinart)
- Default value for
MAX_UPDATES_PER_SECOND_ON_SHUTDOWN
(jssjr) - Never cache empty aggregation results (mleinart)
- Fixes for MetricsCache size leak (jssjr, deniszh)
- Documentation fix for relay-rules (obfuscurity)
- Fix test assertions (obfuscurity)
- Fix for
--profile
arg (tail, deniszh) - Move Red Hat initscripts to examples (deniszh, bmhatfield)
Whisper¶
- Write optimization in
update_many
(timob, deniszh) - Add optional
now
parameter to fetch for graphite-web compatibility (jcsp, steve-dave) - Remove unused Tox configuration (steve-dave)
- TravisCI no longer supports Python 2.5 (steve-dave)
- Unlink Whisper file if empty/corrupted (jraby)
- Enforce closing of Whisper files (AstromechZA, jjneely)
- Handle zero length time ranges by returning the next valid point (jjneely)
- Used wrong
until
boundary for selecting archive (obfuscurity)