upstart スクリプトで logstash を動作させることができません

upstart スクリプトで logstash を動作させることができません

私はヘッドレスサーバーにlogstashをインストールしましたが、upstartスクリプトから動作させるのにいくつか問題がありますsudo service logstash start。これは私が得た出力です/var/log/logstash/logstash.logここしかし、そこには明らかなものは何も見当たりません。

upstart スクリプトは (/etc/init/logstash.conf) # logstash - エージェント インスタンス # です。

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

logstash conf ファイルは次のようになります:

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

Apache ログでは確かに何かが起こっているのに、何も起こっていないようです。

しかし、アップスタートスクリプトから興味深い部分(との間)を取り出し、シェルスクリプトとして実行するとscriptend script完璧に動作し、ログに何かが記録されるのがわかります。なぜこのようなことが起こるのか、誰か教えてくれませんか?私はUbuntuサーバー14.04サーバーを実行しており、インストールされています。logstash=1.4.2-1-2c0f5a1

答え1

これで答えが出たと思います。テストはrootユーザーとして実行され、サービスは として実行されているようですlogstash。テストのログにはエラーは表示されません。ただし、問題はファイル権限にあると思います。構成ファイルがユーザーに対して読み取り可能でありlogstash、ログファイルが書き込み可能であることを確認してください。さらに、そのプロセスは Apache ログファイルを直接読み取ることができるはずなので、 がlogstashそれらも読み取ることができるかどうかを確認してください。logstash が着信ネットワーク接続をリッスンするように構成されている場合は、構成されているポートが 1024 より大きいかどうかを確認してください。

logstashまた、ユーザーとしてテストを実行することもできます:

そんな感じ:

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

関連情報