[MUNIN] Überwachung AVM Fritzbox Uptime via UPNP mit Munin

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

Wie in unserem letzten Artikel angekündigt, möchte ich heute ein weiteres Plugin vorstellen. Diesmal greift das Plugin nicht über die HTML GUI zu, sondern fragt die UPNP Schnittstelle der Fritzbox ab. Mehr Details dazu finden Sie in unserem ersten und zweiten Artikel dazu.

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

avm_uptime_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 Uptime plugin for Munin
  11.  *
  12.  * - Add symlink:
  13.  * ln -s <pathtothisfile> /etc/munin/plugins/avm_uptime_router
  14.  *
  15.  * - Add plugin configuration to /etc/munin/plugin-conf.d/avm
  16.  * [avm_uptime_router]
  17.  * env.ip 192.168.178.1:49000
  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 AvmUptime 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' => 'down up',
  35. 				'graph_title' => 'AVM Fritz!Box Uptime',
  36. 				'graph_category' => 'system',
  37. 				'graph_info' => 'Uptime AVM!FritzBox in Days',
  38. 				'graph_vlabel' => 'Uptime in Days',
  39. 				'graph_args' => '--base 1000 -l 0',
  40. 				'graph_scale' => 'no'
  41. 		);
  42. 	}
  43.  
  44. 	/**
  45. 	 * Config for Graphs
  46. 	 *
  47. 	 * @return array
  48. 	 */
  49. 	protected function getPluginGraphs() {
  50. 		$graphs = array();
  51.  
  52. 		$graphs['uptime']['label'] = "uptime";
  53. 		$graphs['uptime']['draw'] = "AREA";
  54.  
  55. 		return $graphs;
  56. 	}
  57.  
  58. 	/**
  59. 	 * Transform data from RAW HTML into XML Structure
  60. 	 *
  61. 	 * @return data
  62. 	 */
  63. 	protected function transformData() {
  64. 		$client = new SoapClient(
  65. 		    null,
  66. 		    array(
  67. 		        'location'   => "http://".$this->avm['ip']."/igdupnp/control/WANIPConn1",
  68. 		        'uri'        => "urn:schemas-upnp-org:service:WANIPConnection:1",
  69. 		        'soapaction' => "",
  70. 		        'noroot'     => True
  71. 		    )
  72. 		);
  73.  
  74. 		$status = $client->GetStatusInfo();
  75. 		$uptime = round((intval($status['NewUptime']) / 86400),2);
  76.  
  77. 		$graphs['uptime'] = $uptime;
  78.  
  79. 		return $graphs;
  80. 	}
  81.  
  82. 	/**
  83. 	 * Read source & collecting values
  84. 	 *
  85. 	 * @return array
  86. 	 */
  87. 	protected function getValues() {
  88. 		$data = $this->transformData();
  89. 		return $data;
  90. 	}
  91.  
  92. }
  93.  
  94. $plugin = new AvmUptime($argv);
  95. $plugin->start($argv);
  96. ?>