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

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

GUI um NAGIOS zu konfigurieren

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

Wer kennt das nicht, in der Serverlandschaft stehen hunderte von Servern oder aber auch hunderte von Diensten müssen überwacht werden. In den meisten Fällen kommt hier nagios zum Einsatz. Was jedoch ein Problem darstellt, wenn man mal einige Hundert Checks im Einsatz hat, wird jeder neue Check zur Qual.

Genau für dieses Problem gibt es NConf, eine Webapplikation um die Config-Files für NAGIOS zu schreiben. Als weitere Alternative gibt es noch nagiosql. Letzteres ist aber unter PHP 5.4 nicht mehr 100%ig lauffähig.

nagiosql habe ich sehr lange eingesetzt und bin mir nun NConf im Detail am anschauen. NConf bietet deutlich mehr Funktionen und es lohnt definitiv einen Blick darauf.

Ich werde über NConf in den kommenden Wochen ausführlicher berichten.