Hardware FixRecommendedDevice not working? Your driver may be the problemCheck updates for common hardware issues.Fix DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PC×
Skip to content
World desk12 min

How to Install and Use Graphite on an Ubuntu Server

A practical Ubuntu guide to deploying Graphite-web, Carbon and Whisper, choosing retention, sending your first metric, verifying the render API, and fixing common empty-graph problems.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Install Graphite on Ubuntu by deploying Graphite-web, Carbon, and Whisper, then define a retention policy before sending metrics. For most Ubuntu servers, install the distribution packages with APT, configure Carbon’s receivers and storage schemas, start the Carbon and web services, and send a test line to TCP port 2003. Verify the result through Graphite-web’s /render endpoint. The exact package versions and even package availability depend on your Ubuntu release, so check the target release before installing.

Understand what you are installing

Graphite is a self-hosted time-series metrics stack rather than one single daemon. A working deployment normally contains three cooperating parts:

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Component Role What to check
Graphite-web Web interface and render API. It reads stored series and returns graphs or raw data. It must point to the same Whisper storage directory that Carbon writes.
Carbon Receives incoming metrics, keeps a cache, and writes them to storage. Receiver ports, service status, logs, and write permissions.
Whisper Fixed-size time-series files, normally with a .wsp suffix. Retention archives are fixed when each file is first created.
Ceres A Graphite component named in the project’s source-install documentation. Use it only when your chosen source-based layout requires it.

Carbon can also run relay or aggregator daemons. A relay distributes traffic to other Carbon instances; an aggregator pre-aggregates values before storage. A single cache process is usually simpler for a small server, while those daemons become useful as senders or metric volume grow.

Check prerequisites on the Ubuntu host

  • Supported release and package availability: identify the release with cat /etc/os-release and inspect candidates with apt-cache policy graphite-carbon graphite-web python3-whisper. Ubuntu’s package index lists graphite-carbon 1.1.7-1.1 for Ubuntu 24.04 LTS (Noble) and graphite-web 1.1.8-1ubuntu0.22.04.1 for Ubuntu 22.04 (Jammy) in the referenced package snapshots. Those listings are not a promise that the same versions are present in every mirror today.
  • Administrative access: you need an account that can run sudo.
  • Network plan: decide whether senders are local or remote. TCP 2003 is Carbon’s normal plaintext receiver; TCP 2004 is the usual pickle receiver. Do not expose either port to the public internet without firewall rules and an authentication or network-isolation plan.
  • Disk capacity: Whisper files have fixed archives. Estimate the number of series, archive intervals, and required history before choosing a high-resolution policy.
  • Time synchronization: metrics use Unix timestamps. Keep the server clock synchronized so graphs do not appear to move backward.
  • DNS or a stable address: remote senders need a name or address for the Carbon host, while local testing can use 127.0.0.1.

Choose APT packages or a source installation

Route Advantages Trade-offs Best fit
Ubuntu packages Dependency handling, service integration, upgrades through normal Ubuntu administration, and paths that match the distribution’s configuration. Versions and component availability follow the Ubuntu release. One component may be newer or available on a different release than another. Most production Ubuntu servers and anyone who values maintainability.
Project source Control over Graphite-web, Carbon, Whisper, and (where used) Ceres versions and layout. You own Python dependencies, service units, upgrades, permissions, and security maintenance. Environments that require a particular release or the project’s documented layout.

Use one route consistently. Mixing a source-installed web application with distribution-managed Carbon can work, but it makes paths, Python environments, and upgrades harder to reason about. Record the Ubuntu release and every installed Graphite package or source version.

#1 Best Overall
Sale
TOZO A1 Wireless Earbuds Bluetooth 5.3 Light Weight in Ear Headphones | IPX5 Waterproof,2 Mics for AI Calls,Immersive Premium Sound Bass Headset with Charging Case,32 EQ via App Black
  • [Ultra-Lightweight Ear Buds Designed for Small Ears] Each earbud weighs only 3.7g and features a compact, ergonomic in-ear design made especially for small ears. Secure, low-profile, and comfortable for workouts, all-day wear or overnight sleeping.The ultra-slim profile sits flush in your ear with no hard edges poking or rubbing, so you can even sleep on your side without discomfort.
  • [Immersive Stereo Sound with TOZO OrigX Technology] TOZO OrigX tuning delivers clear vocals, balanced mids, and natural stereo sound for music, podcasts, and videos.
  • [Long Battery Life for Daily Use] Get up to 7 hours of playtime on a single charge, with up to 32 hours total using the charging case—ideal for workdays, commuting, and extended listening sessions.
  • [Bluetooth 5.3 & Stable Connection] Bluetooth 5.3 provides fast pairing, stable wireless performance, and reduced dropouts as you move around home or office.
  • [Deep Bass with Clear Vocals] High-performance drivers produce punchy bass while keeping vocals clean and detailed for everyday listening.

