mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
add Linux Softnet Stat app (#15094)
* add linux_softnet_stat poller * add graphs and app page for linux_softnet_stat * fix polling * rename a few items, clean up the app specific page, and add to the apps page * convert from derive to counter * save the budget and budget_usecs to app data * display current value of the budgets * now track budget values * add tests data * rename it * add docs for Linux Softnet Stat * re-order and add budget for app page graph order * style fix * correct data location * fix metrics for the json
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
$ds = 'backlog_length';
|
||||
$unit_text = 'Backlog Length';
|
||||
$filename = Rrd::name($device['hostname'], ['app', 'linux_softnet_stat', $app->app_id]);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
$name = 'linux_softnet_stat';
|
||||
$unit_text = 'Budget Value';
|
||||
$colours = 'psychedelic';
|
||||
$dostack = 0;
|
||||
$printtotal = 0;
|
||||
$addarea = 1;
|
||||
$transparency = 15;
|
||||
|
||||
$rrd_filename = Rrd::name($device['hostname'], ['app', $name, $app->app_id]);
|
||||
|
||||
$rrd_list = [];
|
||||
if (Rrd::checkRrdExists($rrd_filename)) {
|
||||
$rrd_list[] = [
|
||||
'filename' => $rrd_filename,
|
||||
'descr' => 'Budget',
|
||||
'ds' => 'budget',
|
||||
];
|
||||
$rrd_list[] = [
|
||||
'filename' => $rrd_filename,
|
||||
'descr' => 'Budget usecs',
|
||||
'ds' => 'budget_usecs',
|
||||
];
|
||||
} else {
|
||||
d_echo('RRD "' . $rrd_filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_multi_line.inc.php';
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
$ds = 'cpu_collision';
|
||||
$unit_text = 'CPU Collision';
|
||||
$filename = Rrd::name($device['hostname'], ['app', 'linux_softnet_stat', $app->app_id]);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
$ds = 'flow_limit';
|
||||
$unit_text = 'Limit Hits/Sec';
|
||||
$filename = Rrd::name($device['hostname'], ['app', 'linux_softnet_stat', $app->app_id]);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
$ds = 'packet_dropped';
|
||||
$unit_text = 'Pkt Drops/Sec';
|
||||
$filename = Rrd::name($device['hostname'], ['app', 'linux_softnet_stat', $app->app_id]);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
$ds = 'packets';
|
||||
$unit_text = 'Pkts/Sec';
|
||||
$filename = Rrd::name($device['hostname'], ['app', 'linux_softnet_stat', $app->app_id]);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
$ds = 'received_rps';
|
||||
$unit_text = 'RPS/Sec';
|
||||
$filename = Rrd::name($device['hostname'], ['app', 'linux_softnet_stat', $app->app_id]);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
$ds = 'time_squeeze';
|
||||
$unit_text = 'Time Squeeze';
|
||||
$filename = Rrd::name($device['hostname'], ['app', 'linux_softnet_stat', $app->app_id]);
|
||||
|
||||
if (! Rrd::checkRrdExists($filename)) {
|
||||
d_echo('RRD "' . $filename . '" not found');
|
||||
}
|
||||
|
||||
require 'includes/html/graphs/generic_stats.inc.php';
|
||||
@@ -456,6 +456,16 @@ $graphs['wireguard'] = [
|
||||
$graphs['linux_config_files'] = [
|
||||
'number_of_confs',
|
||||
];
|
||||
$graphs['linux_softnet_stat'] = [
|
||||
'packets',
|
||||
'time_squeeze',
|
||||
'backlog_length',
|
||||
'packet_dropped',
|
||||
'cpu_collision',
|
||||
'flow_limit',
|
||||
'received_rps',
|
||||
'budget',
|
||||
];
|
||||
|
||||
echo '<div class="panel panel-default">';
|
||||
echo '<div class="panel-heading">';
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
$budget = $app->data['budget'] ?? 'unknown';
|
||||
$budget_usecs = $app->data['budget_usecs'] ?? 'unknown';
|
||||
|
||||
print_optionbar_start();
|
||||
echo 'Current Budget: ' . $budget . "<br>\nCurrent Budget usecs:" . $budget_usecs . "\n<br>";
|
||||
print_optionbar_end();
|
||||
|
||||
$graphs = [
|
||||
'linux_softnet_stat_packets' => 'Packets Per Second',
|
||||
'linux_softnet_stat_time_squeeze' => 'Time Squeezes Per Second',
|
||||
'linux_softnet_stat_backlog_length' => 'Backlog Lenght',
|
||||
'linux_softnet_stat_packet_dropped' => 'Packets Dropped Per Second',
|
||||
'linux_softnet_stat_cpu_collision' => 'CPU Collisions Per Second',
|
||||
'linux_softnet_stat_flow_limit' => 'Flow Limit Hit Per Second',
|
||||
'linux_softnet_stat_received_rps' => 'Received RPS Per Second',
|
||||
'linux_softnet_stat_budget' => 'Budget Sysctl Values',
|
||||
];
|
||||
|
||||
foreach ($graphs as $key => $text) {
|
||||
$graph_type = $key;
|
||||
$graph_array['height'] = '100';
|
||||
$graph_array['width'] = '215';
|
||||
$graph_array['to'] = \LibreNMS\Config::get('time.now');
|
||||
$graph_array['id'] = $app['app_id'];
|
||||
$graph_array['type'] = 'application_' . $key;
|
||||
|
||||
echo '<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">' . $text . '</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="row">';
|
||||
include 'includes/html/print-graphrow.inc.php';
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
echo '</div>';
|
||||
}
|
||||
Reference in New Issue
Block a user