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

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (2 Stimmen, Durchschnitt: 3,00 von 5)
Loading...

Heute stelle ich ein weiteres Plugin für die Überwachung der AVM FritzBox Modelle vor. Auch dieses Plugin nutzt die UPNP Schnittstelle, welche ich bereits im letzten Beitrag vorgestellt habe. Das Plugin liest die globale Anzahl Transferierter Bytes der Box aus und errechnet automatisch den Diff seit dem letzten Update. Die Daten werden in Bits angezeigt.

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

avm_traffic_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 Traffic plugin for Munin
  11.  *
  12.  * - Add symlink:
  13.  * ln -s <pathtothisfile> /etc/munin/plugins/avm_traffic_router
  14.  *
  15.  * - Add plugin configuration to /etc/munin/plugin-conf.d/avm
  16.  * [avm_traffic_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 AvmTraffic 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 WAN traffic',
  36. 				'graph_category' => 'network',
  37. 				'graph_info' => 'This graph shows the traffic of the AVM Fritz!Box WAN network interface. Please note that the traffic is shown in bits per second, not bytes.',
  38. 				'graph_vlabel' => 'bits in (-) / out (+) per \${graph_period}',
  39. 				'graph_args' => '--base 1024'
  40. 		);
  41. 	}
  42.  
  43. 	/**
  44. 	 * Config for Graphs
  45. 	 *
  46. 	 * @return array
  47. 	 */
  48. 	protected function getPluginGraphs() {
  49. 		$graphs = array();
  50.  
  51. 		$graphs['down']['label'] = "received";
  52. 		$graphs['down']['type'] = "COUNTER";
  53. 		$graphs['down']['graph'] = "no";
  54. 		$graphs['down']['cdef'] = "down,8,*";
  55. 		$graphs['down']['max'] = "1000000000";
  56.  
  57. 		$graphs['up']['label'] = "send";
  58. 		$graphs['up']['type'] = "COUNTER";
  59. 		$graphs['up']['draw'] = "AREA";
  60. 		$graphs['up']['cdef'] = "up,8,*";
  61. 		$graphs['up']['max'] = "1000000000";
  62. 		$graphs['up']['negative'] = "down";
  63. 		$graphs['up']['info'] = "Traffic of the WAN interface.";
  64.  
  65. 		return $graphs;
  66. 	}
  67.  
  68. 	/**
  69. 	 * Transform data from RAW HTML into XML Structure
  70. 	 *
  71. 	 * @return data
  72. 	 */
  73. 	protected function transformData() {
  74. 		$client = new SoapClient(
  75. 			null,
  76. 			array(
  77. 					'location'   => "http://".$this->avm['ip']."/igdupnp/control/WANCommonIFC1",
  78. 					'uri'        => "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1",
  79. 					'soapaction' => "",
  80. 					'noroot'     => True
  81. 			)
  82. 		);
  83.  
  84. 		$data_prop = $client->GetCommonLinkProperties();
  85. 		$data_stats = $client->GetAddonInfos();
  86.  
  87. 		$graphs['up'] = $data_stats['NewTotalBytesSent'];
  88. 		$graphs['down'] = $data_stats['NewTotalBytesReceived'];
  89.  
  90. 		return $graphs;
  91. 	}
  92.  
  93. 	/**
  94. 	 * Read source & collecting values
  95. 	 *
  96. 	 * @return array
  97. 	 */
  98. 	protected function getValues() {
  99. 		$data = $this->transformData();
  100. 		return $data;
  101. 	}
  102.  
  103. }
  104.  
  105. $plugin = new AvmTraffic($argv);
  106. $plugin->start($argv);
  107. ?>

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

AVM FritzBox via UPNP überwachen/auslesen – MUNIN/NAGIOS

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (2 Stimmen, Durchschnitt: 5,00 von 5)
Loading...

Nach dem ich auf den Kabel Deutschland 100Mbit Tarif umgestiegen bin, musste auch ein neuer Router her, der die hohe Bandbreite verarbeiten kann. Aufgrund der Tatsache, dass Kabel Deutschland nur 3 Varianten anbietet, die mich nicht überzeugen, habe ich mir eine FritzBox 3390 zugelegt. Die Alternativen von Kabel Deutschland sind ein normaler Kabel-Modem-Router, Kabel-Wlan-Modem-Router, AVM Fritzbox 6630 inkl. WLAN. Alle können VOIP, letztere sogar 2 parallele Leitungen. Leider wird die Fritzbox 6630 mit einer von KD gepatchten Firmware ausgeliefert und ist in Ihrer Funktionsweise stark beschränkt. Da ich aktuell kein VOIP nutze, habe ich mich für die Variante mit Kabel-Modem-Router entschieden um dahinter eine eigene Fritzbox anzuschließen.

Das bedeutet aber, dass die Router Funktion im Kabel-Deutschland Gerät deaktiviert werden muss. Im CSC von Kabel Deutschland kann man dafür den Bridge-Modus aktivieren. Damit wird LAN Port 1 nur noch als Modem-Port benutzt. D.h. an Port 1 kann ein weiterer Router angeschlossen werden.

Jetzt besteht bei dem ein oder anderen User sicherlich das Interesse, die Fritzbox auch zu überwachen oder auf die Informationen wie aktuelle externe IP zuzugreifen. Dafür muss in der Fritzbox nur die Funktion „Statusinformationen über UPnP übertragen (empfohlen)“ aktiviert sein. (Standard). Diese ist (zumindest in der Fritzbox 3390) unter Heimnetz -> Netzwerk -> Programme zu finden. (FRITZ!OS 05.51)

Anbei ein paar Code-Schnipsel, mit dem man auf die Fritzbox zugreifen kann. Der Aufbau der XML Datei dürfte selbsterklärend sein, wer schon mal mit XML Dateien gearbeitet hat. Der Einstieg erfolgt über diese Seite:

http://192.168.0.1:49000/igddesc.xml

Darüber sind im unteren Teil weitere Sub-Funktionen verlinkt, weitere XML Dateien. Öffnet man diese, kann man die einzelnen Actions sehen und via PHP darauf zugreifen.

  1. <?php
  2. $client = new SoapClient(
  3.     null,
  4.     array(
  5.         'location'   => "http://192.168.0.1:49000/upnp/control/WANCommonIFC1",
  6.         'uri'        => "urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1",
  7.         'soapaction' => "",
  8.         'noroot'     => True
  9.     )
  10. );
  11.  
  12. $status = $client->GetCommonLinkProperties();
  13. $status2 = $client->GetAddonInfos();
  14. print_r($status);
  15. print_r($status2);
  16.  
  17. $client = new SoapClient(
  18.     null,
  19.     array(
  20.         'location'   => "http://192.168.0.1:49000/upnp/control/WANCommonIFC1",
  21.         'uri'        => "urn:schemas-upnp-org:service:WANIPConnection:1",
  22.         'soapaction' => "",
  23.         'noroot'     => True
  24.     )
  25. );
  26. $status = $client->GetExternalIPAddress();
  27. $status2 = $client->GetStatusInfo();
  28. print_r($status);
  29. print_r($status2);
  30. ?>

In einem der nächsten Artikel werden wir zeigen, wie man mit diesen Informationen NAGIOS Checks als auch MUNIN-Plugins schreibt.

Lesen Sie hier Teil 2