Logstash 6.5.4 выполняет скрипт bash в плагине фильтра ruby - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь выполнить скрипт bash, используя Logstash, используя плагин filter ruby.

Мой код bash:

#!/bin/bash

name=$1 log_file="/tmp/test.json"

if [[ -n "$name" ]]; then
    echo "$1=$( date +%s )" >> ${log_file} else
    echo "argument error" fi

Моя конфигурация Logstash:

input {
  file{
    path => "/var/log/nginx/access.log"
    start_position => "beginning"   
    codec => "json"
    type => "json"
    sincedb_write_interval => "1"
    discover_interval => "1"
  }
}

filter {  
  if [host] {
    ruby { code => '
        require "open3"
        host = event.get("host")
        cmd = "/bin/bash /etc/logstash/conf.d/bash_scripts/execute.sh #{host}"
        stdin, stdout, stderr = Open3.popen3(cmd)    '
    }
  }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "bash_execute"  
  }
}

Нет ошибок, события из файла просто отправляются и сценарий bash не запускается,Меня не волнует какое-либо подтверждение события или что-то подобное, я просто хочу выполнить произвольный скрипт bash, который может принимать внешний аргумент из события Logstash.

Кто-нибудь может помочь?

...