Faidon has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/78782


Change subject: (WIP) Initial Debian version
......................................................................

(WIP) Initial Debian version

These things still need work:
  - The varnishkafka.conf shipped by the package. The intention is to be
    a varnishncsa drop-in replacement, i.e. write to stdout, not kafka.
    I've changed a few of the settings but haven't tested the output at
    all.
  - The init script; it's currently just varnishncsa's script with
    s/ncsa/kafka/
  - We need a better d/control description, the current one was written
    just as a placeholder. We also need a README.md & a manpage.
  - This needs to be built after I2eac5 gets merged. It doesn't
    strictly need it but it'd be wrong to ship a statically linked
    binary.
  - This really need to be built against a tagged version instead of
    just master; d/gbp.conf should be adjusted accordingly
    (upstream-tree=tag)

Change-Id: Ib53267d85e7a638d34b8660557b3c62638abdd54
---
M .gitignore
A debian/changelog
A debian/compat
A debian/control
A debian/copyright
A debian/gbp.conf
A debian/rules
A debian/source/format
A debian/varnishkafka.conf
A debian/varnishkafka.default
A debian/varnishkafka.init
A debian/varnishkafka.install
A debian/varnishkafka.logrotate
13 files changed, 343 insertions(+), 0 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/operations/software/varnish/varnishkafka 
refs/changes/82/78782/1

diff --git a/.gitignore b/.gitignore
index 7edc56e..94bc924 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
 varnishkafka
 *~
 .emacs*
