Π”Ρ€ΡƒΠΆΠΈΠΌ ELK ΠΈ Exchange. Π§Π°ΡΡ‚ΡŒ 1

Π”Ρ€ΡƒΠΆΠΈΠΌ ELK ΠΈ Exchange. Π§Π°ΡΡ‚ΡŒ 1

ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽ ΡΠ΅Ρ€ΠΈΡŽ статСй, Π³Π΄Π΅ Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ своим ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Exchange ΠΈ ELK. Π­Ρ‚ΠΎΡ‚ стэк ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ большиС ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ Π»ΠΎΠ³ΠΎΠ² ΠΈ Π½Π΅ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒΡΡ вопросом, ΠΏΡ€ΠΈ ΠΊΠ°ΠΊΠΎΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Π΅ инструмСнты логирования откаТутся Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³Π°Ρ‚ΡŒ. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Π½ΠΎΠ²Ρ‹ΠΌ Π±ΠΎΠΉΡ†ΠΎΠΌ с Π»ΠΎΠ³Π°ΠΌΠΈ.

Exchange ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ достаточно Ρ€Π°Π·Π²Π΅Ρ‚Π²Π»Ρ‘Π½Π½ΠΎΠΉ систСмой логирования. Π‘Π°ΠΌΡ‹Π΅ вострСбованныС Π»ΠΎΠ³ΠΈ – Π»ΠΎΠ³ΠΈ трэкинга, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ пошаговоС ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ письма Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ; Π»ΠΎΠ³ΠΈ Π²Π΅Π±-сСрвСра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Π½ΠΎΠ²ΡƒΡŽ сСссию ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² систСмС, ΠΈ Π»ΠΎΠ³ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с Ρ€Π°Π·Π½ΠΎΠΉ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒΡŽ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сСссии. Π’Π°ΠΊΠΆΠ΅ Exchange ΡƒΠΌΠ΅Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ сырыС Π»ΠΎΠ³ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² smtp, imap ΠΈ pop3.

КакиС инструмСнты ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π»ΠΎΠ³Π°ΠΌΠΈ:

  • Π¨Ρ‚Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ Get-MessageTrackingLog: ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ трэкинга;
  • Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° logparser: для логирования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ псСвдо-SQL язык для поиска ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ достаточно быстро;
  • Π’Π½Π΅ΡˆΠ½ΠΈΠΉ SQL-сСрвСр: для особо спСцифичСских случаСв (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°Π½Π°Π»ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… Π·Π° большиС ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ).

Всё это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ, ΠΊΠΎΠ³Π΄Π° Ρƒ нас ΠΏΠ°Ρ€Π° сСрвСров ΠΈ объСм ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π»ΠΎΠ³ΠΎΠ² измСряСтся дСсятками-сотнями Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚. А Ρ‡Ρ‚ΠΎ, Ссли счёт сСрвСров ΠΈΠ΄Ρ‘Ρ‚ Π½Π° дСсятки, Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Π»ΠΎΠ³ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π²Π°Π»ΠΈΠ» Π·Π° Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚? Π­Ρ‚Π° схСма, вСроятнСС всСго, Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΡΡ‹ΠΏΠ°Ρ‚ΡŒΡΡ.

И Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ происходит: Get-MessageTrackingLog Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΎΡ‚Π²Π°Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Ρƒ, logparser упираСтся Π² ΠΏΠΎΡ‚ΠΎΠ»ΠΎΠΊ 32-Π±ΠΈΡ‚Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Π° Π²Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° Π² SQL-сСрвСр ломаСтся Π² самый нСподходящий ΠΌΠΎΠΌΠ΅Π½Ρ‚, Π½Π΅ ΠΏΠ΅Ρ€Π΅Π²Π°Ρ€ΠΈΠ² многострочный exception ΠΎΡ‚ сСрвиса.

