84 lines
2.2 KiB
PHP
84 lines
2.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Observium
|
|
*
|
|
* This file is part of Observium.
|
|
*
|
|
* @package observium
|
|
* @subpackage poller
|
|
* @copyright (C) Adam Armstrong
|
|
*
|
|
*/
|
|
|
|
$outerregex = '~
|
|
^version:\s
|
|
(?P<version>[\d.]+)\s
|
|
\(
|
|
api:(?P<api>\d+).+?
|
|
proto:(?P<proto>[-\d]+)
|
|
\)\R
|
|
(GIT\-hash)?(srcversion)?:\s(?P<srcversion>.+)\R{1,2}
|
|
(?P<devices>(?:\s\d(?:.+\R){2,4})+)
|
|
~xm';
|
|
|
|
$innerregex = '~
|
|
^\s(?P<devno>\d+):\s+
|
|
cs:(?P<cs>\w+)\s+
|
|
ro:(?P<ro>\S+)\s+
|
|
ds:(?P<ds>\S+)\s+
|
|
(?P<rep>\S+)\s+
|
|
(?P<io>\S+)\R\s+
|
|
ns:(?P<ns>\S+)\s+
|
|
nr:(?P<nr>\S+)\s+
|
|
dw:(?P<dw>\S+)\s+
|
|
dr:(?P<dr>\S+)\s+
|
|
al:(?P<al>\S+)\s+
|
|
bm:(?P<bm>\S+)\s+
|
|
lo:(?P<lo>\S+)\s+
|
|
pe:(?P<pe>\S+)\s+
|
|
ua:(?P<ua>\S+)\s+
|
|
ap:(?P<ap>\S+)\s+
|
|
ep:(?P<ep>\S+)\s+
|
|
wo:(?P<wo>\S+)\s+
|
|
oos:(?P<oos>\S+)\R
|
|
~xm';
|
|
|
|
$outerkeys = ["version", "api", "proto", "srcversion"];
|
|
$innerkeys = ["devno", "cs", "ro", "ds", "rep", "io", 'ns', 'nr', 'dw', 'dr', 'al', 'bm', 'lo', 'pe', 'ua', 'ap', 'ep', 'wo', 'oos'];
|
|
|
|
$output = [];
|
|
preg_match_all($outerregex, $agent_data['app']['drbd'] . PHP_EOL, $matches, PREG_SET_ORDER);
|
|
|
|
foreach ($matches as $match) {
|
|
foreach ($outerkeys as $key) {
|
|
$arr[$key] = $match[$key];
|
|
}
|
|
|
|
preg_match_all($innerregex, $match["devices"], $innermatches, PREG_SET_ORDER);
|
|
$arr["devices"] = [];
|
|
|
|
foreach ($innermatches as $innermatch) {
|
|
$tmp = [];
|
|
foreach ($innerkeys as $key) {
|
|
$tmp[$key] = $innermatch[$key];
|
|
}
|
|
$arr["devices"][] = $tmp;
|
|
}
|
|
|
|
$output = $arr;
|
|
}
|
|
|
|
foreach ($output['devices'] as $drbd_dev) {
|
|
$app_instance = "drbd" . $drbd_dev['devno'];
|
|
$app_id = discover_app($device, 'drbd', $app_instance);
|
|
|
|
update_application($app_id, $drbd_dev);
|
|
|
|
rrdtool_update_ng($device, 'drbd', $drbd_dev, $app_instance);
|
|
|
|
unset($drbd_dev);
|
|
}
|
|
|
|
// EOF
|