Nach dem bisherigen Debian Upgrade-Marathon auf meinem Heimserver, um mich gegen die PHP2Shell-Sicherheitslücke abzusichern, musste ich auch an meine Cacti-Installation Hand anlegen, um die wieder zum Laufen zu bekommen.
Für Cacti an sich war das relativ leicht, Cacti selbst erkannte, dass es aktualisiert worden war und durchlief beim ersten Einloggen eine geführte Update-Sequenz. Allerdings setze ich in Cacti auch die Percona Monitoring Plugins zur Überwachung von Apache und MySQL bzw. MariaDB ein. Wie man an der Github-Seite sieht, werden diese Plugins seit Jahren nicht mehr gepflegt, also braucht man nicht auf Updates bzw. Patches hoffen. Also war Selbermachen angesagt. Zum Glück waren die Änderungen nicht besonderes dramatisch, jedenfalls nicht an den beiden Skripten, die ich effektiv nutze. Hier der Patch für das Apache-Skript:
244,246c244,246 < while (list($tmp, $p) = each($args)) { < if (strpos($p, '--') === 0) { < $param = substr($p, 2); --- > for ($i = 0; $i < sizeof($args); $i++) { > if (strpos($args[$i], '--') === 0) { > $param = substr($args[$i], 2); 248c248 < $nextparam = current($args); --- > $nextparam = $args[$i+1]; 250c250,251 < list($tmp, $value) = each($args); --- > $value = $nextparam; > $i++; |
Und hier der Patch für das MySQL/MariaDB-Skript:
221,223c221,223 < while (list($tmp, $p) = each($args)) { < if (strpos($p, '--') === 0) { < $param = substr($p, 2); --- > for ($i = 0; $i < sizeof($args); $i++) { > if (strpos($args[$i], '--') === 0) { > $param = substr($args[$i], 2); 225c225 < $nextparam = current($args); --- > $nextparam = $args[$i+1]; 227c227,228 < list($tmp, $value) = each($args); --- > $value = $nextparam; > $i++; 386c387 < $result = run_query("SHOW SLAVE STATUS NONBLOCKING", $conn); --- > $result = run_query("SHOW SLAVE STATUS", $conn); 388c389 < $result = run_query("SHOW SLAVE STATUS NOLOCK", $conn); --- > $result = run_query("SHOW SLAVE STATUS", $conn); |
Zugegeben, der letzte Block ist ein relativ kruder Hack, das wäre auch eleganter gegangen, indem man die ganze if-Kaskade einfach weggelassen hätte. Ehrlich gesagt ist mir auch nicht ganz klar, ob das auch mit älteren Versionen von PHP und MySQL/MariaDB wie geplant funktioniert hätte.
Auf jeden Fall funktioniert mit diesen Patches auch das Monitoring von Apache und MariaDB wieder.