Egy félresikerült frissítés, avagy a Syslog-ng megint tüsszög

Syslog logó

Tegnapelőtt óvatlanul frissítettem a Syslog-ng-t 3.1.2-ről 3.1.3-ra. A művelet látszólag minden probléma nélkül lezajlott, a program fut, a naplók tiszták, mindenki boldog.

Vagyis majdnem. A mai rutinellenőrzés alkalmával kiderült, hogy a Syslog-ng teljes gőzzel tekeri az egyik CPU magot (micsoda szerencse, hogy nem skálázódik több magra :)), közben az adatbázis naplózás egy ideje megállt.

A fájlba naplózást bekapcsolva kiderül, hogy nem tud kapcsolódni a Postgresql-hez, csak „Connection refused” üzenetet kap. Mivel a Google egy kisebb méretű DOS után se hajlandó elmondani, hogy miért is műveli ezt a Syslog-ng, úgyhogy ideje egy kicsit másképp gondolkozni.

Mint az a Gentoo ebuildből kiderült, a syslog-ng a libdbi-n keresztül éri el az adatbázist. Jött tehát az ötlet, hogy nézzük meg a 0.8.3-es helyett a 0.8.3-r2-es libdbi-drivers-en keresztül mit szól a dologhoz. Nos, nem talált, ugyanezt. Semmi baj, fordítsunk újra mindent, libdbi-drivers, libdbi, syslog-ng. Az újrafordítás után ugyanez a probléma.

Postgresql logó

Egy kis szöszölés után, gondoltam egyet és megnéztem a telepített Postgresql összetevőket. Meglepő módon, a 8.4-es libek (postgresql-base) is telepítve voltak a 9-es mellett. Ezt leszedve, a 9-est, libdbi, libdbi-drivers és biztos, ami biztos alapon a syslog-ng-t újrafordítva biztatónak tűnik. Egy revdep-rebuild után, szerencsém volt, és semmi sem ragaszkodott a 8-as könyvtárakhoz.

Aki azt hiszi, hogy itt a mese vége, az téved. Elindítva a syslog-ng-t, a következő üzenetet kapom: Error establishing SQL connection; type='pgsql', *blabla*, error='invalid port number: "0"\x0a'

Ahá, tehát nem jó a port. Eddig jó volt. Egy hirtelen ötlettől vezérelve kiegészítettem a syslog-ng.conf-ban a kapcsolódási adatokat tartalmazó sort port=(”5432”) opcióval és reménykedtem hogy jó lesz. Jó lett :)

Az Ubuntu szerver rendszergazdák ezt a kis bajlódást valószínűleg meg sem élik, hiszen ott a csomag karbantartója figyel a dolgokra. Egyedül a syslog-ng megváltozott beállítása tehet keresztbe.

Tehát a művelet „rizsa” nélkül:
1) postgresql-base verzió lecsekkol, ha nem 9-es frissítsd, a régit pedig távolítsd el.
2) revdep-rebuild
3) libdbi, libdbi-drivers, syslog-ng újrafordít
4) syslog-ng.conf host sora így nézzen ki:
host("hoszt") username("usernev")password("jelszo") port("5432")
5) Syslog-ng újraindít, örül :)