헤드리스 서버에 Logstash를 설치했지만 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