Получение CloudTrail журналов в Logstash

Я пытаюсь получить логи из ClouldTrail в ElasticSearch, чтобы мы могли лучше видеть, что происходит в нашей учетной записи AWS.

Я установил Logstash и ElasticSearch на своем компьютере (Ubuntu 14.04) и могу выдавать текст из stdin в ElasticSearch. Однако, когда я пытаюсь использовать вход S3, в ElasticSearch ничего не добавляется.

Вот файл conf, который я использую, я удалил ключи от Amazon

input {
  s3 {
    bucket => 'ko-cloudtrail-log-bucket'
    secret_access_key => ''
    access_key_id => ''
    delete => false
    interval => '60'
    region => 'eu-west-1'
    type => 'CloudTrail'
    codec => cloudtrail {}
    }
}

output {
    stdout {}
    elasticsearch {
            host => '127.0.0.1'
     }
}

Я установил кодек logstash-codec-cloudtrail, но документация довольно скудная.

Я не получаю ошибок в своем терминале даже при запуске Logstash с -v и ничего не выводится на stdout, Есть что-то, чего мне не хватает?

1 ответ

Вот мой вклад в облачный след. Он отлично работает с одной незначительной проблемой - он дублирует записи. Как prefix указывает, я помещаю журналы cloudtrail в s3://bucketname/cloudtrail, а не в root.

Мутации не являются обязательными. Мутация eventSource делает журналы немного более читаемыми, а ruby ​​ingest_time дает мне дату, когда запись показывается в ELK, в противном случае она имеет только время события. Наконец, я добавляю очень распространенную запись, которая просто добавляет шум в мою систему.

input {
  s3 {
    bucket => "bucketname"
    delete => false
    interval => 60 # seconds
    prefix => "cloudtrail/"
    type => "cloudtrail"
    codec => "cloudtrail"
    credentials => "/etc/logstash/s3_credentials.ini"
    sincedb_path => "/opt/logstash_cloudtrail/sincedb"
  }
}

filter {
  if [type] == "cloudtrail" {
    mutate {
      gsub => [ "eventSource", "\.amazonaws\.com$", "" ]
      add_field => {
        "document_id" => "%{eventID}"
      }
    }
    if ! [ingest_time] {
      ruby {
        code => "event['ingest_time'] = Time.now.utc.strftime '%FT%TZ'"
      }
    }


    if [eventSource] == "elasticloadbalancing" and [eventName] == "describeInstanceHealth" and [userIdentity.userName] == "secret_username" {
      drop {}
    }
  }
}

Формат credentials.ini описан на странице ввода s3; это просто так:

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
Другие вопросы по тегам