[MUNIN] Überwachung AVM Fritzbox Auslastung mit Munin

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Keine Bewertung vorhanden)
Loading...

Heute möchte ich ein weiteres Plugin für die Überwachung der AVM FritzBox Modelle vorstellen. Da die UPNP Schnittstelle diese Informationen nicht zur Verfügung stellt, kommt hier wieder der GUI-Grep aus unserem ersten vorgestellten Plugin zum Einsatz. Das Plugin zeigt die Auslastung des Hauptprozessors, des WLAN Moduls & des Gesamtsystems an:

Auch hier wird die globale Klasse MuninPlugin benötigt, welche Sie hier finden.

avm_energy_router-day

  1. #!/usr/bin/php
  2. <?php
  3. ##############################
  4. #%# family=auto
  5. #%# capabilities=autoconf
  6.  
  7. require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'MuninPlugin.php';
  8.  
  9. /**
  10.  * AVM Energy plugin for Munin
  11.  *
  12.  * - Add symlink:
  13.  * ln -s <pathtothisfile> /etc/munin/plugins/avm_energy_router
  14.  *
  15.  * - Add plugin configuration to /etc/munin/plugin-conf.d/avm
  16.  * [avm_energy_router]
  17.  * env.ip 192.168.178.1
  18.  * env.host fritz.box
  19.  *
  20.  * @author Mike Goldhausen
  21.  * @copyright Copyright (c) 2015 by MiGo-WebDesign, www.migo-webdesign.de, Germany
  22.  */
  23.  
  24. class AvmEnergy extends MuninPlugin {
  25.  
  26. 	/**
  27. 	 * general Config for Plugin
  28. 	 *
  29. 	 * @return array
  30. 	*/
  31. 	protected function getPluginSetup() {
  32. 		return array(
  33. 				'host_name' => $this->avm['host'],
  34. 				'graph_order' => 'overall cpu wlan',
  35. 				'graph_title' => 'AVM Fritz!Box Auslastung',
  36. 				'graph_category' => 'system',
  37. 				'graph_info' => 'This graph shows the energy level of the AVM Fritz!Box.',
  38. 				'graph_vlabel' => 'Energy Level in percentage',
  39. 				'graph_args' => '--base 1000'
  40. 		);
  41. 	}
  42.  
  43. 	/**
  44. 	 * Config for Graphs
  45. 	 *
  46. 	 * @return array
  47. 	 */
  48. 	protected function getPluginGraphs() {
  49. 		$graphs = array();
  50.  
  51. 		$graphs['overall']['label'] = "Gesamtsystem";
  52. 		$graphs['overall']['info'] = "Performance Fritz!BOX Gesamtsystem.";
  53. 		$graphs['overall']['max'] = "100";
  54.  
  55. 		$graphs['corecpu']['label'] = "Hauptprozessor";
  56. 		$graphs['corecpu']['info'] = "Performance Fritz!BOX Hauptprozessor.";
  57. 		$graphs['corecpu']['max'] = "100";
  58.  
  59. 		$graphs['wlan']['label'] = "WLAN";
  60. 		$graphs['wlan']['info'] = "Performance Fritz!BOX WLAN.";
  61. 		$graphs['wlan']['max'] = "100";
  62.  
  63. 		return $graphs;
  64. 	}
  65.  
  66. 	/**
  67. 	 * Transform data from RAW HTML into XML Structure
  68. 	 *
  69. 	 * @param string $content
  70. 	 * @return data
  71. 	 */
  72. 	protected function transformData($content) {
  73. 		$doc = new DOMDocument();
  74. 		$doc->loadHTML($content);
  75. 		$tmp = simplexml_import_dom($doc);
  76.  
  77. 		//Gesamtsystem:
  78. 		$overall = $tmp->body->table->tr[1]->td[1]->div[0];
  79. 		//Hauptprozessor:
  80. 		$corecpu = $tmp->body->table->tr[2]->td[1]->div[0];
  81. 		//WLAN:
  82. 		$wlan = $tmp->body->table->tr[3]->td[1]->div[0];
  83.  
  84. 		$graphs['overall'] = intval($overall);
  85. 		$graphs['corecpu'] = intval($corecpu);
  86. 		$graphs['wlan'] = intval($wlan);
  87.  
  88. 		return $graphs;
  89. 	}
  90.  
  91. 	/**
  92. 	 * Read source & collecting values
  93. 	 *
  94. 	 * @return array
  95. 	 */
  96. 	protected function getValues() {
  97. 		$content = $this->readFromAvmGui("system/energy.lua","<table id=\"energy\">","<\/table>");
  98. 		$data = $this->transformData($content);
  99. 		return $data;
  100. 	}
  101.  
  102. }
  103.  
  104. $plugin = new AvmEnergy($argv);
  105. $plugin->start($argv);
  106. ?>

3 Replies to “[MUNIN] Überwachung AVM Fritzbox Auslastung mit Munin”

  1. Hallo Mike,

    erstmal danke für das coole Script. Ich kriege bei mir auch was angezeigt, aber irgendwas scheint bei der Graphen Erzeugung nicht vernünftig zu funktionieren.

    Hast du ggf. eine Idee was es sein könnte:

    Problem: Wenn ich das Script selber aufrufe, über munin-run, dann bekomme ich auch die Werte angezeigt, welche auf der Fritz.Box Seite angezeigt werden.

    munin-run avm_energy_router
    overall.value 44
    corecpu.value 68
    wlan.value 100

    Die Fritzbox Seite hat ja auch ne kleine Übersicht und der Bereich passt (Hauptprozessor mal auf 69, oder auch mal 67 aber immer in dem Bereich).

    Der mit Munin erzeugte Graph sieht dann aber so aus:
    https://www.dropbox.com/s/1y8a54npstyp3ki/avm_energy_router-day.png?dl=0

    Hier finde ich die Abweichung schon relativ groß.

    Setze übrigens eine Fritzbox 7320 mit FRITZ!OS 06.21 ein und musste für das Wlan Client Monitoring, auch schon dein Script avm_wlan_router von
    $wlanCount = preg_replace(„/[^0-9]/“,““, $tmp->body->table->tr[5]->td[1]);
    in
    $wlanCount = preg_replace(„/[^0-9]/“,““, $tmp->body->table->tr[3]->td[1]);
    ändern.

    Ggf. gibts hier unterschiedliche Oberflächen.

    Tausend Dank und schöne Ostern,
    Seb

    • Hallo Seb,

      wenn munin-run die richtigen Werte anzeigt, kann eigentlich der Graph nichts anderes anzeigen. Ich kann dir ehrlich gesagt nicht erklären, woher die Differenz kommt.
      Meine Vermutung -> wenn du mehrere Munin-Checks einbaust, wird die Fritzbox parallel mit Requests angefragt die Last verursachen. Baue doch mal alle anderen Checks zur FritzBox aus.

      Danke & Grüße
      Mike

  2. Hi Mike,

    tausend dank.. das scheints zu sein. Nehm ich die anderen Requests raus, geht es gleich runter… Muss ich mir mal angucken ob ich da was machen kann.

    Gruß
    Sebastian

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

Sicherheitsfrage * Time limit is exhausted. Please reload CAPTCHA.