Сжатие старых логов

Здравствуйте. эластик с кибаной собираются логи с домена (сбор логов осуществляется через ForwardedEvents .evtx)
В Logstash настроен фильтр которые собирает нужные event id

filter {
    if "slog" in [tags] {
	if [winlog][event_id] != "5136" and [winlog][event_id] != "5139" and [winlog][event_id] != "5141" and [winlog][event_id] != "5137" and [winlog][event_id] != "4741" and [winlog][event_id] != "4742" and [winlog][event_id] != "4743" and [winlog][event_id] != "4720" and [winlog][event_id] != "4721" and [winlog][event_id] != "4722" and [winlog][event_id] != "4723" and [winlog][event_id] != "4724" and [winlog][event_id] != "4725" and [winlog][event_id] != "4726" and [winlog][event_id] != "4738" and [winlog][event_id] != "4740" and [winlog][event_id] != "4767" and [winlog][event_id] != "4781" and [winlog][event_id] != "4794" and [winlog][event_id] != "1102" and [winlog][event_id] != "4744" and [winlog][event_id] != "4744" and [winlog][event_id] != "4745" and [winlog][event_id] != "4746" and [winlog][event_id] != "4747" and [winlog][event_id] != "4748" and [winlog][event_id] != "4749" and [winlog][event_id] != "4750" and [winlog][event_id] != "4751" and [winlog][event_id] != "4752" and [winlog][event_id] != "4753" and [winlog][event_id] != "4759" and [winlog][event_id] != "4760" and [winlog][event_id] != "4761" and [winlog][event_id] != "4762" and [winlog][event_id] != "4727" and [winlog][event_id] != "4728" and [winlog][event_id] != "4729" and [winlog][event_id] != "4730" and [winlog][event_id] != "4731" and [winlog][event_id] != "4732" and [winlog][event_id] != "4733" and [winlog][event_id] != "4734" and [winlog][event_id] != "4735" and [winlog][event_id] != "4736" and [winlog][event_id] != "4737" and [winlog][event_id] != "4754" and [winlog][event_id] != "4755" and [winlog][event_id] != "4756" and [winlog][event_id] != "4757" and [winlog][event_id] != "4758" and [winlog][event_id] != "4764" and [winlog][event_id] != "4776" and [winlog][event_id] != "4625" {
	drop { }
	}
    }
}

Причина в том, что слишком много логов получается и некоторые задваиваются. Как можно сжимать их или удалять не нужные поля?

Удалять ненужные поля можно в конфигурационном файле logstash.
К примеру

filter {
       mutate { remove_field => ["message"]}
  }

удалит поле message из полученного от winlogbeat сообщения. Для корректной настройки времени хранения логов необходимо настроить ilm policy.
Откровенно говоря, довольно странное решение фильтровать события в самом Logstash. Лучше использовать windows event forwarding custom channels (прям так гуглите первая ссылка на гитхабе будет Вам крайне полезна). На Event Collector будут приходить только нужные события и по сети будет ходить только нужный трафик.

Из-за этого и возникла потребность эластика. Один сервер лобирает все логи в контроллеров домена в .evtx. Их нельзя фильтровать по event id (нужно собирать и хранить все)
А уже потом в эластик собирается только необходимые event, но некоторые дублируются и пишутся все подряд, хотя в фильтре настроены только на нужные мне.

Не совсем понятно, почему нельзя фильтровать то? Будет отдельный журнал исключительно для событий аутентификации, отдельный журнал с событиями изменения состояния учетной записи и тд. Быстрее поиск нужных событий, в том числе и в архивных журналах (мы же архивируем журналы по достижении 4Гб).
Фильтрацию можно делать и средствами того же winlogbeat

winlogbeat.event_logs:
  - name: Security
    event_id: 4624, 4625, 4700-4800, -4735

Где -4735 исключенное для передачи событие. Вполне может быть я не вижу конечной цели эластика. Если он нужен исключительно как фильтр, то это слишком тяжелое решение. Тем же Logstash в output можно указать конечный файл и на этом успокоиться.
В любом случае решение для Вашей проблемы - настройка ilm policy. Эластик c заданной Вами частотой будет переводить индексы по фазам и, если настройки корректны, сжимать.

PUT _ilm/policy/winlogbeat-7.7.0
{
  "policy": {
    "phases": {
      "warm": {
        "actions": {
          "forcemerge" : {
            "max_num_segments": 1,
            "index_codec": "best_compression"
          }
        }
      }
    }
  }
}

Поле "index_codec": "best_compression" в данном случае и указывает на максимально возможное сжатие. Приведенный выше пример актуален для Elasticsearch 7.7.0

Elasticsearch 7.7 is EOL and no longer supported. Please upgrade ASAP.

(This is an automated response from your friendly Elastic bot. Please report this post if you have any suggestions or concerns :elasticheart: )

Такая ситуация. Есть 15 контроллеров домена, есть отдельный сервер который собирает все логи forwardind events (требования информационный безопасности)- дальше они в анкей сием или куда там собираются. Мне же нужны определенные логи (удаление УЗ, включение, предоставлен доступ, создана группа - и все то же самое на удаление), поэтому winlogbeat настроен на отправку forwarding ( .evtx) в эластик. winlogbeat отправляет именно .evtx целиком, и я сделал фильтр для нужных мне евентов. Но база стала расти нереально быстро (при 5 версии логи хранились годами, а сейчас в разы меньше, после установки последних версий), раньше был сделан шаблон json (но сейчас он не отрабатывает) поэтому я сделал фильтр в логсташе. Но некоторые логи дублируются, и пишется слишком много не нужных полей.

