MySQL Server Monitor

Door AtleX op woensdag 23 april 2008 20:01 - Reacties (18)
Categorieën: Development & code, Tools, Views: 5.925

Mijn vorige blogpost, over mijn nieuwe project, was onverwacht populair. Veel mensen plaatsten een reactie met als inhoud "hé, da's handig" of iets van die strekking. Daaruit bleek wel dat er meer vraag dan verwacht naar MSM was.

Vanaf het begin is het mijn bedoeling geweest om MySQL Server Monitor (MSM) onder een open source licentie uit te brengen. Ik ben een groot fan open source software en het hele idee erachter, en van een aantal van mijn tools & scripts is de source zo te downloaden. Ook heb ik bijgedragen aan verschillende open source software projecten. De keuze voor een licentie was snel gemaakt, ik wilde de gebruikers zo min mogelijk belemmeren en dus was de GPL een logische keuze. Het maakt wel de licentie situatie van MSM wat complex, want Atlib (mijn PHP library) en Smarty vallen allebei weer onder de LGPL. :P

Gisteren werd mijn aanvraag op Sourceforge goedgekeurd, en meteen heb ik een SVN repository ingericht. Deze is, zoals alle SVN repo's bij Sourceforge, publiek toegankelijk dus mensen die graag op het randje leven kunnen hier elke keer de nieuwste versie vandaan halen. :) Ook heb ik gisteren versie 0.1b1 gereleased. Eigenlijk om alvast een eerste release te hebben, maar de hoeveelheid downloads zijn wat mij betreft een goede aansporing om er nog wat tijd in te steken:
http://tweakers.net/ext/f/dwjnr4oUxGxIXajD4dDVk60k/thumb.png
Zelfs zonder reclame te maken mag ik toch al 217 downloads noteren, binnen een dag. :) Daarom kondigde ik vanmorgen al aan (news item op magische wijze verdwenen bij Sourceforge :S) dat ik vandaag versie 0.1b2 wilde releasen met wat nieuwe features.

Gisterenavond laat bedacht ik me namelijk nog een gigantische security issue. :X MSM heeft namelijk geen ingebouwde user authentication. Standaard staat de boel gewoon open en als mensen het willen beveiligen kunnen ze .htaccess/.htpasswd beveiliging gebruiken. Bij een open installatie die meerdere servers monitort kan er via een vrij eenvoudige DDOS op MSM ook de MySQL servers aangevallen worden. Zo kunnen er via 1 punt meerdere servers bestookt worden, en dat is natuurlijk niet de bedoeling.

De oplossing is gelukkig simpel, doordat MSM gebruikt maakt van Smarty voor de templates is er meteen een caching mechanisme beschikbaar. Smarty beschikt namelijk over de mogelijkheid om pagina's te cachen met een instelbare levensduur. Daarom heb ik in MSM's configuratiebestand, non-www/config.xml, 2 opties toegevoegd. 1 Om caching in of uit te schakelen en 1 voor de levensduur. Standaard staat caching aan met een lifetime van 5 seconden. Near real-time information is waarschijnlijk ook goed genoeg voor de gebruikers, en anders kunnen ze caching uitschakelen. :)

Een 2e nieuwe gave feature is MSM_connector. Dit is een eenvoudige kleine tool van zo'n 40KB groot die op een webserver geïnstalleerd kan worden om MSM zo toegang te geven tot de achterliggende MySQL server. Er zijn namelijk veel server beheerders die geen toegang tot MySQL toestaan vanaf het grote boze internet. MSM_connector kan geïnstalleerd worden op deze servers om dan via XML de status informatie van die MySQL server door te geven aan MSM. Om maximaal compatible te zijn met hosting platformen is MSM_connector geschreven in PHP4 en draait het op elke server met PHP 4.3.0 of hoger.

Vanzelfsprekend heb ik ook wat kleine bugjes opgelost. Ze meesten zijn de moeite van het vermelden niet waard, maar eentje wel. Al die mensen die MSM 0.1 beta 1 gedownload hebben zullen verkeerde uptime informatie zien bij het gebruik van de meegeleverd Winter en Dolphin thema's. :X Ik gebruikte namelijk een nogal verkeerde berekening om de uptime in seconden om te rekenen die fout ging als de MySQL server een uptime van meer dan 24 uur had.

Je zag dan namelijk het totaal aantal uren dat de server aanstond, bijvoorbeeld "105 days, 2531 hours, 46 minutes". Dat kwam omdat ik de uptime in seconden slechts deelde door 3600:

code:
1
{$currentServer->Status->Uptime/3600|floor}


Tsja, dan krijg je inderdaad het aantal uren, maar dat houd niet netjes rekening met het aantal dagen. :+ Gelukkig was het heel makkelijk op te lossen:

code:
1
{$currentServer->Status->Uptime%86400/3600|floor}


Problem solved. :Y)

Voor volgende releases heb ik nog niet veel grote plannen. Ik wil er minimaal nog een extra template bij maken, en de documentatie moet onderhand ook op poten gezet worden. Graag hoor ik natuurlijk ook jullie ideeën, jullie zullen waarschijnlijk heel wat gavere ideeën hebben dan mij. :)

Volgende: RSS feeds voor tweakers.mobi (3) 04-'08 RSS feeds voor tweakers.mobi (3)
Volgende: Nieuw hobbyproject 04-'08 Nieuw hobbyproject