Install Graphite with Ubuntu packages

  1. Refresh package metadata.
    sudo apt update
  2. Confirm candidates for this release.
    apt-cache policy graphite-carbon graphite-web python3-whisper
    If a package has no candidate, do not install a package built for a different Ubuntu release merely to make the command succeed. Use a release with the required package, an approved repository, or the source route.
  3. Install the stack.
    sudo apt install graphite-carbon graphite-web python3-whisper
    python3-whisper may be installed as a dependency or related package, but naming it explicitly makes the intended storage component clear.
  4. Review the package-created configuration.
    Locate Carbon’s carbon.conf and storage-schemas.conf, and locate Graphite-web’s local settings. Distribution paths can differ from a source installation, so use dpkg -L graphite-carbon and dpkg -L graphite-web to see the files supplied by your release.
  5. Identify service units.
    systemctl list-unit-files | grep -Ei 'carbon|graphite|apache'
    Package naming varies. Use the unit names shown on your host rather than assuming a unit from another Ubuntu release.

At this point the packages are present, but Graphite is not proven to be working. Configure Carbon and a schema before sending a new metric.

Use the source layout when you need version control

The Graphite project’s source-install documentation uses /opt/graphite/ as the default prefix. Carbon configuration and storage live under that prefix, while Graphite-web code is in its web application directory. A source deployment should therefore have an explicit Python environment, a dedicated service account, and service definitions that start Carbon and the web application after boot.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Install the build tools and Python dependencies required by the specific Graphite release you selected.
  2. Obtain matching Graphite-web, Carbon, Whisper, and, when applicable, Ceres source releases.
  3. Install them into /opt/graphite/ and keep the source or release archives outside the writable data directories.
  4. Create separate ownership and permissions for configuration, logs, indexes, and Whisper data. The Carbon process must write data and logs; Graphite-web must be able to read the data and write the index or log locations specified in its local settings.
  5. Register service units for the Carbon cache and the web server or WSGI process, then test them manually before enabling them at boot.

The source route is not a shortcut around configuration. You still need a Carbon receiver, an ordered storage schema, a writable Whisper directory, Graphite-web settings, static-file collection, and a web-server configuration.

Configure Carbon receivers

Carbon’s main configuration file is carbon.conf. Its [cache] section controls the cache process that accepts metrics. The two receiver protocols most relevant to an initial deployment are:

Protocol Typical port Use
Plaintext 2003 One metric per line; easiest for a smoke test and shell tools such as nc.
Pickle 2004 Batch delivery from clients that support Carbon’s pickle format; more efficient for larger senders.

Set the receiver interfaces and ports in the active [cache] configuration. A minimal example is:

[cache]
LINE_RECEIVER_PORT = 2003
PICKLE_RECEIVER_PORT = 2004

