Sintaxe para registros de verniz de tubulação para rotatelogs

3

Ubuntu 12.04 Server x64, verniz 3.0.2

Estou tentando canalizar os logs do varnishncsa através dos rotatelogs do Apache e, a partir do shell, as coisas funcionam bem:

sudo varnishncsa -a -P /var/run/varnishncsa/varnishncsa.pid |/usr/sbin/rotatelogs /var/log/varnish/varnish.log.%Y%m%d%H 3600

cria um novo arquivo de log em / var / log / verniz, com rotação a cada hora (3600 segundos). No entanto, estou com dificuldades para fazer as coisas funcionarem da mesma maneira em /etc/init.d/varnishncsa:

PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/$NAME
PIDFILE=/var/run/$NAME/$NAME.pid
LOGFILE=/var/log/varnish/varnishncsa.log
USER=varnishlog

DAEMON_OPTS="-a -P ${PIDFILE}"
DAEMON_PIPE="|/usr/sbin/rotatelogs /var/log/varnish/varnish.log.%Y%m%d%H 3600"

...

start_varnishncsa() {
    output=$(/bin/tempfile -s.varnish)
    log_daemon_msg "Starting $DESC" "$NAME"
    create_pid_directory
    if start-stop-daemon --start --verbose --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
}

Onde devo colocar DAEMON_PIPE no código acima? Eu tentei no final de:

if start-stop-daemon --start --verbose --pidfile ${PIDFILE}

que é onde os parâmetros de linha de comando adicionais geralmente vão, mas não está criando um arquivo de log.

    
por jetboy 25.06.2012 / 23:41

1 resposta

1

Você pode modificar o /etc/init.d/varnishncsa da seguinte maneira:

PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/$NAME
PIDFILE=/var/run/$NAME/$NAME.pid
LOGFILE=/var/log/varnish/varnishncsa.log
USER=varnishlog
DAEMON_OPTS="-a -P $PIDFILE"

...

start_varnishncsa() {
    output=$(/bin/tempfile -s.varnish)
    log_daemon_msg "Starting $DESC" "$NAME"
    create_pid_directory
    if start-stop-daemon --start --quiet --pidfile ${PIDFILE} \
        --chuid $USER -b --exec /bin/bash \
        -- -c "${DAEMON} ${DAEMON_OPTS} \
               | /usr/sbin/rotatelogs /var/log/varnish/varnish.log.%Y%m%d%H 3600" \
        > ${output} 2>&1; then
    log_end_msg 0
    else
    log_end_msg 1
    cat $output
    exit 1
    fi
    rm $output
}

Isso acontece: start-stop-daemon gera um bash, que executa varnishlog com logging para stdout e pipes de saída através de rotatelogs. O parâmetro -b permite que o daemon start-stop desanexe o processo iniciado para o segundo plano. A desvantagem é que o daemon start-stop não pode mais detectar se o comando é executado com sucesso.

    
por 26.06.2012 / 22:48