Π’ΡƒΡ‚ Π½Π° сцСну Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΈΠ³Ρ€ΠΎΠΊ – стэк ELK, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π·Π°Ρ‚ΠΎΡ‡Π΅Π½ ΠΏΠΎΠ΄ ΠΆΠΎΠ½Π³Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌΠΈ объСмами Π»ΠΎΠ³ΠΎΠ² Π² Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Π΅ сроки ΠΈ с Ρ‚Π΅Ρ€ΠΏΠΈΠΌΡ‹ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ΠΌ рСсурсов.

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части я ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ расскаТу, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ filebeat, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ относится ΠΊ части стСка ELK β€” ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ простых тСкстовых Ρ„Π°ΠΉΠ»ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ прилоТСния ΠΏΠΈΡˆΡƒΡ‚ свои Π»ΠΎΠ³ΠΈ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ остановимся Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… Logstash ΠΈ Kibana.

Установка

Π˜Ρ‚Π°ΠΊ, Ρ„Π°ΠΉΠ»-Π°Ρ€Ρ…ΠΈΠ² Π°Π³Π΅Π½Ρ‚Π° filebeat ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ с этого сайта.

ΠœΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ установку простой распаковкой содСрТимого zip-Ρ„Π°ΠΉΠ»Π°. НапримСр, Π² c:Program Filesfilebeat. Π—Π°Ρ‚Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ PowerShell-скрипт install-service-filebeat.ps1, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ΄Ρ‘Ρ‚ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅, для установки сСрвиса filebeat.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

ΠžΡ‚ΠΊΠ°Π·ΠΎΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ

Filebeat Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ доставку Π»ΠΎΠ³ΠΎΠ² Π² систСму сбора Π»ΠΎΠ³ΠΎΠ². РСализуСтся это Π·Π° счёт вСдСния рССстра записСй Π² Π»ΠΎΠ³-Ρ„Π°ΠΉΠ»Π°Ρ…. Π’ рССстрС хранится информация ΠΎ Ρ‚Π΅Ρ… записях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Ρ‹ ΠΈΠ· Π»ΠΎΠ³-Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ записи, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² мСсто назначСния.

Если ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ запись Π½Π΅ получаСтся Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, Ρ‚ΠΎ filebeat Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π΅Ρ‘ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΠΎΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰Π΅ΠΉ систСмы подтвСрТдСния доставки ΠΈΠ»ΠΈ исходный Π»ΠΎΠ³-Ρ„Π°ΠΉΠ» Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Ρ‘Π½ Π² процСссС Ρ€ΠΎΡ‚Π°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΈ пСрСзапускС сСрвиса filebeat Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ· рССстра ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ послСдних ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹Ρ… ΠΈ доставлСнных записях ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ записи Π² Π»ΠΎΠ³-Ρ„Π°ΠΉΠ»Π°Ρ…, исходя ΠΈΠ· ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² рССстрС.

Π­Ρ‚ΠΎ позволяСт ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ риск ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π»ΠΎΠ³Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π½Π° сСрвСры elasticlogstash, Π² процСссС Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½Ρ‹Ρ… сбоСв ΠΈ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΠΎ тСхничСскому ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Π½ΠΈΡŽ сСрвСров.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π² ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π°Ρ…: How does Filebeat keep the state of files ΠΈ How does Filebeat ensure at-least-once delivery?

Настройка

Вся настройка выполняСтся Π² Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° yml, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π·Π±ΠΈΡ‚ Π½Π° нСсколько сСкций. Рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ Π² процСссС сбора Π»ΠΎΠ³ΠΎΠ² с сСрвСров Exchange.

Π‘Π»ΠΎΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π»ΠΎΠ³ΠΎΠ²

Π‘Π»ΠΎΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π»ΠΎΠ³ΠΎΠ² начинаСтся с поля:

filebeat.inputs:

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ инструмСнт сбора Π»ΠΎΠ³ΠΎΠ²:

- type: log

