2015-11-10 11:06:03 +01:00
|
|
|
<?php
|
|
|
|
|
|
2017-02-23 22:45:50 +00:00
|
|
|
use LibreNMS\RRD\RrdDefinition;
|
|
|
|
|
|
2016-07-07 01:33:43 -05:00
|
|
|
$name = 'ceph';
|
2022-01-06 12:08:52 +01:00
|
|
|
|
2016-07-07 01:33:43 -05:00
|
|
|
if (! empty($agent_data['app'][$name])) {
|
2017-12-06 16:13:10 -06:00
|
|
|
$ceph_data = $agent_data['app'][$name];
|
2015-11-10 11:06:03 +01:00
|
|
|
|
2017-12-06 16:13:10 -06:00
|
|
|
$metrics = [];
|
|
|
|
|
foreach (explode('<', $ceph_data) as $section) {
|
2016-08-28 12:32:58 -05:00
|
|
|
if (empty($section)) {
|
2015-11-10 11:06:03 +01:00
|
|
|
continue;
|
2016-08-28 12:32:58 -05:00
|
|
|
}
|
2015-11-10 11:06:03 +01:00
|
|
|
[$section, $data] = explode('>', $section);
|
2016-07-07 01:33:43 -05:00
|
|
|
|
2015-11-10 11:06:03 +01:00
|
|
|
if ($section == 'poolstats') {
|
2017-02-23 22:45:50 +00:00
|
|
|
$rrd_def = RrdDefinition::make()
|
|
|
|
|
->addDataset('ops', 'GAUGE', 0)
|
|
|
|
|
->addDataset('wrbytes', 'GAUGE', 0)
|
|
|
|
|
->addDataset('rbytes', 'GAUGE', 0);
|
2016-08-12 13:31:11 -05:00
|
|
|
|
2015-11-10 11:06:03 +01:00
|
|
|
foreach (explode("\n", $data) as $line) {
|
2016-08-28 12:32:58 -05:00
|
|
|
if (empty($line)) {
|
2015-11-10 11:06:03 +01:00
|
|
|
continue;
|
2016-08-28 12:32:58 -05:00
|
|
|
}
|
2015-11-10 11:06:03 +01:00
|
|
|
[$pool,$ops,$wrbytes,$rbytes] = explode(':', $line);
|
|
|
|
|
echo "Ceph Pool: $pool, IOPS: $ops, Wr bytes: $wrbytes, R bytes: $rbytes\n";
|
2016-07-07 01:33:43 -05:00
|
|
|
$fields = [
|
|
|
|
|
'ops' => $ops,
|
|
|
|
|
'wrbytes' => $wrbytes,
|
|
|
|
|
'rbytes' => $rbytes,
|
|
|
|
|
];
|
2017-12-06 16:13:10 -06:00
|
|
|
$metrics["pool_$pool"] = $fields;
|
2023-10-16 01:40:40 -07:00
|
|
|
$tags = [
|
|
|
|
|
'name' => $name,
|
|
|
|
|
'app_id' => $app->app_id,
|
|
|
|
|
'pool' => $pool,
|
|
|
|
|
'rrd_name' => ['app', $name, $app->app_id, 'pool', $pool],
|
|
|
|
|
'rrd_def' => $rrd_def,
|
|
|
|
|
];
|
2016-07-07 01:33:43 -05:00
|
|
|
data_update($device, 'app', $tags, $fields);
|
2015-11-10 11:06:03 +01:00
|
|
|
}
|
2016-08-28 12:32:58 -05:00
|
|
|
} elseif ($section == 'osdperformance') {
|
2017-02-23 22:45:50 +00:00
|
|
|
$rrd_def = RrdDefinition::make()
|
|
|
|
|
->addDataset('apply_ms', 'GAUGE', 0)
|
|
|
|
|
->addDataset('commit_ms', 'GAUGE', 0);
|
2016-08-12 13:31:11 -05:00
|
|
|
|
2015-11-10 11:06:03 +01:00
|
|
|
foreach (explode("\n", $data) as $line) {
|
2016-08-28 12:32:58 -05:00
|
|
|
if (empty($line)) {
|
2015-11-10 11:06:03 +01:00
|
|
|
continue;
|
2016-08-28 12:32:58 -05:00
|
|
|
}
|
2015-11-10 11:06:03 +01:00
|
|
|
[$osd,$apply,$commit] = explode(':', $line);
|
|
|
|
|
echo "Ceph OSD: $osd, Apply: $apply, Commit: $commit\n";
|
2016-07-07 01:33:43 -05:00
|
|
|
$fields = [
|
|
|
|
|
'apply_ms' => $apply,
|
|
|
|
|
'commit_ms' => $commit,
|
|
|
|
|
];
|
2017-12-06 16:13:10 -06:00
|
|
|
$metrics["osd_$osd"] = $fields;
|
2023-10-16 01:40:40 -07:00
|
|
|
$tags = [
|
|
|
|
|
'name' => $name,
|
|
|
|
|
'app_id' => $app->app_id,
|
|
|
|
|
'osd' => $osd,
|
|
|
|
|
'rrd_name' => ['app', $name, $app->app_id, 'osd', $osd],
|
|
|
|
|
'rrd_def' => $rrd_def,
|
|
|
|
|
];
|
2016-07-07 01:33:43 -05:00
|
|
|
data_update($device, 'app', $tags, $fields);
|
2015-11-10 11:06:03 +01:00
|
|
|
}
|
2016-08-28 12:32:58 -05:00
|
|
|
} elseif ($section == 'df') {
|
2017-02-23 22:45:50 +00:00
|
|
|
$rrd_def = RrdDefinition::make()
|
|
|
|
|
->addDataset('avail', 'GAUGE', 0)
|
|
|
|
|
->addDataset('used', 'GAUGE', 0)
|
|
|
|
|
->addDataset('objects', 'GAUGE', 0);
|
2016-08-12 13:31:11 -05:00
|
|
|
|
2015-11-10 11:06:03 +01:00
|
|
|
foreach (explode("\n", $data) as $line) {
|
2016-08-28 12:32:58 -05:00
|
|
|
if (empty($line)) {
|
2015-11-10 11:06:03 +01:00
|
|
|
continue;
|
2016-08-28 12:32:58 -05:00
|
|
|
}
|
2016-07-07 01:33:43 -05:00
|
|
|
[$df,$avail,$used,$objects] = explode(':', $line);
|
2017-12-06 16:13:10 -06:00
|
|
|
echo "Ceph Pool DF: $df, Avail: $avail, Used: $used, Objects: $objects\n";
|
2016-07-07 01:33:43 -05:00
|
|
|
$fields = [
|
|
|
|
|
'avail' => $avail,
|
|
|
|
|
'used' => $used,
|
|
|
|
|
'objects' => $objects,
|
|
|
|
|
];
|
2017-12-06 16:13:10 -06:00
|
|
|
$metrics["df_$df"] = $fields;
|
2023-10-16 01:40:40 -07:00
|
|
|
$tags = [
|
|
|
|
|
'name' => $name,
|
|
|
|
|
'app_id' => $app->app_id,
|
|
|
|
|
'df' => $df,
|
|
|
|
|
'rrd_name' => ['app', $name, $app->app_id, 'df', $df],
|
|
|
|
|
'rrd_def' => $rrd_def,
|
|
|
|
|
];
|
2016-07-07 01:33:43 -05:00
|
|
|
data_update($device, 'app', $tags, $fields);
|
2015-11-10 11:06:03 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2017-12-06 16:13:10 -06:00
|
|
|
update_application($app, $ceph_data, $metrics);
|
2015-11-10 11:06:03 +01:00
|
|
|
}
|
2017-12-06 16:13:10 -06:00
|
|
|
|
|
|
|
|
unset($ceph_data, $metrics);
|