[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. ?>