[\d.]+)\s \( api:(?P\d+).+? proto:(?P[-\d]+) \)\R (GIT\-hash)?(srcversion)?:\s(?P.+)\R{1,2} (?P(?:\s\d(?:.+\R){2,4})+) ~xm'; $innerregex = '~ ^\s(?P\d+):\s+ cs:(?P\w+)\s+ ro:(?P\S+)\s+ ds:(?P\S+)\s+ (?P\S+)\s+ (?P\S+)\R\s+ ns:(?P\S+)\s+ nr:(?P\S+)\s+ dw:(?P\S+)\s+ dr:(?P\S+)\s+ al:(?P\S+)\s+ bm:(?P\S+)\s+ lo:(?P\S+)\s+ pe:(?P\S+)\s+ ua:(?P\S+)\s+ ap:(?P\S+)\s+ ep:(?P\S+)\s+ wo:(?P\S+)\s+ oos:(?P\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