{"id":1192,"date":"2012-03-26T00:03:40","date_gmt":"2012-03-25T22:03:40","guid":{"rendered":"http:\/\/blog.benny-baumann.de\/?p=1192"},"modified":"2012-03-26T20:07:12","modified_gmt":"2012-03-26T18:07:12","slug":"rrdtool-mit-php-nutzen","status":"publish","type":"post","link":"http:\/\/blog.benny-baumann.de\/?p=1192","title":{"rendered":"RRDTool mit PHP nutzen"},"content":{"rendered":"<p>Wer meinen Blog bereits ein wenig verfolgt hat, wird mitbekommen haben, dass manchmal Graphen auftauchen, die mit RRDTool erzeugt wurden. Nun habe ich ja <a href=\"http:\/\/blog.benny-baumann.de\/?p=352\">bereits einmal zu RRDTool etwas geschrieben<\/a>, aber den von mir geschriebenen Wrapper, sowie den aktuellen Code-Stand (nach angewendetem Patch) hatte ich bisher noch nicht weiter ver\u00f6ffentlicht. Das werde ich hier jetzt einfach mal nachholen, damit sich keine weiter beschweren kann, dass RRDTool mit PHP so kompliziert zu nutzen geht.<\/p>\n<p>Das Projekt besteht hierbei aus zwei Teilen: Neben der PHP-Extension, die sich um die Anbindung an librrd4 k\u00fcmmert, zus\u00e4tzlich aus einem Userland-Teil, der einen Wrapper um die API bildet und eine ganze Menge der Operationen in OOP kapselt. Die API dazu ist zwar nicht die sch\u00f6nste, aber f\u00fcr meine Projekte hatte das bisher immer vollkommen gereicht und die wichtigsten Funktionen sind leicht nutzbar. Zus\u00e4tzlich hab ich einen Log-Parser basierend auf meinem Wrapper als eine kleine Demo-Anwendung eingebaut, so dass man sich die Funktionsweise etwas anschauen kann.<!--more--><\/p>\n<p>Aber der Reihe nach. Wie bereits erw\u00e4hnt besteht dieses Release aus 3 Teilen, die alle aufeinander aufbauen. Um also den Log Parser zu testen, m\u00fcssen alle Teile heruntergeladen werden:<\/p>\n<ol>\n<li><a href='http:\/\/blog.benny-baumann.de\/wp-content\/uploads\/php-rrd-ext.tar.gz'>PHP-Extension f\u00fcr RRDTool<\/a><\/li>\n<li><a href='http:\/\/blog.benny-baumann.de\/wp-content\/uploads\/php-rrd-lib.tar.gz'>RRDTool Userland Wrapper Library<\/a><\/li>\n<li><a href='http:\/\/blog.benny-baumann.de\/wp-content\/uploads\/php-rrd-logparse.tar.gz'>Log Parser unter Nutzung der RRDTool PHP Extension<\/a><\/li>\n<\/ol>\n<p>Nach dem Herunterladen m\u00fcssen alle Teile entpackt werden, wobei die Library und die Beispiel-Anwendung in das gleiche Verzeichnis entpackt werden k\u00f6nnen.<\/p>\n<p>F\u00fcr die Installation der PHP-Extension muss man diese in ein Verzeichnis entpacken und wie folgt vorgehen:<\/p>\n<pre lang=\"bash\">phpize\r\n.\/configure\r\nmake\r\nmake install<\/pre>\n<p>Wichtig ist, dass hierzu die Developement Header von librrd4 installiert sind, da das configure sonst fehlschl\u00e4gt. Die Extension sollte sowohl mit PHP 4.x als auch PHP 5.x (bis 5.3 getestet; 5.4 sollte aber auch gehen) laufen. Bei Problemen einfach fragen.<\/p>\n<p>Nachdem die Extension bei PHP installiert ist, sollte man httplog.php einmalig mit dem Editor \u00f6ffnen und die beiden Arrays am Anfang um die gew\u00fcnschten Domains und Pfade zu den Logfiles erg\u00e4nzen. Das Lesen komprimierter Logfiles ist hierbei wie im Sample gezeigt auch m\u00f6glich. Sollte er mit dem Log-Format nicht zurechtkommen, muss dieses ggf. in der Hauptschleife (siehe den regul\u00e4ren Ausdruck) angepasst werden.<\/p>\n<p>Sollte es Fragen oder Probleme bei der Nutzung der Extension geben, bitte einen kurzen Bugreport an mich; dann schaue ich mir das an. Wer das Script einmal live in Action sehen m\u00f6chte, sollte einen Blick auf die <a href=\"http:\/\/benny-baumann.de\/tmp\/rrdplay\/?d=geshi.org\">Site Stats f\u00fcr geshi.org<\/a> werfen.<\/p>\n<p class=\"wp-flattr-button\"><a href=\"http:\/\/blog.benny-baumann.de\/?flattrss_redirect&amp;id=1192&amp;md5=ec119901e9d000d3b494271f7c6c1dc1\" title=\"Flattr\" target=\"_blank\"><img src=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" srcset=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" alt=\"Flattr this!\"\/><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Wer meinen Blog bereits ein wenig verfolgt hat, wird mitbekommen haben, dass manchmal Graphen auftauchen, die mit RRDTool erzeugt wurden. Nun habe ich ja bereits einmal zu RRDTool etwas geschrieben, aber den von mir geschriebenen Wrapper, sowie den aktuellen Code-Stand (nach angewendetem Patch) hatte ich bisher noch nicht weiter ver\u00f6ffentlicht. Das werde ich hier jetzt [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[29],"tags":[98,21,223,346,348,20],"class_list":["post-1192","post","type-post","status-publish","format-standard","hentry","category-software","tag-developement","tag-php","tag-rrdtool","tag-server","tag-software","tag-update"],"_links":{"self":[{"href":"http:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/1192","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1192"}],"version-history":[{"count":3,"href":"http:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/1192\/revisions"}],"predecessor-version":[{"id":1200,"href":"http:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/1192\/revisions\/1200"}],"wp:attachment":[{"href":"http:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1192"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1192"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1192"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}