Lab Objectives
In this lab, students will learn how to use Grafana 13 with Graphite as a data source and create a Linux monitoring dashboard using metrics collected by Telegraph.
This lab is based only on real metrics already stored on your Graphite server. The output you uploaded confirms that valid metric prefixes are:
telegraf.linux-demo.*
Code language: CSS (css)
This also confirms that servers.* comes back empty, so this lab will do it No use servers.*.
Grafana includes built-in support for Graphite, and the Graphite query editor helps users browse metric paths and create Graphite queries within Grafana. (Grafana Laboratory)
Existing Settings
You already have:
Grafana UI:
http:
Graphite Web UI:
http:
Docker containers:
graphite
telegraf
Code language: JavaScript (javascript)
Your Docker output shows:
graphiteapp/graphite-statsd:latest
telegraf:latest
Graphite is exposed as:
Host port 8080 -> Graphite Web UI
Host port 2003 -> Carbon plaintext metric receiver
Host port 2004 -> Carbon pickle receiver
Students must understand one important thing:
Graphite stores metrics as .wsp files on disk,
but Grafana queries should not include .wsp.
Code language: CSS (css)
For example, the file exists as:
/opt/graphite/storage/whisper/telegraf/linux-demo/cpu/usage_active.wsp
But in Grafana, the query should be:
telegraf.linux-demo.cpu.usage_active
Code language: CSS (css)
No:
telegraf.linux-demo.cpu.usage_active.wsp
Code language: CSS (css)
Ask students to log in to the Linux server and run:
docker ps
The expected results will show a container similar to:
graphite
telegraf
Example:
graphiteapp/graphite-statsd:latest
telegraf:latest
Explain to students:
Graphite is storing and serving metrics.
Telegraf is collecting Linux system metrics and sending them to Graphite.
Grafana will read metrics from Graphite and display dashboards.
Code language: JavaScript (javascript)
Run this command:
curl "
Code language: JavaScript (javascript)
Expected output should include:
carbon
dummy
stats
stats_counts
statsd
telegraf
Now check out the Telegraf metrics tree:
curl "
Code language: JavaScript (javascript)
Expected output should include:
linux-demo
Now check out the metric groups below linux-demo:
curl "
Code language: JavaScript (javascript)
Expected metric groups:
cpu
mem
disk
diskio
kernel
net
processes
swap
system
Use this command to list all Telegraf metrics saved from Whisper storage:
docker exec graphite find /opt/graphite/storage/whisper/telegraf -type f
To convert file paths to Graphite query names, use:
docker exec graphite find /opt/graphite/storage/whisper/telegraf -type f \
| sed 's#/opt/graphite/storage/whisper/##; s#/#.#g; s#\.wsp$##' \
| sort
Code language: JavaScript (javascript)
If students are still looking .wsp in the end, use this safer command:
docker exec graphite find /opt/graphite/storage/whisper/telegraf -type f \
| tr -d '\r' \
| sed 's#/opt/graphite/storage/whisper/##; s#/#.#g; s#\.wsp$##' \
| sort
Code language: JavaScript (javascript)
Explain:
The .wsp file is the physical Whisper database file.
Grafana query uses the logical metric path without .wsp.
Code language: CSS (css)
Step 1: Open Grafana
Open:
http:
Code language: JavaScript (javascript)
Enter Grafana.
Step 2: Go to Data Source
From the left menu:
Connections → Data sources
Or:
Connections → Add new connection
Code language: JavaScript (javascript)
The Grafana documentation also explains adding Graphite from the left side Connection menu. (Grafana Laboratory)
Step 3: Select Graphite
Search:
Graphite
Click:
Add new data source
Code language: JavaScript (javascript)
Step 4: Configure Graphite URL
Use this if Grafana is running on the same Linux VM where Docker Graphite is exposed:
http:
Code language: JavaScript (javascript)
If it doesn’t work, use the server IP:
http://<server-public-ip>:8080
Code language: HTML, XML (xml)
Example:
http:
Code language: JavaScript (javascript)
Use:
Access: Server / Proxy
Code language: JavaScript (javascript)
Step 5: Save and Test
Click:
Save & test
Expected results:
Data source is working
If it fails, check:
docker ps
Then confirm that Graphite is reachable:
curl "
Code language: JavaScript (javascript)
Before creating a dashboard, students should explore metrics.
From the left menu:
Explore
Select the Graphite data source.
Try these questions:
telegraf.linux-demo.cpu.usage_active
Code language: CSS (css)
Click:
Run query
Students should look at the CPU usage graph.
Now try:
telegraf.linux-demo.mem.used_percent
Code language: CSS (css)
Then:
telegraf.linux-demo.disk.used_percent
Code language: CSS (css)
Explain:
Explore is used for testing queries before adding them to dashboards.
Dashboard panels are created after we know the query is working.
From the left menu:
Dashboards
Click:
New
Code language: PHP (php)
Then:
New dashboard
Code language: PHP (php)
Click:
Add visualization
Choose:
Graphite
Dashboard name:
Linux Server Monitoring - Graphite Telegraf
Create the following dashboard row:
1. System Overview
2. CPU Monitoring
3. Memory Monitoring
4. Disk Monitoring
5. Disk I/O Monitoring
6. Network Monitoring
7. Swap Monitoring
8. Process Monitoring
9. Kernel Monitoring
Panel 1: Active CPU Usage
Panel title:
CPU Active Usage %
Question:
telegraf.linux-demo.cpu.usage_active
Code language: CSS (css)
Visualization:
Stat
Unit:
Percent (0-100)
Threshold:
Green: 0
Yellow: 70
Red: 90
Code language: HTTP (http)
Explanation for students:
This shows how much CPU is actively being used.
Panel 2: Memory Used %
Panel title:
Memory Used %
Question:
telegraf.linux-demo.mem.used_percent
Code language: CSS (css)
Visualization:
Stat
Unit:
Percent (0-100)
Threshold:
Green: 0
Yellow: 70
Red: 90
Code language: HTTP (http)
Panel 3: Disk Used %
Panel title:
Disk Used %
Question:
telegraf.linux-demo.disk.used_percent
Code language: CSS (css)
Visualization:
Stat
Unit:
Percent (0-100)
Threshold:
Green: 0
Yellow: 75
Red: 90
Code language: HTTP (http)
Panel 4: 1 Minute System Load
Panel title:
System Load 1 Minute
Question:
telegraf.linux-demo.system.load1
Code language: CSS (css)
Visualization:
Stat
Unit:
None
Explanation:
Load average shows how busy the system is.
A load close to or higher than the number of CPUs may indicate pressure.
Panel 5: System Uptime
Panel title:
System Uptime
Question:
telegraf.linux-demo.system.uptime
Code language: CSS (css)
Visualization:
Stat
Unit:
Seconds
Explanation:
Uptime shows how long the Linux system has been running.
Panel: CPU Usage Details
Panel title:
CPU Usage Breakdown
Visualization:
Time series
Question:
alias(telegraf.linux-demo.cpu.usage_user, 'User CPU %')
alias(telegraf.linux-demo.cpu.usage_system, 'System CPU %')
alias(telegraf.linux-demo.cpu.usage_iowait, 'IO Wait CPU %')
alias(telegraf.linux-demo.cpu.usage_idle, 'Idle CPU %')
Code language: JavaScript (javascript)
Unit:
Percent (0-100)
Explanation:
User CPU means application workload.
System CPU means kernel workload.
IO wait means CPU is waiting for disk or I/O.
Idle means CPU is free.
Panel: CPU Active Usage Trends
Panel title:
CPU Active Usage Trend
Question:
telegraf.linux-demo.cpu.usage_active
Code language: CSS (css)
Visualization:
Time series
Unit:
Percent (0-100)
Panel: Memory Used and Available %
Panel title:
Memory Usage %
Question:
alias(telegraf.linux-demo.mem.used_percent, 'Used Memory %')
alias(telegraf.linux-demo.mem.available_percent, 'Available Memory %')
Code language: JavaScript (javascript)
Visualization:
Time series
Unit:
Percent (0-100)
Panel: Used and Free Memory
Panel title:
Memory Used and Free
Question:
alias(telegraf.linux-demo.mem.used, 'Used Memory')
alias(telegraf.linux-demo.mem.free, 'Free Memory')
alias(telegraf.linux-demo.mem.available, 'Available Memory')
Code language: JavaScript (javascript)
Visualization:
Time series
Unit:
Bytes
Panel: Memory Cache and Buffers
Panel title:
Memory Cache and Buffer
Question:
alias(telegraf.linux-demo.mem.cached, 'Cached Memory')
alias(telegraf.linux-demo.mem.buffered, 'Buffered Memory')
Code language: JavaScript (javascript)
Visualization:
Time series
Unit:
Bytes
Panel: Disk Used %
Panel title:
Disk Used %
Question:
telegraf.linux-demo.disk.used_percent
Code language: CSS (css)
Visualization:
Gauge
Unit:
Percent (0-100)
Threshold:
Green: 0
Yellow: 75
Red: 90
Code language: HTTP (http)
Panel: Used and Free Discs
Panel title:
Disk Used and Free
Question:
alias(telegraf.linux-demo.disk.used, 'Disk Used')
alias(telegraf.linux-demo.disk.free, 'Disk Free')
alias(telegraf.linux-demo.disk.total, 'Disk Total')
Code language: JavaScript (javascript)
Visualization:
Time series
Unit:
Bytes
Panel: Disk Inode Usage
Panel title:
Disk Inode Usage %
Question:
telegraf.linux-demo.disk.inodes_used_percent
Code language: CSS (css)
Visualization:
Gauge
Unit:
Percent (0-100)
Explanation:
Inodes are file metadata records.
A disk can fail to create new files if inodes are full, even when disk space is available.
Code language: JavaScript (javascript)
Panel: Disk I/O Utilization
Panel title:
Disk I/O Utilization
Question:
telegraf.linux-demo.diskio.io_util
Code language: CSS (css)
Visualization:
Time series
Unit:
Percent (0-100)
Panel: Disk Read and Write Bytes per Second
Panel title:
Disk Read/Write Bytes per Second
Question:
alias(perSecond(telegraf.linux-demo.diskio.read_bytes), 'Read Bytes/sec')
alias(perSecond(telegraf.linux-demo.diskio.write_bytes), 'Write Bytes/sec')
Code language: JavaScript (javascript)
Visualization:
Time series
Unit:
Bytes/sec
Explanation:
read_bytes and write_bytes are counters.
perSecond() converts them into a rate, which is easier to understand.
Panel: Disk Reads and Writes per Second
Panel title:
Disk Reads/Writes per Second
Question:
alias(perSecond(telegraf.linux-demo.diskio.reads), 'Reads/sec')
alias(perSecond(telegraf.linux-demo.diskio.writes), 'Writes/sec')
Code language: JavaScript (javascript)
Visualization:
Time series
Unit:
Operations/sec
Panel: Disk I/O Wait
Panel title:
Disk I/O Await
Question:
telegraf.linux-demo.diskio.io_await
Code language: CSS (css)
Visualization:
Time series
Unit:
Milliseconds
Explanation:
IO await shows how long disk operations are waiting.
High values may indicate slow disk or heavy I/O.
Code language: JavaScript (javascript)
Panel: Network Traffic Bytes per Second
Panel title:
Network Traffic
Question:
alias(perSecond(telegraf.linux-demo.net.bytes_recv), 'Bytes Received/sec')
alias(perSecond(telegraf.linux-demo.net.bytes_sent), 'Bytes Sent/sec')
Code language: JavaScript (javascript)
Visualization:
Time series
Unit:
Bytes/sec
Panel: Network Packets per Second
Panel title:
Network Packets
Question:
alias(perSecond(telegraf.linux-demo.net.packets_recv), 'Packets Received/sec')
alias(perSecond(telegraf.linux-demo.net.packets_sent), 'Packets Sent/sec')
Code language: JavaScript (javascript)
Visualization:
Time series
Unit:
Packets/sec
Panel: Network Error
Panel title:
Network Errors
Question:
alias(telegraf.linux-demo.net.err_in, 'Input Errors')
alias(telegraf.linux-demo.net.err_out, 'Output Errors')
Code language: JavaScript (javascript)
Visualization:
Time series
Unit:
None
Explanation:
Network errors should normally remain zero.
If errors increase, there may be a network, driver, or interface issue.
Code language: PHP (php)
Panel: Network Decline
Panel title:
Network Drops
Question:
alias(telegraf.linux-demo.net.drop_in, 'Input Drops')
alias(telegraf.linux-demo.net.drop_out, 'Output Drops')
Code language: JavaScript (javascript)
Visualization:
Time series
Unit:
None
Panel: Swap Used %
Panel title:
Swap Used %
Question:
telegraf.linux-demo.swap.used_percent
Code language: CSS (css)
Visualization:
Gauge
Unit:
Percent (0-100)
Threshold:
Green: 0
Yellow: 20
Red: 50
Code language: HTTP (http)
Panel: Used and Free Exchange
Panel title:
Swap Used and Free
Question:
alias(telegraf.linux-demo.swap.used, 'Swap Used')
alias(telegraf.linux-demo.swap.free, 'Swap Free')
alias(telegraf.linux-demo.swap.total, 'Swap Total')
Code language: JavaScript (javascript)
Visualization:
Time series
Unit:
Bytes
Panel: Swap In and Out
Panel title:
Swap In/Out
Question:
alias(telegraf.linux-demo.swap.in, 'Swap In')
alias(telegraf.linux-demo.swap.out, 'Swap Out')
Code language: JavaScript (javascript)
Visualization:
Time series
Unit:
Bytes
Panel: Process Status
Panel title:
Process States
Question:
alias(telegraf.linux-demo.processes.running, 'Running')
alias(telegraf.linux-demo.processes.sleeping, 'Sleeping')
alias(telegraf.linux-demo.processes.blocked, 'Blocked')
alias(telegraf.linux-demo.processes.zombies, 'Zombies')
Code language: JavaScript (javascript)
Visualization:
Time series
Unit:
Processes
Panel: Total Processes and Threads
Panel title:
Total Processes and Threads
Question:
alias(telegraf.linux-demo.processes.total, 'Total Processes')
alias(telegraf.linux-demo.processes.total_threads, 'Total Threads')
Code language: JavaScript (javascript)
Visualization:
Time series
Unit:
None
Panel: Kernel Activity
Panel title:
Kernel Activity
Question:
alias(perSecond(telegraf.linux-demo.kernel.context_switches), 'Context Switches/sec')
alias(perSecond(telegraf.linux-demo.kernel.interrupts), 'Interrupts/sec')
alias(perSecond(telegraf.linux-demo.kernel.processes_forked), 'Processes Forked/sec')
Code language: JavaScript (javascript)
Visualization:
Time series
Unit:
Ops/sec
Panel: Available Entropy
Panel title:
Kernel Entropy Available
Question:
telegraf.linux-demo.kernel.entropy_avail
Code language: CSS (css)
Visualization:
Time series
Unit:
None
Explanation:
Entropy is used by Linux for randomness.
Very low entropy can affect cryptographic operations.
Click:
Save dashboard
Dashboard name:
Linux Server Monitoring - Graphite Telegraf
Add description:
Student lab dashboard using Graphite metrics collected by Telegraf.
Click:
Save
Grafana-managed alert rules can query data sources, reduce or modify query results, and compare values against thresholds. (Grafana Laboratory)
From the left menu:
Alerting → Alert rules
Click:
New alert rule
Code language: PHP (php)
Use the same pattern for each alert:
Query A → Graphite metric
Reduce B → Last or Mean
Condition C → Threshold
Alert name:
High CPU Usage
Query A:
telegraf.linux-demo.cpu.usage_active
Code language: CSS (css)
Reduce:
Last
Condition:
IS ABOVE 90
Evaluation:
Every 1 minute
For 5 minutes
Meaning:
Alert if CPU active usage stays above 90% for 5 minutes.
Alert name:
High Memory Usage
Query A:
telegraf.linux-demo.mem.used_percent
Code language: CSS (css)
Reduce:
Last
Condition:
IS ABOVE 90
Evaluation:
Every 1 minute
For 5 minutes
Alert name:
High Disk Usage
Query A:
telegraf.linux-demo.disk.used_percent
Code language: CSS (css)
Reduce:
Last
Condition:
IS ABOVE 90
Evaluation:
Every 1 minute
For 5 minutes
Alert name:
High Disk Inode Usage
Query A:
telegraf.linux-demo.disk.inodes_used_percent
Code language: CSS (css)
Reduce:
Last
Condition:
IS ABOVE 90
Evaluation:
Every 1 minute
For 5 minutes
Alert name:
High Swap Usage
Query A:
telegraf.linux-demo.swap.used_percent
Code language: CSS (css)
Reduce:
Last
Condition:
IS ABOVE 50
Evaluation:
Every 1 minute
For 5 minutes
Explanation:
Swap usage should normally be low.
High swap usage may indicate memory pressure.
Alert name:
High System Load
Query A:
telegraf.linux-demo.system.load1
Code language: CSS (css)
Reduce:
Last
Condition:
IS ABOVE 2
Evaluation:
Every 1 minute
For 5 minutes
Note to students:
For a small lab VM, load above 2 can be considered high.
In production, compare load with number of CPU cores.
Code language: JavaScript (javascript)
Alert name:
Zombie Processes Detected
Query A:
telegraf.linux-demo.processes.zombies
Code language: CSS (css)
Reduce:
Last
Condition:
IS ABOVE 0
Evaluation:
Every 1 minute
For 2 minutes
Explanation:
Zombie processes are processes that have finished but still remain in the process table.
Alert name:
Blocked Processes Detected
Query A:
telegraf.linux-demo.processes.blocked
Code language: CSS (css)
Reduce:
Last
Condition:
IS ABOVE 0
Evaluation:
Every 1 minute
For 2 minutes
Alert name:
Network Input Errors
Query A:
telegraf.linux-demo.net.err_in
Code language: CSS (css)
Reduce:
Last
Condition:
IS ABOVE 0
Evaluation:
Every 1 minute
For 2 minutes
Alert name:
Network Output Errors
Query A:
telegraf.linux-demo.net.err_out
Code language: CSS (css)
Reduce:
Last
Condition:
IS ABOVE 0
Evaluation:
Every 1 minute
For 2 minutes
Alert name:
Disk I/O Utilization High
Query A:
telegraf.linux-demo.diskio.io_util
Code language: CSS (css)
Reduce:
Last
Condition:
IS ABOVE 80
Evaluation:
Every 1 minute
For 5 minutes
For each alert rule, use:
Folder:
Linux Monitoring Lab
Evaluation group:
linux-telegraf-alerts
Evaluate every:
1m
Pending period:
5m for resource alerts
2m for error/process alerts
No data behavior:
No Data → No Data
Error → Error
Code language: JavaScript (javascript)
For a beginner lab, explain:
No Data means Grafana did not receive data for the query.
Error means the query or data source failed.
For classroom labs, students may not naturally reach 90% CPU or memory.
So just for testing, change the threshold temporarily.
Example:
CPU alert production threshold:
CPU > 90
CPU alert test threshold:
CPU > 1
Then wait until the warning lights up.
After testing, change it back to:
CPU > 90
For disk and memory warnings, do not ask the novice to fill the disk or memory. Instead, test by temporarily lowering the threshold.
Problem 1: Graphite Data Source Test Failed
Check Graphite crucible:
docker ps
Check out the Graphite API:
curl "
Code language: JavaScript (javascript)
If Grafana can’t connect using:
http:
Code language: JavaScript (javascript)
Try:
http://<server-public-ip>:8080
Code language: HTML, XML (xml)
Problem 2: Query Doesn’t Return Data
Check if metrics exist:
curl "
Code language: JavaScript (javascript)
Try these known performance metrics:
telegraf.linux-demo.cpu.usage_active
Code language: CSS (css)
Also check the time range on Grafana:
Last 5 minutes
Last 15 minutes
Last 1 hour
Question 3: Students Used .wsp in Grafana Queries
Wrong:
telegraf.linux-demo.cpu.usage_active.wsp
Code language: CSS (css)
Correct:
telegraf.linux-demo.cpu.usage_active
Code language: CSS (css)
Explain:
.wsp is the storage file extension.
Grafana queries the metric name, not the file name.
Code language: CSS (css)
Issue 4: Student Usability servers.*
Wrong:
servers.*
Correct:
telegraf.linux-demo.*
Code language: CSS (css)
Reason:
Your Graphite server has no metrics under servers.*.
The actual metrics are stored under telegraf.linux-demo.*.
Code language: CSS (css)
Ask students to complete these tasks:
Exercise 1: Explore Metrics
Use Grafana Explore and run:
telegraf.linux-demo.cpu.usage_active
telegraf.linux-demo.mem.used_percent
telegraf.linux-demo.disk.used_percent
Code language: CSS (css)
Question:
Which metric shows CPU usage?
Which metric shows memory usage?
Which metric shows disk usage?
Exercise 2: Create Three Stat Panels
Create stat panels for:
CPU Active %
Memory Used %
Disk Used %
Exercise 3: Create a Series Panel One Time
Create a CPU crash panel using:
telegraf.linux-demo.cpu.usage_user
telegraf.linux-demo.cpu.usage_system
telegraf.linux-demo.cpu.usage_iowait
telegraf.linux-demo.cpu.usage_idle
Code language: CSS (css)
Exercise 4: Create One Alert
Create an alert:
High Memory Usage
Metric:
telegraf.linux-demo.mem.used_percent
Code language: CSS (css)
Condition:
Above 90
For testing, temporarily change:
Above 1
Then restore:
Above 90
This is the actual metric group that will be used in this lab.
CPU Metrics
telegraf.linux-demo.cpu.usage_active
telegraf.linux-demo.cpu.usage_guest
telegraf.linux-demo.cpu.usage_guest_nice
telegraf.linux-demo.cpu.usage_idle
telegraf.linux-demo.cpu.usage_iowait
telegraf.linux-demo.cpu.usage_irq
telegraf.linux-demo.cpu.usage_nice
telegraf.linux-demo.cpu.usage_softirq
telegraf.linux-demo.cpu.usage_steal
telegraf.linux-demo.cpu.usage_system
telegraf.linux-demo.cpu.usage_user
Code language: CSS (css)
Memory Metrics
telegraf.linux-demo.mem.active
telegraf.linux-demo.mem.available
telegraf.linux-demo.mem.available_percent
telegraf.linux-demo.mem.buffered
telegraf.linux-demo.mem.cached
telegraf.linux-demo.mem.commit_limit
telegraf.linux-demo.mem.committed_as
telegraf.linux-demo.mem.dirty
telegraf.linux-demo.mem.free
telegraf.linux-demo.mem.high_free
telegraf.linux-demo.mem.high_total
telegraf.linux-demo.mem.huge_page_size
telegraf.linux-demo.mem.huge_pages_free
telegraf.linux-demo.mem.huge_pages_total
telegraf.linux-demo.mem.inactive
telegraf.linux-demo.mem.low_free
telegraf.linux-demo.mem.low_total
telegraf.linux-demo.mem.mapped
telegraf.linux-demo.mem.page_tables
telegraf.linux-demo.mem.shared
telegraf.linux-demo.mem.slab
telegraf.linux-demo.mem.sreclaimable
telegraf.linux-demo.mem.sunreclaim
telegraf.linux-demo.mem.swap_cached
telegraf.linux-demo.mem.swap_free
telegraf.linux-demo.mem.swap_total
telegraf.linux-demo.mem.total
telegraf.linux-demo.mem.used
telegraf.linux-demo.mem.used_percent
telegraf.linux-demo.mem.vmalloc_chunk
telegraf.linux-demo.mem.vmalloc_total
telegraf.linux-demo.mem.vmalloc_used
telegraf.linux-demo.mem.write_back
telegraf.linux-demo.mem.write_back_tmp
Code language: CSS (css)
Disk Metrics
telegraf.linux-demo.disk.free
telegraf.linux-demo.disk.inodes_free
telegraf.linux-demo.disk.inodes_total
telegraf.linux-demo.disk.inodes_used
telegraf.linux-demo.disk.inodes_used_percent
telegraf.linux-demo.disk.total
telegraf.linux-demo.disk.used
telegraf.linux-demo.disk.used_percent
Code language: CSS (css)
Disk I/O Metrics
telegraf.linux-demo.diskio.io_await
telegraf.linux-demo.diskio.io_svctm
telegraf.linux-demo.diskio.io_time
telegraf.linux-demo.diskio.io_util
telegraf.linux-demo.diskio.iops_in_progress
telegraf.linux-demo.diskio.merged_reads
telegraf.linux-demo.diskio.merged_writes
telegraf.linux-demo.diskio.read_bytes
telegraf.linux-demo.diskio.read_time
telegraf.linux-demo.diskio.reads
telegraf.linux-demo.diskio.weighted_io_time
telegraf.linux-demo.diskio.write_bytes
telegraf.linux-demo.diskio.write_time
telegraf.linux-demo.diskio.writes
Code language: CSS (css)
Network Metrics
telegraf.linux-demo.net.bytes_recv
telegraf.linux-demo.net.bytes_sent
telegraf.linux-demo.net.drop_in
telegraf.linux-demo.net.drop_out
telegraf.linux-demo.net.err_in
telegraf.linux-demo.net.err_out
telegraf.linux-demo.net.packets_recv
telegraf.linux-demo.net.packets_sent
telegraf.linux-demo.net.speed
Code language: CSS (css)
Process Metrics
telegraf.linux-demo.processes.blocked
telegraf.linux-demo.processes.dead
telegraf.linux-demo.processes.idle
telegraf.linux-demo.processes.paging
telegraf.linux-demo.processes.running
telegraf.linux-demo.processes.sleeping
telegraf.linux-demo.processes.stopped
telegraf.linux-demo.processes.total
telegraf.linux-demo.processes.total_threads
telegraf.linux-demo.processes.unknown
telegraf.linux-demo.processes.zombies
Code language: CSS (css)
Swap Metrics
telegraf.linux-demo.swap.free
telegraf.linux-demo.swap.in
telegraf.linux-demo.swap.out
telegraf.linux-demo.swap.total
telegraf.linux-demo.swap.used
telegraf.linux-demo.swap.used_percent
Code language: CSS (css)
System Metrics
telegraf.linux-demo.system.load1
telegraf.linux-demo.system.load15
telegraf.linux-demo.system.load5
telegraf.linux-demo.system.n_cpus
telegraf.linux-demo.system.n_physical_cpus
telegraf.linux-demo.system.uptime
Code language: CSS (css)
Kernel Metrics
telegraf.linux-demo.kernel.boot_time
telegraf.linux-demo.kernel.context_switches
telegraf.linux-demo.kernel.entropy_avail
telegraf.linux-demo.kernel.interrupts
telegraf.linux-demo.kernel.processes_forked
Code language: CSS (css)
By completing this lab, students learn how to:
1. Verify Graphite and Telegraf containers
2. Check stored Graphite metrics
3. Understand .wsp files versus Grafana metric queries
4. Add Graphite as a Grafana 13 data source
5. Explore Graphite metrics in Grafana
6. Build a Linux monitoring dashboard
7. Create CPU, memory, disk, disk I/O, network, swap, process, system, and kernel panels
8. Create beginner-friendly Grafana alert rules
9. Troubleshoot common Graphite and Grafana query issues
Code language: JavaScript (javascript)
Find a Trusted Heart Hospital
Compare heart hospitals by city and service — all in one place.
Explore the Hospital
PakarPBN
A Private Blog Network (PBN) is a collection of websites that are controlled by a single individual or organization and used primarily to build backlinks to a “money site” in order to influence its ranking in search engines such as Google. The core idea behind a PBN is based on the importance of backlinks in Google’s ranking algorithm. Since Google views backlinks as signals of authority and trust, some website owners attempt to artificially create these signals through a controlled network of sites.
In a typical PBN setup, the owner acquires expired or aged domains that already have existing authority, backlinks, and history. These domains are rebuilt with new content and hosted separately, often using different IP addresses, hosting providers, themes, and ownership details to make them appear unrelated. Within the content published on these sites, links are strategically placed that point to the main website the owner wants to rank higher. By doing this, the owner attempts to pass link equity (also known as “link juice”) from the PBN sites to the target website.
The purpose of a PBN is to give the impression that the target website is naturally earning links from multiple independent sources. If done effectively, this can temporarily improve keyword rankings, increase organic visibility, and drive more traffic from search results.