Skip to main content

tc QoS classes

Plugin: tc.plugin Module: tc.plugin

Overview

Examine tc metrics to gain insights into Linux traffic control operations. Study packet flow rates, queue lengths, and drop rates to optimize network traffic flow.

The plugin uses tc command to collect information about Traffic control.

This collector is only supported on the following platforms:

  • Linux

This collector supports collecting metrics from multiple instances of this integration, including remote instances.

The plugin needs to access command tc to get the necessary metrics. To achieve this netdata modifies permission of file /usr/libexec/netdata/plugins.d/tc-qos-helper.sh.

Default Behavior

Auto-Detection

This integration doesn't support auto-detection.

Limits

The default configuration for this integration does not impose any limits on data collection.

Performance Impact

The default configuration for this integration is not expected to impose a significant performance impact on the system.

Setup

Prerequisites

Create tc-qos-helper.conf

In order to view tc classes, you need to create the file /etc/netdata/tc-qos-helper.conf with content:

tc_show="class"

Configuration

Options

Config option
OptionDescriptionDefaultRequired
script to run to get tc valuesPath to script tc-qos-helper.shusr/libexec/netdata/plugins.d/tc-qos-helper.sno
enable show all classes and qdiscs for all interfacesyes/no flag to control what data is presented.yesno

via File

The configuration file name for this integration is netdata.conf. Configuration for this specific integration is located in the [plugin:tc] section within that file.

The file format is a modified INI syntax. The general structure is:

[section1]
option1 = some value
option2 = some other value

[section2]
option3 = some third value

You can edit the configuration file using the edit-config script from the Netdata config directory.

cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata
sudo ./edit-config netdata.conf
Examples
Basic

A basic example configuration using classes defined in /etc/iproute2/tc_cls.

An example of class IDs mapped to names in that file can be:

2:1 Standard
2:8 LowPriorityData
2:10 HighThroughputData
2:16 OAM
2:18 LowLatencyData
2:24 BroadcastVideo
2:26 MultimediaStreaming
2:32 RealTimeInteractive
2:34 MultimediaConferencing
2:40 Signalling
2:46 Telephony
2:48 NetworkControl

You can read more about setting up the tc rules in rc.local in this GitHub issue.

[plugin:tc]
script to run to get tc values = /usr/libexec/netdata/plugins.d/tc-qos-helper.sh
enable show all classes and qdiscs for all interfaces = yes

Alerts

There are no alerts configured by default for this integration.

Metrics

Metrics grouped by scope.

The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.

Per network device direction

Metrics related to QoS network device directions. Each direction (in/out) produces its own set of the following metrics.

Labels:

LabelDescription
deviceThe network interface.
device_nameThe network interface name
groupThe device family

Metrics:

MetricDescriptionDimensionsUnit
tc.qosClass Usagea dimension per classkilobits/s
tc.qos_packetsClass Packetsa dimension per classpackets/s
tc.qos_droppedClass Dropped Packetsa dimension per classpackets/s
tc.qos_tokensClass Tokensa dimension per classtokens
tc.qos_ctokensClass cTokensa dimension per classctokens

Troubleshooting

Recurring Cannot find file warnings for tc-qos-helper.conf

When tc-qos-helper.sh starts, it looks for its configuration in two places, in this order: the stock configuration directory (typically at /usr/lib/netdata/conf.d) and the user config directory (typically at /etc/netdata). Netdata does not ship a stock tc-qos-helper.conf, so on a default installation neither file exists and the script emits a Cannot find file warning for each missing path.

These warnings are harmless. When no configuration file is found the script keeps its built-in defaults (for example tc_show="qdisc"). They reappear every hour because the script exits and is restarted by Netdata every 3600 seconds (qos_exit_every=3600), which re-runs the same checks on each start.

Creating tc-qos-helper.conf in your user config directory with the desired setting silences the warning for the user configuration path. The warning for the stock path is expected to remain, because no stock tc-qos-helper.conf ships with Netdata, and it is benign.

FireQOS is not installed warning

When tc-qos-helper.sh starts and cannot find FireQOS (neither the /var/run/fireqos directory nor the fireqos executable), it logs that FireQOS is not installed on this system. This is normal on systems that do not perform QoS traffic shaping with FireQOS.

Like the configuration warnings, this message repeats every hour because the script exits and is restarted by Netdata every 3600 seconds (qos_exit_every=3600), re-running the FireQOS presence check on each start.

FireQOS is only required to apply QoS and expose human-readable class names to Netdata. Without it the plugin still collects tc qdisc/class metrics directly from the tc command. To expose FireQOS class names, install FireQOS. To map numeric class IDs to readable names without FireQOS, list them in /etc/iproute2/tc_cls and set tc_show="class" in tc-qos-helper.conf in your user config directory.


Do you have any feedback for this page? If so, you can open a new issue on our netdata/learn repository.