Archiv

Archiv für Januar, 2008

Lighttpd: mod_status patch

8. Januar 2008 Keine Kommentare
GD Star Rating
loading...

Wer mittels Munin den Lighty tracken will, wird feststellen, dass es im gegensatz zum Apache-Status keine Anzeige der Idle-Servers gibt.

Aus diesem Grund habe ich mal fix einen Patch für die Version 1.5.0 geschrieben, der die Ausgabe der ?auto Page um die Anzeige von “IdleServers” und “Scoreboard” ergänzt.

CODE:

--- src/mod_status.c        2008-01-08 00:00:00.000000000 +0100
+++ src/mod_status.c    2008-01-08 00:00:00.000000000 +0100
@@ -569,6 +569,8 @@
        double avg;
        time_t ts;
        size_t j;
+       unsigned int k;
+       unsigned int l;

        b = chunkqueue_get_append_buffer(con->send);

@@ -595,6 +597,11 @@
        buffer_append_long(b, srv->conns->used);
        BUFFER_APPEND_STRING_CONST(b, "\n");

+       /* output idle servers */
+        BUFFER_APPEND_STRING_CONST(b, "IdleServers: ");
+        buffer_append_long(b, srv->conns->size - srv->conns->used);
+        BUFFER_APPEND_STRING_CONST(b, "\n");
+
        /* output traffic */
        BUFFER_APPEND_STRING_CONST(b, "Traffic: ");
        avg = p->abs_traffic_out / (srv->cur_ts - srv->startup_ts);
@@ -610,6 +617,18 @@
        buffer_append_long(b, avg);
        BUFFER_APPEND_STRING_CONST(b, "\n");

+       /* output scoreboard */
+        BUFFER_APPEND_STRING_CONST(b, "Scoreboard: ");
+        for (k = 0; k < srv->conns->used; k++) {
+               connection *c = srv->conns->ptr[k];
+               const char *state = connection_get_short_state(c->state);
+               buffer_append_string_len(b, state, 1);
+        }
+        for (l = 0; l < srv->conns->size - srv->conns->used; l++) {
+               BUFFER_APPEND_STRING_CONST(b, "_");
+        }
+        BUFFER_APPEND_STRING_CONST(b, "\n");
+
        /* set text/plain output */

        response_header_overwrite(srv, con, CONST_STR_LEN("Content-Type"), CONST_STR_LEN("text/plain"));

Anleitung:

cd lighttpd-1.5.0
wget http://trac.lighttpd.net/trac/attachment/ticket/1507/mod_status.1.5.patch?format=raw
patch -p0 < mod_status.patch
make distclean
./configure
make
make install

[UPDATE]
Der Patch wurde im Changelog 2045 bzw. 2046 ins nächste Lighttpd Release aufgenommen.

KategorienTechnik & Entwicklung Tags: