私はヘッドレスサーバーに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 ログでは確かに何かが起こっているのに、何も起こっていないようです。
しかし、アップスタートスクリプトから興味深い部分(との間)を取り出し、シェルスクリプトとして実行するとscript
、end 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