I definitely am not a sysadmin, although as a Gentoo developer I have to have some general knowledge of sysadmining, my main work is development, and that’s what I have most of my experience with. On the other hand, I picked up some skills by maintaining the two VPSes (the one where this blog is hosted, and the one hosting xine’s bugzilla — as well as site).
Some of these tricks are related with the difficulties I have reported with using Gentoo as a guest operating system into virtual servers, but a few are totally not related. Let me try to relay some of the tricks I picked up.
The first trick is to use
metalog for logging; while
syslog-ng has some extra features missing in
metalog (like the network logging support), for a single server, the latter is much much easier to set up and deal with. But I find the default configuration a bit difficult do deal with. My first step is then to replace the
everything logging with a
therest logging, by doing something along these lines:
Postgresql : program_regex = "^postmaster" program_regex = "^postgres" logdir = "/var/log/postgres" break = 1 Apache : program_regex = "^httpd" logdir = "/var/log/http" break = 1 The rest of important stuff : facility = "*" minimum = 6 logdir = "/var/log/therest"
break statement? The whole point of it is to not fall back into the entries below in the file, at the end, the
therest block will log everything that does not fall into previous directories. My reason to split these in this way is that I can easily check the logs for
postgresql and at the same time check if there is something I’m not expecting.
metalog drops the requirement for
logrotate for the system logs, it doesn’t stop it to be needed for other log systems; quassel doesn’t log to syslog, nor does Portage, and the Apache access logs are better handled without using syslog to pass them through awstats later. Note: having portage to log to syslog is something I might make good use of; it would break
qlop, but it might be worth it for some setups, like my two VPSes. But even with this limitation,
metalog makes it much easier to deal with the basic logs.
The next step to simplify the management for me has been switching from Paul Vixie’s
fcron. The main reason is that
fcron sounds “modern” compared with Vixie’s, and it has a few very useful features that makes it much easier to deal with:
erroronlymail sends you mail about the cron jobs only if their status report is non-zero (failure) rather than every time if there is output;
random makes it possible to avoid running heavy-handed jobs always at the same time (it makes the system altogether more secure, as an attacker cannot guess that at a given time the system will be having extra-load!), and
lavg options allow you to skip running a series of jobs if the system is busy doing something else.
Oh and another important not for those of you using PostgreSQL; I learnt the hard way the other day that the default logging system of the PGSQL server is to write a
postmaster.log file inside the PostgreSQL data directory. This file does not really need to be rotated as postgres seems to take care of that itself; on the other hand, it makes much more sense to leave the task to the best software: the logger! To fix this up you have to edit the
/var/lib/postgresql/8.4/data/postgresql.conf file (you may have to change 8.4 to the version of PGSQL you’re running), and add the following line:
log_destination = 'syslog'
Thanks to metalog’s buffering and all its features, it should make it much easier on the I/O of the system especially if the load is very very high. Which sometimes happened to be when my blog went hammered.
Okay probably most of this is nothing useful to seasoned sysadmins, but small hints from non-sysadmin are something that gets useful for other non-sysadmin on the job for the same reason.
Nice hints, I haven’t really explored other tools but I will probably explore fcron and metalog for my two VPSs. Thanks for the post.
Ok, now I tried fcron and didn’t like the syntax. Switched back to vixie 🙂