로그스태시를 upstart 스크립트와 함께 사용할 수 없습니다.

로그스태시를 upstart 스크립트와 함께 사용할 수 없습니다.

헤드리스 서버에 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

관련 정보