Назад | Перейти на главную страницу

Не удается заставить logstash работать со сценарием выскочки

Я установил logstash на свой безголовый сервер, но у меня возникают проблемы с его работой из сценария выскочки с sudo service logstash start. Это результат, который я получил /var/log/logstash/logstash.log является Вот но я не вижу там ничего очевидного.

со сценарием выскочки (/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:

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

Итак, я полагаю, это может быть ответом сейчас. Похоже, ваши тесты проводились как root пользователь. и ваша служба работает как logstash. В ваших журналах тестов ошибок нет. Но я думаю, ваша проблема связана с правами доступа к файлам. Убедитесь, что файлы конфигурации доступны для чтения пользователю logstash и файлы журналов доступны для записи. Кроме того, поскольку этот процесс должен иметь возможность напрямую читать файлы журнала apache, проверьте, logstash их тоже читать. Если logstash настроен на прослушивание входящих сетевых подключений, проверка настроенных портов превышает 1024.

Также вы можете попробовать запустить свои тесты как logstash пользователь:

что-то такое:

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