Тогда в том же logstash используйте remove_field (пример в первом посте). Название полей можно посмотреть в Kibana (если она есть) или самом Elasticsearch.

Не получается сделать по нормальному. Все равно логи дублируются по пару раз. Вот пример:
event id 4776 именно с этого евента такие логи идут и их очень много, соответственно сжирает место

Mar 9, 2022 @ 10:27:18.723 event.code:4776 winlog.event_id:4776 @timestamp:Mar 9, 2022 @ 10:27:18.723 @version:1 agent.ephemeral_id:ebd291ad-0bfa-4ce9-96ed-47474682755b agent.hostname:ulog01 agent.id:3dd275e2-9a5b-4c04-baa3-afd04756e13e agent.name:ulog01 agent.type:winlogbeat agent.version:7.16.2 ecs.version:1.12.0 event.action:Credential Validation event.created:Mar 9, 2022 @ 10:27:20.287 event.kind:event event.outcome:success event.provider:Microsoft-Windows-Security-Auditing host.name:SDC07.dom.ru log.level:information message:The computer attempted to validate the credentials for an account. Authentication Package: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0 Logon Account: I_Ivanov Source Workstation: Y-12225 Error Code: 0x0 tags:winsrvad, beats_input_codec_plain_applied winlog.api:wineventlog winlog.channel:Security winlog.computer_name:SDC07.dom.ru winlog.event_data.PackageName:MICROSOFT_AUTHENTICATION_PACKAGE_V1_0 winlog.event_data.Status:0x0 winlog.event_data.TargetUserName:I_Ivanov winlog.event_data.Workstation:PC-12225 winlog.keywords:Audit Success winlog.opcode:Info winlog.process.pid:680 winlog.process.thread.id:7,960 winlog.provider_guid:{54849625-5478-4994-A5BA-3E3B0328C30D} winlog.provider_name:Microsoft-Windows-Security-Auditing winlog.record_id:223,633,020 winlog.task:Credential Validation _id:k1klbX8B7hUHpkGdYojn _index:winsrvad-2022.03.09 _score: - _type:_doc

Mar 9, 2022 @ 10:27:18.723 event.code:4776 winlog.event_id:4776 @timestamp:Mar 9, 2022 @ 10:27:18.723 @version:1 agent.ephemeral_id:ebd291ad-0bfa-4ce9-96ed-47474682755b agent.hostname:ulog01 agent.id:3dd275e2-9a5b-4c04-baa3-afd04756e13e agent.name:ulog01 agent.type:winlogbeat agent.version:7.16.2 ecs.version:1.12.0 event.action:Credential Validation event.created:Mar 9, 2022 @ 10:27:20.287 event.kind:event event.outcome:success event.provider:Microsoft-Windows-Security-Auditing host.name:SDC07.dom.ru log.level:information message:The computer attempted to validate the credentials for an account. Authentication Package: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0 Logon Account: I_Ivanov Source Workstation: Y-12225 Error Code: 0x0 tags:winsrvad, beats_input_codec_plain_applied winlog.api:wineventlog winlog.channel:Security winlog.computer_name:SDC07.dom.ru winlog.event_data.PackageName:MICROSOFT_AUTHENTICATION_PACKAGE_V1_0 winlog.event_data.Status:0x0 winlog.event_data.TargetUserName:I_Ivanov winlog.event_data.Workstation:PC-12225 winlog.keywords:Audit Success winlog.opcode:Info winlog.process.pid:680 winlog.process.thread.id:7,960 winlog.provider_guid:{54849625-5478-4994-A5BA-3E3B0328C30D} winlog.provider_name:Microsoft-Windows-Security-Auditing winlog.record_id:223,633,022 winlog.task:Credential Validation _id:lFklbX8B7hUHpkGdYojn _index:winsrvad-2022.03.09 _score: - _type:_doc

Mar 9, 2022 @ 10:27:18.723 event.code:4776 winlog.event_id:4776 @timestamp:Mar 9, 2022 @ 10:27:18.723 @version:1 agent.ephemeral_id:ebd291ad-0bfa-4ce9-96ed-47474682755b agent.hostname:ulog01 agent.id:3dd275e2-9a5b-4c04-baa3-afd04756e13e agent.name:ulog01 agent.type:winlogbeat agent.version:7.16.2 ecs.version:1.12.0 event.action:Credential Validation event.created:Mar 9, 2022 @ 10:27:20.287 event.kind:event event.outcome:success event.provider:Microsoft-Windows-Security-Auditing host.name:SDC07.dom.ru log.level:information message:The computer attempted to validate the credentials for an account. Authentication Package: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0 Logon Account: I_Ivanov Source Workstation: Y-12225 Error Code: 0x0 tags:winsrvad, beats_input_codec_plain_applied winlog.api:wineventlog winlog.channel:Security

Прям буквально ответ на Ваш вопрос

Извините, немного не понял, точнее ничего не понял.

Удалять ненужные поля можно в конфигурационном файле logstash.
К примеру

filter {
       mutate { remove_field => ["message"]}
  }

удалит поле message из полученного от winlogbeat сообщения.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.