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"
See that 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 cron
or postgresql
and at the same time check if there is something I’m not expecting.
While using 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 cron
to 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.