0

Я хочу разобрать журналы AWS ELB [хранится в ведре S3] из Logstash, который настроен внутри стека ELK, установленного в докере.Как настроить Logstash для анализа журналов AWB ELB?

Я клонировал this репо. Here - это документы.

Я добавил свой logstash конфигурационный файл, как это [и прокомментированы все остальные]:

# AWS ELB configuration file ADD ./aws_elb_logs.conf /etc/logstash/conf.d/aws_elb_logs.conf

Конфигурационный файл состоит в следующем:

input { 
    s3 { 
     # Logging_user AWS creds 
     access_key_id  => "fjnsdfjnsdjfnjsdn" 
     secret_access_key => "asdfsdfsdfsdfsdfsdfsdfsd" 

     bucket   => "elb-access-logs" 

     region   => "us-west-2" 

     # keep track of the last processed file 
     sincedb_path => "./last-s3-file" 
     codec   => "json" 
     type   => "elb" 
    } 
} 

filter { 
    if [type] == "elb" { 
     grok { 
      match => [ 'message', '%{TIMESTAMP_ISO8601:timestamp} %{NOTSPACE:loadbalancer} %{IP:client_ip}:%{NUMBER:client_port:int} (?:%{IP:backend_ip}:%{NUMBER:backend_port:int}|-) %{NUMBER:request_processing_time:float} %{NUMBER:backend_processing_time:float} %{NUMBER:response_processing_time:float} (?:%{NUMBER:elb_status_code:int}|-) (?:%{NUMBER:backend_status_code:int}|-) %{NUMBER:received_bytes:int} %{NUMBER:sent_bytes:int} "(?:%{WORD:verb}|-) (?:%{GREEDYDATA:request}|-) (?:HTTP/%{NUMBER:httpversion}|-()?)" "%{DATA:userAgent}"(%{NOTSPACE:ssl_cipher} %{NOTSPACE:ssl_protocol})?' ] 
     } 
     grok { 
      match => [ "request", "%{URIPROTO:http_protocol}" ] 
     } 
     geoip { 
      source => "client_ip" 
      target => "geoip" 
      add_tag => [ "geoip" ] 
     } 
     useragent { 
      source => "userAgent" 
     } 
     date { 
      match => ["timestamp", "ISO8601"] 
     } 
    } 
} 

output { 
    elasticsearch { 
     hosts => localhost 
     port => "9200" 
     index => "logstash-%{+YYYY.MM.dd}" 
    } 
    stdout { 
     debug => true 
    } 
} 

Когда я создаю контейнер, Я получаю следующий журнал ошибок из Logstash:

==> /var/log/logstash/logstash.log <== 
{:timestamp=>"2016-10-18T13:04:40.798000+0000", :message=>"Pipeline aborted due to error", :exception=>"LogStash::ConfigurationError", :backtrace=>["/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/config/mixin.rb:88:in `config_init'", "org/jruby/RubyHash.java:1342:in `each'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/config/mixin.rb:72:in `config_init'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/outputs/base.rb:79:in `initialize'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/output_delegator.rb:74:in `register'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/pipeline.rb:181:in `start_workers'", "org/jruby/RubyArray.java:1613:in `each'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/pipeline.rb:181:in `start_workers'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/pipeline.rb:136:in `run'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.4.0-java/lib/logstash/agent.rb:491:in `start_pipeline'"], :level=>:error} 
{:timestamp=>"2016-10-18T13:04:43.801000+0000", :message=>"stopping pipeline", :id=>"main"} 

Я не могу понять, что/я/делаю неправильно!

Все указатели будут приветствоваться ..

EDIT:

Теперь это: ==> /var/log/logstash/logstash.log <== {:timestamp=>"2016-10-18T14:26:50.492000+0000", :message=>"A plugin had an unrecoverable error. Will restart this plugin.\n Plugin: <LogStash::Inputs::S3 access_key_id=>\"gsfgdfgdfgdfgdfg\", secret_access_key=>\"dsfgsdfgsdgsdfgsdfg\", bucket=>\"elb-access-logs-dr\", region=>\"us-west-2\", sincedb_path=>\"./last-s3-file\", codec=><LogStash::Codecs::JSON charset=>\"UTF-8\">, type=>\"elb\", use_ssl=>true, delete=>false, interval=>60, temporary_directory=>\"/opt/logstash/logstash\">\n Error: The request signature we calculated does not match the signature you provided. Check your key and signing method.", :level=>:error}

+1

Есть [ваш предыдущий] (http://stackoverflow.com/questions/40087769/how-to-send-aws-elb-logs-to-an-elk-stack-inside-docker) вопрос, который по-прежнему имеет отношение или делает это его заменить? – R0MANARMY

+1

Это замещает его как точное.Спасибо! –

+0

Cool, не могли бы вы убрать другой? – R0MANARMY

ответ

1

Если вы используете один из контейнера с logstash версии> 2, конфигурации для Выходной плагин elasticsearch - это ошибка. С помощью logstash версии 2 был удален параметр конфигурации port, порт был настроен с хостом в опции hosts (cf doc).

+0

Спасибо, что сделал некоторый прогресс! Теперь у меня есть еще один: \. Проверьте приведенные выше изменения. –

+0

@KostasDemiris. Я посмотрел на редактирование. У меня есть нулевой опыт работы с s3-ведрами и плагином s3, поэтому я могу только сказать, что находится в указанном вами журнале, что есть проблемы с вашими учетными данными. Если вы хотите получить помощь по этой проблеме, вам придется задать другой вопрос. – baudsp

+0

Это нормально. Я нашел это. Для справки http://stackoverflow.com/a/20720402/1163667. Еще раз спасибо. это был такой подлый,] –

 Смежные вопросы

  • Нет связанных вопросов^_^