Keep the interface bound to localhost or a private network unless remote senders require access. If you do accept remote traffic, restrict the ports with Ubuntu’s firewall or an upstream security group to known sender addresses. The plaintext protocol has no built-in authentication, so network reachability is a security boundary.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
Sale
Smart Watch for Men Women Compatible with iPhone Samsung Android Phone 1.69 inch Full Touch Screen IP68 Waterproof Bluetooh Fitness Tracker Heart Rate/Sleep Monitor (Black)
  • 【IP68 Waterproof Multifunctinal Smart Watch】Torjalph fitness activity tracker smart watch is IP68 waterproof technology ,you can wear it when swimming,handwashing,it's rain-proof which means that you perform multiple exercise modes outside without worrying about sweat or rain corroding your fitness smart watch,and this watch equipped with a 230 mAh large capacity battery magnetic charging ,and this sports activity tracker watch can be used 5-7 days If fully charged.
  • 【Larger 1.83'' Full Screen Watch & Multi-dial Selection】1.83 inch full HD color touch screen smart watch for men / women provides excellent 240*284 resolution image quality ,This Bluetooth smart watch offers a better touch experience and remarkable immersion and ,more than 200 watch faces for you to choose from App"Da Fit ", you can change the dial style according to your mood to wear keeping the world on your wrist
  • 【Accurate Activity Tracker Smart Watch 】sports watch activity tracker uses sweat and dust resistant breathable silicone strap, our Fitness Tracker Smart Watch for Android iOS Phones supports 12 sports modes,walking,running,bicycle,swimming,badminton,basketball,football,rope skipping. This bluetooth calls smart watch for men women is lightweight and stylish, bringing more convenient and relaxing sports experience while also providing more protection.
  • 【Your 24 Hour Personal Daily Health Monitor】Fitness watch for women men full touch screen IP67 waterproof bluetooth smartwatch for Android iOS Phones with heart rate blood pressure monitor multifunction Andriod smart watch with steps counter sleep monitor sports fitness watch, monitoring blood oxygen saturation allows you to understand your physical condition in real time to track fitness progress ,to know your health status in time.
  • 【More Functions Bluetooth Call Smart Watch】This fitness activity smart watch full screen for iPhone and Android phones includes a bunch of new features including:The bluetooth smart watch can hang up the phone, receive and display WhatsAPP /Text /Facebook /Twitter /Messenger reminder.Support sedentary reminder, alarm clock, stopwatch, timer,weather information,music control, remote camera control compatible with Android 5.0 and above or iOS 9.0 and above smartphones.

After editing, validate the configuration and restart the Carbon cache using the unit name installed on your host. Typical commands are:

sudo systemctl restart carbon-cache
sudo systemctl status carbon-cache --no-pager

If your package uses a different unit, substitute the name returned by systemctl list-unit-files. A failed restart usually means a path, option, or permission error; inspect the service journal before changing more settings:

sudo journalctl -u carbon-cache -n 100 --no-pager

Define Whisper retention before the first metric

Edit storage-schemas.conf before creating a new series. Each rule contains a regular expression and a retention definition. Carbon evaluates rules from top to bottom: the first pattern that matches the metric name is used. Once Carbon creates a metric’s .wsp file, changing the schema does not automatically rewrite that file with a new retention policy.

A policy can keep fine-grained data for incident investigation and progressively coarser data for long-term trends. For example:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
[test_metrics]
pattern = ^test.
retentions = 10s:6h,1m:7d,10m:1y

[default]
pattern = .*
retentions = 1m:7d,10m:1y

This is an example, not a universal recommendation. The first rule keeps metrics beginning with test. at 10-second precision for six hours, 1-minute precision for seven days, and 10-minute precision for one year. The catch-all rule must come afterward or it would capture every name first. Choose intervals and history from the questions your dashboards must answer and the disk available.

Calculate the practical consequences

  • A 10-second archive creates six times as many points per hour as a 1-minute archive, so high-resolution data consumes storage faster.
  • Long retention at coarse resolution is appropriate for capacity and trend analysis, but it cannot reconstruct short incidents after the fine archive expires.
  • A typo in a metric name can send data into the catch-all rule. Use stable namespaces and test the exact name you intend to publish.
  • To change retention for an existing metric, plan a migration rather than merely editing the rule. Existing Whisper files retain their original archive layout.

Point Graphite-web at the same storage

Graphite-web’s local settings identify the Whisper directory, log directory, index file, and static-file root. The critical requirement is that WHISPER_DIR resolves to the directory Carbon writes. If Carbon writes under one prefix while Graphite-web reads another, the web interface will be empty even though Carbon is receiving data.

Rank #3
New Bee Guitar Cable 10ft Electric Instrument Bass AMP Cord
  • [Low Noise High Fidelity] New bee guitar cord with 22AWG oxygen-free-copper center conductors provides enhanced signal transfer, the PVC insulation material and the high-density stranded copper double shield provide noise rejection for quiet operation
  • [Ideal for Choice] New bee 1/4 straight and right angle metal connectors, ensures a secure connection in any instrument, pedal, or amp jack. L shape great fro on stage guitar stands
  • [Wide Compatible] Suitable for mixer, power amplifier, microphone, effector, decoder, equalizer, electoronic organ, electric guitar, electric bass and other electronic equipments. Widely used in the installation of smart home, karaoke speaker, professional stage audio, etc
  • [Easy Disassemble] Making incidental repairs quick and easy! Very nice, flexible cable
  • [Dont Hesite to Order] 24 hours customer services and professional technology team are standing by

Check the effective settings supplied by your package or source layout, then verify ownership:

