|
| 1 | +HOW TO get Apache to log to PostgreSQL |
| 2 | + |
| 3 | +First, this is intended mostly as a starting point, an example of how to do it. |
| 4 | + |
| 5 | +The file 'httpconf.txt' is commented and contains two example lines to make |
| 6 | +this work, a custom log format, and a line that sends the log data to psql. |
| 7 | +I think that the comments in this file should be sufficient. |
| 8 | + |
| 9 | +The file 'apachelog.sql' is a little SQL to create the table and grant |
| 10 | +permissions to it. |
| 11 | + |
| 12 | +You must: |
| 13 | + |
| 14 | +1. Already have 'nobody' (or what ever your web server runs as) as a valid |
| 15 | + PostgreSQL user. |
| 16 | + |
| 17 | +2. Create the database to hold the log, (example 'createdb www_log') |
| 18 | + |
| 19 | +3. Edit the file 'apachelog.sql' and change the name of the table to what |
| 20 | + ever you used in step 2. ALSO if need be, change the name 'nobody' in |
| 21 | + the grant statement. |
| 22 | + |
| 23 | +4. As an appropriate user (postgres is ok), do 'psql www_log < apachelog.sql'. |
| 24 | + This should have created the table and granted access to it. |
| 25 | + |
| 26 | +5. SAVE A COPY OF YOUR httpd.conf !!! |
| 27 | + |
| 28 | +6. Edit httpd.conf, add the two lines in the example file as appropriate, |
| 29 | + IN THE ORDER IN WHICH THEY APPEAR. This is simple for a single server, |
| 30 | + but a little more complex for virtual hosts, but if you set up virtual |
| 31 | + hosts, then you should know were to put these lines. |
| 32 | + |
| 33 | +7. Down and restart your httpd. I do it on Red Hat 4.1 like this: |
| 34 | + /etc/rc.d/init.d/httpd.init stop |
| 35 | + then |
| 36 | + /etc/rc.d/init.d/httpd.init start |
| 37 | + OR I understand you can send it a signal 16 like 'kill -16 <pid>' and do it. |
| 38 | + |
| 39 | +8. I should be working, query the web server about 30 or more times then look |
| 40 | + in the db and see what you have, if nothing then query the web server |
| 41 | + 30 or 50 more time and then check. If still nothing, look in the server's |
| 42 | + error log to see what is going on. But you should have data. |
| 43 | + |
| 44 | +NOTES: |
| 45 | +The log data is cached some where, and so will not appear INSTANTLY in the |
| 46 | +database! I found that it took around 30 queries of the web server, then |
| 47 | +many rows are written to the db at once. |
| 48 | + |
| 49 | +ALSO, I leave it up to you to create any indexes on the table that you want. |
| 50 | + |
| 51 | +The error log can (*I think*) also be sent to PostgreSQL in the same fashion. |
| 52 | + |
| 53 | +At some point in the future, I will be writing some PHP to interface to this |
| 54 | +and generate statistical type reports, so check my site once and a while if |
| 55 | +you are interested it this. |
| 56 | + |
| 57 | +Terry Mackintosh <terry@terrym.com> |
| 58 | +http://www.terrym.com |
| 59 | + |
| 60 | +Have fun ... and remember, this is mostly just intended as a stating point, |
| 61 | +not as a finished idea. |
0 commit comments