无法让 logstash 与 upstart 脚本一起工作

无法让 logstash 与 upstart 脚本一起工作

我已经在无头服务器上安装了 logstash,但在使用 upstart 脚本使其工作时遇到了一些问题。这是我从issudo 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但是,当我从 upstart 脚本中取出有趣的内容(和之间的内容)end script并将其作为 shell 脚本运行时,它运行正常,我可以看到内容进入日志。有人能告诉我为什么会发生这种情况吗?我正在运行 Ubuntu server 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

相关内容