Logstash funktioniert nicht mit Upstart-Skript

Logstash funktioniert nicht mit Upstart-Skript

Ich habe Logstash auf meinem Headless-Server installiert, aber ich habe ein paar Probleme, es vom Upstart-Skript aus zum Laufen zu bringen sudo service logstash start. Dies ist die Ausgabe, die ich bekomme /var/log/logstash/logstash.log.Hieraber ich kann da nichts Auffälliges erkennen.

wobei das Upstart-Skript (/etc/init/logstash.conf) ist # logstash - Agenteninstanz #

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

Die Logstash-Konfigurationsdatei lautet:

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 }
}

Es scheint, als ob nichts passiert, obwohl im Apache-Protokoll definitiv etwas passiert.

Wenn ich jedoch die interessanten Dinge aus dem Upstart-Skript entferne (die Dinge zwischen scriptund) end scriptund es als Shell-Skript ausführe, funktioniert es perfekt und ich kann sehen, wie Dinge in die Protokolle kommen. Kann mir jemand Hinweise geben, warum das passiert? Ich verwende Ubuntu Server 14.04 und habe Folgendes installiert:logstash=1.4.2-1-2c0f5a1

Antwort1

Ich nehme also an, dass dies jetzt eine Antwort sein kann. Sieht so aus, als wären Ihre Tests als Benutzer ausgeführt worden rootund Ihr Dienst läuft als logstash. Ihre Testprotokolle zeigen keine Fehler. Aber ich denke, Ihr Problem liegt bei den Dateiberechtigungen. Bitte überprüfen Sie, ob die Konfigurationsdateien für den Benutzer lesbar logstashund die Protokolldateien für ihn beschreibbar sind. Da dieser Prozess außerdem in der Lage sein sollte, Apache-Protokolldateien direkt zu lesen, überprüfen Sie, ob logstasher sie auch lesen kann. Wenn Logstash so konfiguriert ist, dass es auf eingehende Netzwerkverbindungen wartet, überprüfen Sie, ob die konfigurierten Ports höher als 1024 sind.

Sie können auch versuchen, Ihre Tests als logstashBenutzer auszuführen:

so ähnlich:

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

verwandte Informationen