No puedo hacer que logstash funcione con el script advenedizo

No puedo hacer que logstash funcione con el script advenedizo

Instalé logstash en mi servidor sin cabeza, pero tengo algunos problemas para que funcione desde el script inicial con sudo service logstash start. Este es el resultado que obtengo /var/log/logstash/logstash.log.aquípero no puedo ver nada obvio allí.

siendo el script de inicio (/etc/init/logstash.conf) # logstash - instancia del 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

Con el archivo de configuración logstash siendo:

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 suceder, aunque definitivamente están sucediendo cosas en el registro de Apache.

Sin embargo, cuando saco las cosas interesantes del script inicial (las cosas entre scripty end scripty lo ejecuto como un script de shell), funciona perfectamente y puedo ver cosas que entran en los registros. ¿Alguien puede darme algunas sugerencias sobre por qué sucede esto? ¿Está sucediendo? Estoy ejecutando el servidor Ubuntu 14.04 y lo instalé.logstash=1.4.2-1-2c0f5a1

Respuesta1

Entonces supongo que esta puede ser una respuesta ahora. Parece que sus pruebas se ejecutaron como rootusuario. y su servicio se está ejecutando como logstash. Sus registros de pruebas no muestran ningún error. Pero creo que tu problema está en los permisos de los archivos. Verifique que los archivos de configuración sean legibles para el usuario logstashy que los archivos de registro puedan escribirse para él. Además, dado que ese proceso debería poder leer los archivos de registro de Apache directamente, verifique si logstashtambién puede leerlos. Si logstash está configurado para escuchar conexiones de red entrantes, la verificación de los puertos configurados es superior a 1024.

También puedes intentar ejecutar tus pruebas como logstashusuario:

algo como eso:

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

información relacionada