Reacties


Door Tweakers user Boss, woensdag 23 april 2008 20:15

Hey, ziet er mooi uit. Ik gebruik zelf geen MySQL, maar kan me voorstellen dat een heleboel mensen hier erg blij van worden. Succes met de ontwikkeling verder!

Door Tweakers user Snake, woensdag 23 april 2008 20:15

Dat doet gij zeer mooi ;) Ik ga er zeker eens naar kijken :)

Door Tweakers user Aapje, woensdag 23 april 2008 21:29

Iets met wiel opnieuw uitvinden :+
http://www.webyog.com/en/screenshots_monyog.php
Ziet erwel gaaf uit hoor Atlex :*

Door Tweakers user AndriesLouw, woensdag 23 april 2008 21:30

Zo, gelijk eventjes "installeren" ;)

Door Tweakers user AndriesLouw, woensdag 23 april 2008 22:13

Sorry, dubbelpost, maar eventjes melden dat het prachtig werkt! Vooral de MSM_Connector is een welkome aanvulling i.v.m. security!

Door Tweakers user Roelant, woensdag 23 april 2008 23:01

Je progt ook maar een end raak he? D'r is geen houwen aan. :P

Door Tweakers user chrashoverraid, woensdag 23 april 2008 23:40

Ik hoop dat ik morgen ff tijd heb om het te proberen! Het ziet er in iedergeval veel belovend uit!

Door Tweakers user Goegol, woensdag 23 april 2008 23:59

Ziet er gaaf uit!!

Heb zelf wat sql servers draaien, zal het morgen proberen!!

Ga zo door!!

Door Tweakers user KompjoeFriek, woensdag 23 april 2008 23:59

Ziet er grappig uit AtleX, werkt ook nog eens lekker simpel :Y)

Enne Aapje, dat waar jij naar linkt is niet erg gratis. Hoewel het een goede bron voor inspiratie is ;)

Door Tweakers user Erkens, donderdag 24 april 2008 08:11

Leuk projectje. Heb het ook maar meteen even geinstalleerd. Nog wel even een vraagje (voor ik zelf de code induik) is het ook mogelijk om te connecten op een unix socket aangezien ik een server heb die geen TCP poort heeft geconfigureerd.

Door Tweakers user Erkens, donderdag 24 april 2008 08:33

Hmm, kan niet editen bij een blogpost...

Anyway, je hebt sowieso een bug in je MySqlDbConnection class zitten op regel 99 staat dit:


PHP:
1
$this->Con = mysql_connect($server, $username, $password, $port);



Volgens de php manual moet je niet op deze manier de poort opgeven, dit moet namelijk onderdeel zijn van $server. Zodra je dit goed doet zal je ook met sockets kunnen werken door de socket path als poort op te geven :)

Wat je nu doet is altijd een new_link maken met je connectie (aangezien $port nooit 0 is).

Door Tweakers user AtleX, donderdag 24 april 2008 09:12

Erkens: weet ik, dat zag ik gisterenavond ook toen ik probeerde te verbinden met een server die op een andere poort luistert. Ik zal dat ASAP fixen. :) Iig bedankt.


edit:

Fix0red, in de SVN. :)

[Reactie gewijzigd op donderdag 24 april 2008 09:21]


Door HackZois, donderdag 24 april 2008 10:37

Ik heb je vorige blogpost gelezen en raakte toen al geinteresseerd, maar nu ik de connector zie, wordt ik echt enthousiast. Ik ga dit vanavond eens proberen...

Door Tweakers user RoadRunner84, donderdag 24 april 2008 12:04

Een kleine opmerking, bij veel *NIX programma's zijn configuratieparameters zoals lifetime in een enkele variabele gevat. Dus in plaats van caching aan/uit en een lifetime zou ik een lifetime van 0 beschouwen als no caching.
verder heel gaaf project, die MSM_connector is ook een hele zinnige en mooie uitrbreiding.
Ga zo door!

Door Tweakers user AndriesLouw, zondag 27 april 2008 18:34

Bugje: Op bytes verzonden/ontvangen door MySQL server zit schijnbaar een "tel-limiet" van 2048 MB ? ( http://weserv.nl/msm/ -> Bij Server 1 is er bijvoorbeeld 2239 MB verzonden volgens phpMyAdmin, maar er staat 2048)

Waar kan ik die limiet vinden, en uitschakelen?

Door Tweakers user AndriesLouw, zondag 27 april 2008 18:59

Oh, ik heb trouwens je Winter template wel iets aangepast, zoals je ziet. De template is gewoon te downloaden door onderaan http://weserv.nl/msm/ op "Winter" te klikken.

Door Tweakers user AtleX, zondag 27 april 2008 19:51

AndriesLouw: PHP's integer type is een 32bits signed integer. Ik cast die values allemaal naar int's omdat Smarty er anders niet mee kan rekenen. Als je dat eruit wilt slopen kan je in non-www/classes/serverstatus.php de casts weghalen. :)

[edit]
Of even de laatste SVN binnenhalen, daarin is het ook gefixt als het goed is.

[Reactie gewijzigd op zondag 27 april 2008 20:17]


Door Tweakers user AndriesLouw, zondag 27 april 2008 20:24

Mooi! Het is nu inderdaad opgelost, bedankt!

Reageren is niet meer mogelijk