無法讓 Logstash 與 upstart 腳本一起使用

無法讓 Logstash 與 upstart 腳本一起使用

我已經在無頭伺服器上安裝了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 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 腳本運行時,它運行得很好,我可以看到日誌中的內容。任何人都可以給我一些關於為什麼會這樣的指示嗎?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

相關內容