+.pc
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..6b5a383
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,5 @@
+varnishkafka (0~20130628-1) unstable; urgency=low
+
+  * Initial release.
+
+ -- Faidon Liambotis <[email protected]>  Wed, 07 Aug 2013 19:55:39 +0300
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+9
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..03a4470
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,19 @@
+Source: varnishkafka
+Priority: optional
+Maintainer: Faidon Liambotis <[email protected]>
+Build-Depends: debhelper (>= 9), libvarnishapi-dev, librdkafka-dev
+Standards-Version: 3.9.4
+Section: web
+
+Package: varnishkafka
+Architecture: any
+Depends: varnish, ${shlibs:Depends}, ${misc:Depends}
+Enhances: varnish
+Description: Varnish to Kafka log streamer
+ varnishkafka reads Varnish shared memory logs, formats them and prints them to
+ standard output or streams them to Kafka brokers, using the Apache Kafka
+ protocol. It can format the logs into either an Apache/NCSA "combined" log
+ format or any other custom log format.
+ .
+ varnishkafka is similar to varnishncsa, as shipped by the Varnish source,
+ although it has more features and was written with high performance in mind.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..52a6cbb
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,45 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: varnishkafka
+Source: https://github.com/wikimedia/varnishkafka
+
+License: BSD-2-clause
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+  .
+  1. Redistributions of source code must retain the above copyright notice,
+     this list of conditions and the following disclaimer.
+  2. Redistributions in binary form must reproduce the above copyright notice,
+     this list of conditions and the following disclaimer in the documentation
+     and/or other materials provided with the distribution.
+  .
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.
+
+Files: *
+Copyright: 2013 Wikimedia Foundation, Inc.
+           2013 Magnus Edenhill
+License: BSD-2-clause
+
+Files: base64.c
+License: public-domain
+  The file header indicates that it was placed into the public domain by its
+  author, Poul-Henning Kamp <[email protected]>
+
+Files: base64.h
+Copyright: 2006 Verdens Gang AS
+           2006-2011 Varnish Software AS
+License: BSD-2-clause
+
+Files: debian/*
+Copyright: 2013 Faidon Liambotis <[email protected]>
+           2013 Wikimedia Foundation, Inc.
+License: BSD-2-clause
diff --git a/debian/gbp.conf b/debian/gbp.conf
new file mode 100644
index 0000000..bda89b2
--- /dev/null
+++ b/debian/gbp.conf
@@ -0,0 +1,7 @@
+[git-buildpackage]
+upstream-tree=branch
+upstream-branch=master
+debian-branch=debian
+#no-create-orig = True
+tarball-dir = ../tarballs
+export-dir = ../build-area
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..17260a4
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,15 @@
+#!/usr/bin/make -f
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# FIXME
+export VER=1
+
+%:
+       dh $@
+
+override_dh_auto_install:
+       # don't run "make install", use debian/*.install instead
+
+.PHONY: override_dh_auto_install
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..163aaf8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/varnishkafka.conf b/debian/varnishkafka.conf
new file mode 100644
index 0000000..8918eba
--- /dev/null
+++ b/debian/varnishkafka.conf
@@ -0,0 +1,121 @@
+######################################################################
+#                                                                   #
+#              varnishkafka configuration file                      #
+#                                                                   #
+#                                                                   #
+######################################################################
+#                                                                   #
+# Format:                                                           #
+# <property-name> = <value>                                         #
+#                                                                   #
+# boolean properties:                                               #
+#   >0, "true", "yes", "on" - interpreted as true                   #
+#  everything else          - interpreted as false                  #
+#                                                                   #
+######################################################################
+
+# Where to output varnish log lines:
+#  kafka  - (default) send to kafka broker
+#  stdout - just print to stdout (behave like varnishncsa)
+output = stdout
+
+# Varnish log formatting
+format = %l    %n      %t      %{Varnish:time_firstbyte}x      %h      
%{Varnish:handling}x/%s %b      %m      http://%{Host}i%U%q     -       
%{Content-Type}o        %{Referer}i     %{X-Forwarded-For}i     %{User-agent}i  
%{Accept-Language}i
+
+# Start for sequence number (%n)
+# Either a number, or the string "time" which will set it to the current
+# unix time in seconds multiplied by 1,000,000.
+# Defaults to 0.
+sequence.number = time
+
+#
+# varnishkafka log messages configuration
+# Debugging, error reporting, etc, not to be confused with varnish logs.
+#
+
+# varnishkafka log level (1 = emergencies .. 7 = debug)
+log.level = 6
+
+# specify log output
+log.stderr = false
+log.syslog = true
+
+# daemonize varnishkafka (boolean)
+daemonize = true
+
+######################################################################
+#                                                                   #
+# Standard varnish VSL command line arguments                       #
+#                                                                   #
+# Format:                                                            #
+#  varnish.arg.<c> = <value>, where <c> is a command line option.    #
+#                                                                   #
+# See varnishncsa(1) and varnishlog(1) for valid options.           #
+#                                                                   #
+######################################################################
+
+# -m tag:regex
+varnish.arg.m = RxRequest:^(?!PURGE$)
+
+# Examples:
+# -C: ignore case when matching regex
+# Non-value arguments need a dummy value to pass parsing, such as 'true'.
+#varnish.arg.C = true
+
+# -n: varnishd instance to get logs from.
+#varnish.arg.n = frontend
+
+
+######################################################################
+#                                                                   #
+# Kafka configuration                                                #
+#                                                                   #
+# For the full range of Kafka handle and topic configuration         #
+# properties, see:                                                  #
+#  https://github.com/edenhill/librdkafka/blob/0.8-wip/rdkafka.h     #
+#                                                                   #
+# And the Apache Kafka configuration reference:                             #
+#  http://kafka.apache.org/08/configuration.html                     #
+#                                                                   #
+######################################################################
+
+# Initial list of kafka brokers
+metadata.broker.list = localhost:9091
+
+# Maximum number of messages allowed on the local producer queue
+queue.buffering.max.messages = 1000000
+
+# Maximum number of retries per messageset.
+message.send.max.retries = 3
+
+
+#
+# Topic configuration
+#
+
+# Topic to produce messages to
+topic = varnish
+
+# Partition (-1: random, else one of the available partitions)
+partition = -1
+
+
+# Required number of acks
+topic.request.required.acks = 1
+
+# Local message timeout (milliseconds)
+topic.message.timeout.ms = 60000
+
+
+#
+# Builtin partitioners (Future. Not implemented)
+#
+
+# partition on user name
+#partitioner = crc32(%u)
+
+# partition on client IP
+#partitioner = iphash(%{X-Forwarded-For}i)
+
+
+
diff --git a/debian/varnishkafka.default b/debian/varnishkafka.default
new file mode 100644
index 0000000..54d7a5c
--- /dev/null
+++ b/debian/varnishkafka.default
@@ -0,0 +1,6 @@
+# Configuration file for varnishkafka
+#
+# This shell script fragment is sourced by /etc/init.d/varnishkafka
+#
+# VARNISHKAFKA_ENABLED=1
+# DAEMON_OPTS="-a -w ${LOGFILE} -D -P ${PIDFILE}"
diff --git a/debian/varnishkafka.init b/debian/varnishkafka.init
new file mode 100644
index 0000000..2a340d3
--- /dev/null
+++ b/debian/varnishkafka.init
@@ -0,0 +1,107 @@
+#! /bin/sh
+
+### BEGIN INIT INFO
+# Provides:          varnishkafka
+# Required-Start:    $local_fs $remote_fs $network
+# Required-Stop:     $local_fs $remote_fs $network
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Varnish to Kafka logging daemon
+# Description:       Varnish to Kafka logging daemon
+### END INIT INFO
+
+# Source function library
+. /lib/lsb/init-functions
+
+NAME=varnishkafka
+DESC="HTTP accelerator log deamon"
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/bin/$NAME
+PIDFILE=/var/run/$NAME/$NAME.pid
+LOGFILE=/var/log/varnish/varnishkafka.log
+USER=varnishlog
+DAEMON_OPTS="-a -w ${LOGFILE} -D -P ${PIDFILE}"
+
+# Include defaults if available
+if [ -f /etc/default/$NAME ] ; then
+        . /etc/default/$NAME
+fi
+
+# If unset, or set to "0" or "no", exit
+if [ -z "${VARNISHKAFKA_ENABLED}" ] || \
+   [ "${VARNISHKAFKA_ENABLED}" = "0" ] || \
+   [ "${VARNISHKAFKA_ENABLED}" = "no" ]; then
+  exit 0;
+fi
+
+test -x $DAEMON || exit 0
+
+start_varnishkafka() {
+    output=$(/bin/tempfile -s.varnish)
+    log_daemon_msg "Starting $DESC" "$NAME"
+    create_pid_directory
+    if start-stop-daemon --start --quiet --pidfile ${PIDFILE} \
+        --chuid $USER --exec ${DAEMON} -- ${DAEMON_OPTS} \
+        > ${output} 2>&1; then
+       log_end_msg 0
+    else
+       log_end_msg 1
+       cat $output
+       exit 1
+    fi
+    rm $output
+}
+
+stop_varnishkafka(){
+    log_daemon_msg "Stopping $DESC" "$NAME"
+    if start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+        --retry 10 --exec $DAEMON; then
+       log_end_msg 0
+    else
+       log_end_msg 1
+    fi
+}
+
+reload_varnishkafka(){
+    log_daemon_msg "Reloading $DESC" "$NAME"
+    if kill -HUP $(cat $PIDFILE) >/dev/null 2>&1; then
+       log_end_msg 0
+    else
+       log_end_msg 1
+       exit 1
+    fi
+}
+
+status_varnishkafka(){
+    status_of_proc -p "${PIDFILE}" "${DAEMON}" "${NAME}"
+    exit $?
+}
+
+create_pid_directory() {
+    install -o $USER -g $USER -d $(dirname $PIDFILE)
+}
+
+case "$1" in
+    start)
+        start_varnishkafka
+       ;;
+    stop)
+        stop_varnishkafka
+        ;;
+    reload)
+        reload_varnishkafka
+        ;;
+    status)
+        status_varnishkafka
+       ;;
+    restart|force-reload)
+       $0 stop
+       $0 start
+        ;;
+    *)
+        log_success_msg "Usage: $0 {start|stop|restart|force-reload|reload}"
+        exit 1
+        ;;
+esac
+
+exit 0
diff --git a/debian/varnishkafka.install b/debian/varnishkafka.install
new file mode 100644
index 0000000..9cc0579
--- /dev/null
+++ b/debian/varnishkafka.install
@@ -0,0 +1,2 @@
+varnishkafka                   usr/bin
+debian/varnishkafka.conf       etc/
diff --git a/debian/varnishkafka.logrotate b/debian/varnishkafka.logrotate
new file mode 100644
index 0000000..8f3ea54
--- /dev/null
+++ b/debian/varnishkafka.logrotate
@@ -0,0 +1,13 @@
+/var/log/varnish/varnishkafka.log {
+  daily
+  rotate 7
+  missingok
+  compress
+  delaycompress
+  missingok
+  postrotate
+    if /usr/bin/pgrep -P 1 varnishkafka >/dev/null; then
+      /usr/sbin/invoke-rc.d varnishkafka reload > /dev/null
+    fi
+  endscript
+}

-- 
To view, visit https://gerrit.wikimedia.org/r/78782
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib53267d85e7a638d34b8660557b3c62638abdd54
Gerrit-PatchSet: 1
Gerrit-Project: operations/software/varnish/varnishkafka
Gerrit-Branch: debian
Gerrit-Owner: Faidon <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to