Não é possível fazer o logstash funcionar com o script inicial

Não é possível fazer o logstash funcionar com o script inicial

Instalei o logstash em meu servidor headless, mas estou tendo alguns problemas para fazê-lo funcionar a partir do script inicial com sudo service logstash start. Esta é a saída que obtenho /var/log/logstash/logstash.logéaquimas não consigo ver nada óbvio aí.

com o script inicial sendo (/etc/init/logstash.conf) # logstash - instância do agente #

description     "logstash agent"

start on virtual-filesystems
stop on runlevel [06]

# Respawn it if the process exits
respawn

# We're setting high here, we'll re-limit below.
limit nofile 65550 65550

setuid logstash
setgid logstash

# You need to chdir somewhere writable because logstash needs to unpack a few
# temporary files on startup.
console log
script
  # Defaults
  PATH=/bin:/usr/bin
  LS_HOME=/var/lib/logstash
  LS_HEAP_SIZE="500m"
  LS_JAVA_OPTS="-Djava.io.tmpdir=${LS_HOME}"
  LS_LOG_FILE=/var/log/logstash/logstash.log
  LS_USE_GC_LOGGING=""
  LS_CONF_DIR=/etc/logstash/conf.d
  LS_OPEN_FILES=16384
  LS_NICE=19
  LS_OPTS="--debug"

  # Override our defaults with user defaults:
  [ -f /etc/default/logstash ] && . /etc/default/logstash

  HOME="${HOME:-$LS_HOME}"
  JAVA_OPTS="${LS_JAVA_OPTS}"
  # Reset filehandle limit
  ulimit -n ${LS_OPEN_FILES}
  cd "${LS_HOME}"

  # Export variables
  export PATH HOME JAVA_OPTS LS_HEAP_SIZE LS_JAVA_OPTS LS_USE_GC_LOGGING
  test -n "${JAVACMD}" && export JAVACMD

  exec nice -n ${LS_NICE} /opt/logstash/bin/logstash agent -f "${LS_CONF_DIR}" -l "${LS_LOG_FILE}" ${LS_OPTS}
end script

Com o arquivo logstash conf sendo:

input {
  file {
    path => "/var/log/apache2/access.log"
  }
}

filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
  date {
  match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}

output {
  elasticsearch {
    host => localhost
  }
  stdout { codec => rubydebug }
}

Nada parece acontecer, embora definitivamente haja coisas acontecendo no log do Apache.

No entanto, quando retiro as coisas interessantes do script inicial (as coisas entre o scripte end scripte o executo como um script de shell, ele funciona perfeitamente e posso ver coisas entrando nos logs. Alguém pode me dar algumas dicas sobre por que isso é acontecendo? Estou executando o servidor Ubuntu 14.04 e instaladologstash=1.4.2-1-2c0f5a1

Responder1

Então suponho que isso possa ser uma resposta agora. Parece que seus testes foram executados como rootusuário. e seu serviço está sendo executado como logstash. Seus logs de testes não mostram erros. Mas acho que seu problema está nas permissões de arquivo. Por favor, verifique se os arquivos de configuração podem ser lidos pelo usuário logstashe se os arquivos de log podem ser gravados por ele. Além disso, como esse processo deve ser capaz de ler os arquivos de log do Apache diretamente, verifique se logstashtambém deve lê-los. Se o logstash estiver configurado para escutar conexões de rede de entrada, a verificação das portas configuradas é superior a 1024.

Além disso, você pode tentar executar seus testes como logstashusuário:

algo parecido:

su -c "/path/to/logstash -t -f /path/to/config" logstash

informação relacionada