sudo find / -name local_settings.py -o -name carbon.conf 2>/dev/null
sudo ls -ld /path/to/whisper
sudo ls -ld /path/to/graphite/logs

Replace the example paths with the locations shown by your installation. Grant the Carbon user write access to Whisper and Carbon logs. Grant Graphite-web read access to Whisper and write access to its configured logs and index. Avoid making the entire filesystem world-writable as a quick fix.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Collect and serve static files

Graphite-web needs its static assets collected into the configured static directory. Run the collectstatic management command provided by your installation (packages may provide a graphite-manage wrapper; a source deployment normally invokes the application’s manage.py within its Python environment). Then configure the selected web server to serve that generated directory.

On Ubuntu Apache deployments, the normal workflow is to create or edit a virtual host in /etc/apache2/sites-available/, enable it into /etc/apache2/sites-enabled/, test the configuration, and reload Apache:

sudo apache2ctl configtest
sudo systemctl reload apache2

Use the WSGI configuration supplied for your Graphite-web package or source release rather than copying a configuration from an unrelated version. Confirm that the URL you expose reaches Graphite-web and not only the static directory.

Start the services and check their state

  1. Enable and start the Carbon cache unit identified on your server.
  2. Enable and start the web server or WSGI process used by Graphite-web.
  3. Check both units with systemctl status and inspect recent journal entries.
  4. Confirm that the configured receiver is listening: sudo ss -ltnp | grep -E ':2003|:2004'.
  5. Confirm that the HTTP endpoint answers locally before testing through a proxy or DNS name.

Do not treat an open TCP port as proof that data is being stored. The end-to-end test must create a metric and retrieve it.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
BSIMB 15.6" Digital Family Calendar & Chore Chart, No Subscription Fees
  • Digital Family Calendar: BSIMB digital calendar wall touch screen puts an end to your chaotic life. Designed for busy families, the digital calendar keeps you organised and in step with your family. Assign different colours and tasks to each family member to make family scheduling easier and more intuitive.
  • Easy Setup and Auto-Sync: Plug in, connect to WLAN and auto-syn your electric calendar in minutes. Digital wall calendar compatible with Google calendar, iCloud calendar, Outlook calendar, Cozi calendar and Yahoo calendar. Add events directly on the device or through the ecalendar app. Electronic calendar stays current whether you're at work or traveling—no manual updates needed.
  • All-In-One Home Assistant: Smart calendar builds habits and encourage independence with personalised chores. Display daily meal plan to reduce the daily ‘What's for dinner?’ stress. To-do lists keep track of everything you want. Turning chores into valuable achievements with stars and rewards, making life easier and more enjoyable.
  • Manage Anytime Anywhere: BSIMB electronic calendar for family stay connected with the powerful ecalendar app. Access and manage your digital wall calendar anytime, anywhere with free features like stars & rewards, photo screensaver, chore charts, meals plans, to-do lists etc. Electronic planner paid features like Magic Import tailor advanced tools for users with special needs.
  • Stay in Touch with Loved Ones: Share photos or videos from your phone to electronic wall calendar with app, instantly update your life moment, and keep in touch with your family, especially those who are far away; you can also surprise your smart calendar digital wall by sending him a wish card; it's also great for keeping tech-illiterate elders in touch with the youngsters.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Send a first metric through Carbon

Carbon’s plaintext protocol is the most straightforward protocol for a smoke test. Every line contains a metric path, a numeric value, and a Unix timestamp:

metric_path value timestamp

From the Carbon host, send the documented style of test line to port 2003:

echo "test.bash.stats 42 `date +%s`" | nc 127.0.0.1 2003

The timestamp in the line is used for the data point. A timestamp of -1 tells Carbon to use the arrival time, which is convenient for a quick test:

printf 'test.bash.stats 43 -1n' | nc 127.0.0.1 2003

For an operational namespace, use a predictable hierarchy such as servers.HOSTNAME.METRIC. A real command might be:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
HOST=$(hostname -s)
printf 'servers.%s.load1 %s %sn' "$HOST" "$(awk '{print $1}' /proc/loadavg)" "$(date +%s)" | nc 127.0.0.1 2003

Keep names stable: changing capitalization, separators, or host labels creates a different series. Dots form the hierarchy used by Graphite target expressions and wildcards.

Verify the metric with Graphite-web’s render API

Graphite-web provides a /render endpoint for generating graphs and retrieving raw data. A target identifies a metric path or wildcard expression; from and until select the time range.