Π”Π°Π»Π΅Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ статус (Π²ΠΊΠ»ΡŽΡ‡Π΅Π½) ΠΈ ΠΏΡƒΡ‚ΠΈ Π΄ΠΎ ΠΏΠ°ΠΏΠΊΠΈ с Π»ΠΎΠ³Π°ΠΌΠΈ. НапримСр, Π² случаС с Π»ΠΎΠ³Π°ΠΌΠΈ IIS настройки ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ:

    enabled: true
    paths:
	- C:inetpublogsLogFilesW3SVC1*.log
	- C:inetpublogsLogFilesW3SVC2*.log

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½Π° ваТная настройка: ΠΊΠ°ΠΊ filebeat Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ многострочныС записи. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ filebeat считаСт ΠΎΠ΄Π½Ρƒ строку Π»ΠΎΠ³-Ρ„Π°ΠΉΠ»Π° ΠΎΠ΄Π½ΠΎΠΉ записью. Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, ΠΏΠΎΠΊΠ° Ρƒ нас Π² Π»ΠΎΠ³ Π½Π΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, связанныС с Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ сСрвиса. Π’ этом случаС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строк. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ filebeat Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΡΡ‚Ρ€ΠΎΡ‡Π½ΡƒΡŽ запись ΠΊΠ°ΠΊ ΠΎΠ΄Π½Ρƒ, Ссли ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка начинаСтся с Π΄Π°Ρ‚Ρ‹. Π€ΠΎΡ€ΠΌΠ°Ρ‚ записи Π»ΠΎΠ³ΠΎΠ² Π² Exchange Ρ‚Π°ΠΊΠΎΠΉ: каТдая новая запись Π² Π»ΠΎΠ³-Ρ„Π°ΠΉΠ» начинаСтся с Π΄Π°Ρ‚Ρ‹. Π’ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ это условиС выглядит Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

multiline:
	pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
	negate: true
	match: after

Π˜ΠΌΠ΅Π΅Ρ‚ смысл Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ тэги Π² ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌΡƒΡŽ запись, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  tags: ['IIS', 'ex-srv1']

И Π½Π΅ Π·Π°Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ строки, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с Ρ…ΡΡˆ-символа:

  exclude_lines: ['^#']

Π˜Ρ‚Π°ΠΊ, Π±Π»ΠΎΠΊ чтСния Π»ΠΎΠ³ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

filebeat.inputs:
- type: log
  enabled: true
  paths:
	- C:inetpublogsLogFilesW3SVC1*.log
	- C:inetpublogsLogFilesW3SVC2*.log
  multiline:
	pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
	negate: true
	match: after
  tags: ['IIS', 'ex-srv1']
  exclude_lines: ['^#']

Π‘Π»ΠΎΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π»ΠΎΠ³ΠΎΠ²

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ записи Π² Π»ΠΎΠ³ Ρ„Π°ΠΉΠ»Π΅ filebeat отправляСт Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° json, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ конкрСтная запись ΠΈΠ· Π»ΠΎΠ³Π° содСрТится Π² СдинствСнном ΠΏΠΎΠ»Π΅ message. Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΊΠ°ΠΊ-Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ это ΠΏΠΎΠ»Π΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ поля. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² logstash. Он ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»Π΅ΠΌ записСй ΠΈΠ· filebeat. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ filebeat:

output.logstash:
  hosts: ["logstash1.domain.com:5044"]

Если сСрвСров нСсколько, Ρ‚ΠΎ для Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ балансировку: Ρ‚ΠΎΠ³Π΄Π° filebeat Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈ Π½Π΅ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ доступный сСрвСр ΠΈΠ· списка, Π° Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ отправляСмыС Π»ΠΎΠ³ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими сСрвСрами:

hosts: ["logstash1.domain.com:5044", "logstash2.domain.com:5044"]
  loadbalance: true 

Filebeat ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π»ΠΎΠ³ΠΎΠ² Π² отправляСмый json ΠΏΠΎΠΌΠΈΠΌΠΎ записи Π»ΠΎΠ³Π°, которая содСрТится Π² ΠΏΠΎΠ»Π΅ message, добавляСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ количСство ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сказываСтся Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ Π² elastic. Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎ ΠΈΠ· ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ. ДСлаСтся это Π² Π±Π»ΠΎΠΊΠ΅ processor с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ процСссора drop_fields. Π˜ΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ поля:

processors:
- drop_fields:
	fields: ["agent.ephemeral_id", "agent.hostname", "agent.id", "agent.type", "agent.version", "agent", "ecs.version", "ecs", "input.type", "input", "log.offset", "version"]

К Π²Ρ‹Π±ΠΎΡ€Ρƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ стоит ΠΏΠΎΠ΄ΠΎΠΉΡ‚ΠΈ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ, вСдь Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° сторонС elastic для построСния индСксов.

Π˜Ρ‚Π°ΠΊ, Π±Π»ΠΎΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π»ΠΎΠ³ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

output.logstash:
  hosts: ["logstash1.domain.com:5044", "logstash2.domain.com:5044"]
  loadbalance: true
 
processors:
- drop_fields:
	fields: ["agent.ephemeral_id", "agent.hostname", "agent.id", "agent.type", "agent.version", "agent", "ecs.version", "ecs", "input.type", "input", "log.offset", "version"]

Настройки логирования filebeat

Π˜ΠΌΠ΅Π΅Ρ‚ смысл Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ настройки логирования:

  • Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ логирования info;
  • ЗаписываСм Π»ΠΎΠ³ΠΈ Π² Ρ„Π°ΠΉΠ»Ρ‹, располоТСнныС ΠΏΠΎ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Ρƒ (дирСктория logs, Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ установки filebeat);
  • Имя Ρ„Π°ΠΉΠ»Π° Π»ΠΎΠ³Π° β€” filebeat;
  • Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ послСдниС 10 Ρ„Π°ΠΉΠ»ΠΎΠ² Π»ΠΎΠ³ΠΎΠ²;
  • Π—Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Ρ€ΠΎΡ‚Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΈ достиТСнии Ρ€Π°Π·ΠΌΠ΅Ρ€Π° 1Мб.

Ѐинально Π±Π»ΠΎΠΊ настройки логирования Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

logging.level: info
logging.to_files: true
logging.files:
  name: filebeat
  keepfiles: 10
  rotateeverybytes: 1048576

Π˜Ρ‚ΠΎΠ³ΠΎΠ²Π°Ρ конфигурация

ΠœΡ‹ собрали ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ, ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½Π° выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - C:inetpublogsLogFilesW3SVC1*.log
    - C:inetpublogsLogFilesW3SVC2*.log
  multiline:
    pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
    negate: true
    match: after
  tags: ['IIS', 'ex-srv1']
  exclude_lines: ['^#']
 
output.logstash:
  hosts: ["logstash1.domain.com:5044", "logstash2.domain.com:5044"]
  loadbalance: true
 
processors:
- drop_fields:
    fields: ["agent.ephemeral_id", "agent.hostname", "agent.id", "agent.type", "agent.version", "agent", "ecs.version", "ecs", "input.type", "input", "log.offset", "version"]
 
logging.level: info
logging.to_files: true
logging.files:
  name: filebeat
  keepfiles: 10
  rotateeverybytes: 1048576

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ β€” yml. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Π°ΠΆΠ½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°ΡΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ Π·Π½Π°ΠΊΠΈ минуса.

Filebeat ΡƒΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ, Ссли синтаксис Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ошибки, β€” ΡƒΠΊΠ°ΠΆΠ΅Ρ‚, Π² ΠΊΠ°ΠΊΠΎΠΉ строкС ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ мСстС строки синтаксис Π½Π΅Π²Π΅Ρ€Π΅Π½. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° выполняСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

.filebeat.exe test config

Π•Ρ‰Ρ‘ filebeat ΡƒΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΡΠ΅Ρ‚Π΅Π²ΡƒΡŽ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ° Π»ΠΎΠ³ΠΎΠ². ЗапускаСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚Π°ΠΊ:

.filebeat.exe test output

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… частях я расскаТу ΠΏΡ€ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈ Π΄Ρ€ΡƒΠΆΠ±Ρƒ Exchange с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ Logstash ΠΈ Kibana.

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com