Request JSON for the test series over the last ten minutes:

curl 'http://127.0.0.1/render?target=test.bash.stats&from=-10min&until=now&format=json'

A successful response contains the target name, a datapoint array, and timestamps. You can request an image instead by omitting the raw format or choosing the image format expected by your Graphite-web version. A wildcard helps verify a namespace:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
curl 'http://127.0.0.1/render?target=servers.*.load1&from=-15min&until=now&format=json'

If the JSON contains no points, inspect the exact metric path, the selected time window, Carbon’s logs, the Whisper directory, and the schema that matched the name. If the API returns an HTTP error, inspect Graphite-web and web-server logs separately; an API problem is not necessarily a Carbon problem.

Troubleshoot an empty graph or missing data

Symptom Likely cause Action
nc reports connection refused Carbon is stopped, listening on another interface or port, or blocked by a firewall. Check the Carbon unit, ss -ltnp, receiver settings, and firewall rules.
The send command succeeds but no .wsp file appears The metric was rejected, Carbon cannot write the directory, or you are looking in the wrong storage path. Read Carbon’s journal, verify the active WHISPER_DIR, and test directory ownership with the Carbon account.
A Whisper file exists but the graph is empty The query target or time range is wrong, or Graphite-web reads a different directory. Query the exact path, widen from, and compare Graphite-web’s configured directory with Carbon’s storage path.
Data appears only under an unexpected retention An earlier regular expression matched first. Review storage-schemas.conf from top to bottom. Existing files will not change when the rule is edited.
The page loads without styling Static files were not collected or the web server is not serving the configured static root. Run the installation’s collectstatic command, check the static path, and test the Apache configuration.
Remote senders work intermittently Network filtering, overloaded Carbon cache, clock differences, or a sender using the wrong protocol. Check packet reachability, Carbon queue and log messages, sender timestamps, and whether the sender is using plaintext or pickle on the matching port.

Operate and scale the installation

Protect the receivers

Plaintext and pickle receivers are ingestion interfaces, not public web services. Bind them to private interfaces where possible and allow only known senders through the host firewall or cloud security group. Put Graphite-web behind the access controls appropriate for your environment; the render API can expose every metric a user is permitted to query.

Back up what matters

Whisper data is the historical record, while Carbon and Graphite-web configuration determine how new data is interpreted and displayed. Back up the Whisper directory, storage-schemas.conf, carbon.conf, Graphite-web local settings, web-server configuration, and any service overrides. Test restoring a representative metric rather than assuming a filesystem copy is usable.

Move beyond one Carbon cache

A single Carbon cache can handle a small installation. As traffic grows, relay daemons can distribute metrics among storage nodes and aggregator daemons can pre-aggregate streams. Add those processes only after measuring queueing, write latency, disk throughput, and query load; more daemons also mean more failure modes and configuration to monitor.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Review retention as requirements change

Retention should answer a defined question: recent troubleshooting needs fine intervals, while capacity planning usually needs longer, coarser history. Revisit the number of series, archive intervals, and disk growth together. Editing a schema is not a retroactive conversion, so plan how existing Whisper files will be migrated when policy changes.

A practical completion checklist

  • The Ubuntu release and installed Graphite versions are recorded.
  • graphite-carbon, graphite-web, and the Whisper package or source components are installed from one planned route.
  • Carbon’s active [cache] settings expose only the required receiver interfaces and ports.
  • storage-schemas.conf has specific rules before the catch-all rule, and the chosen retention fits disk and query requirements.
  • Carbon can write Whisper files and logs; Graphite-web can read Whisper and write its configured index and logs.
  • Static files have been collected and the selected web server serves them.
  • A metric sent to port 2003 creates a visible series.
  • The /render endpoint returns the expected data for an exact target and time window.
  • Firewall, backup, upgrade, and scaling plans are documented before remote senders are added.

When to choose a different deployment model

Graphite is a good fit when you need control of the storage format, metric namespace, retention rules, and network location. Package installation is the sensible default for a conventional Ubuntu server. Choose source installation only when its version or layout control justifies taking responsibility for Python dependencies and service maintenance. If your priority is avoiding server administration rather than controlling the stack, a hosted metrics service may be operationally simpler, but it is a different trade-off from running Graphite yourself.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Outdated Drivers Are Slowing You DownFree scan - exact matches
Windows Errors? Fix Them Before They SpreadFree repair scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.