ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ руководство ΠΏΠΎ систСмам логирования

Π’ΠΈΠΏ ΡΡ‚Π°Ρ‚ΡŒΠΈΠ ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ
ΠšΠΎΠΌΠΏΠ΅Ρ‚Π΅Π½Ρ†ΠΈΠΈΠΠ΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€
НСобходимыС ΠΏΡ€Π°Π²Π°root, администратор ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹
ВСрсия ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹2.20/2.21
Бтатус
БЕВА
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π»Π΅Π³ΠΊΠΎ
ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки

ДокумСнтация ΠΏΠΎ запросам Π² Seq - https://docs.datalust.co/docs/query-syntax
Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ запросам Π² Seq - https://github.com/datalust/seq-cheat-sheets/blob/main/pdf/seq-cheat-sheet.pdf
ДокумСнтация ΠΏΠΎ запросам Π² Grafana (LogQL) - https://grafana.com/docs/loki/latest/logql/
Бинтаксис рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ RE2 для Grafana - https://github.com/google/re2/wiki/Syntax

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ Π²ΠΈΠ΄Π΅ΠΎ: https://youtu.be/SqDYdSUCHEw

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния

ΠŸΡ€ΠΈ устарСвании руководства ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ описанныС Π² Π½Ρ‘ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΈ Π±ΠΎΠ»Π΅Π΅ свСТиС знания Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ вСрсии ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° support@visiology.su Ρ запросом ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎ инструкции.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅


ΠžΠΏΠΈΡ€Π°ΡΡΡŒ Π½Π° Π΄Π°Π½Π½ΠΎΠ΅ руководство, Π²Ρ‹ смоТСтС ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΡƒΡŽ ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡Π΅Ρ€ΠΏΠ½ΡƒΡ‚ΡŒ ΠΈΠ· Π»ΠΎΠ³ΠΎΠ² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Π’Π°ΠΊΠΆΠ΅ Π² руководствС ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с систСмами логирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅. Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ встроСн стСк Grafana (см. ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΡΡ‚Π°Ρ‚ΡŒΡŽ ВстроСнныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² составС дистрибутива имССтся Docker ΠΎΠ±Ρ€Π°Π· Seq для ознакомлСния (Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π΅Π³ΠΎ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π² Π½Π΅Π³ΠΎ Π»ΠΎΠ³ΠΎΠ² с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ). ΠœΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ синтаксис запросов, ΠΊΠ°ΠΊ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ, Π½Π° Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π² Π»ΠΎΠ³Π°Ρ… ΠΈ ΠΏΡ€.


Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅


1. Бобытия ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹


ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° рСгистрируСт большоС количСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³Ρƒ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΌ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹. К Π½ΠΈΠΌ относятся события Π²Ρ…ΠΎΠ΄Π° Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ, просмотра Π΄Π°ΡˆΠ±ΠΎΡ€Π΄ΠΎΠ², созданиС\Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅\ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ (ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, Ρ€ΠΎΠ»ΠΈ, Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Ρ‹ ΠΈ Ρ‚.ΠΏ.), Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. 
Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ события, ΠΈ Π±Ρ‹Π»Π° написана эта ΡΡ‚Π°Ρ‚ΡŒΡ.

Начнём с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π΄Π²Π° уровня логирования: Standard (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) ΠΈ Full. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌ руководствС, ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Full. Как ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ логирования ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‚ΡƒΡ‚ - ΠΠ°ΡΡ‚Ρ€ΠΎΠΉΠΊΠ° логирования Π² docker ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ…. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π±ΡƒΠ΄Π΅Ρ‚ написано, Π½Π° ΠΊΠ°ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ логирования ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ событиС.

ΠŸΠΎΡΠ»Π΅Π΄ΡΡ‚Π²ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ логирования

ПослС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ уровня логирования Full количСство событий Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ увСличится. Как слСдствиС, увСличится ΠΎΠ±ΡŠΡ‘ΠΌ Π»ΠΎΠ³ΠΎΠ² Π½Π° дискС. Π­Ρ‚ΠΎ Π½Π°Π΄ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ.



2. БистСма логирования Seq. Бинтаксис запросов.


Данная систСма Π½Π΅ установлСна ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Для установки слСдуСт Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ инструкциСй - Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° систСмы логирования: Seq.

Π’ Π΄Π°Π½Π½ΠΎΠΉ систСмС ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ запроса для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ. НиТС Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны основныС ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ наши Π·Π°Π΄Π°Ρ‡ΠΈ. ΠŸΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ всю Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ Seq ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ ссылкС - https://docs.datalust.co/docs/query-syntax. Π’Π°ΠΌ расписано всё Π΄ΠΎ ΠΌΠ΅Π»ΠΎΡ‡Π΅ΠΉ. 

Π’ Seq Π΅ΡΡ‚ΡŒ Π΄Π²Π° способа исслСдования Π»ΠΎΠ³ΠΎΠ²:

  • ΠŸΠΎΠΈΡΠΊΠΎΠ²Ρ‹Π΅ выраТСния – для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ событий;
  • SQL-like запросы – для Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄ΠΈΠ½Π³Π°.

Π’Π½Π°Ρ‡Π°Π»Π΅ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ, ΠΊΠ°ΠΊ ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΈΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ события, Π° Π΄Π°Π»Π΅Π΅ Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅ пробСТимся ΠΏΠΎ SQL запросам.

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΏΠΎ названию события

Π’ Seq Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ события Π΅ΡΡ‚ΡŒ имя. НапримСр, событиС Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ называСтся "Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ".

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ записи, Π² строкС запроса ΠΌΡ‹ пишСм это Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅:

"Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ"

МоТно ΠΏΠΈΡΠ°Ρ‚ΡŒ лишь Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

"Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄"

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ события

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ события Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. На ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ Π²Ρ‹ΡˆΠ΅ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρƒ события "Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ" Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: ActionID, ActionName, Component ΠΈ Ρ‚.Π΄.
НапримСр, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°ΠΉΡ‚ΠΈ всС события Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ admin, запрос Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

"Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄" and Username = "admin"

ΠœΡ‹ использовали логичСский ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ И ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΊ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Username, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π΅Π½ admin.

ЛогичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

Π’ запросах ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ and, or ΠΈ not. НапримСр, ΠΊΠ°ΠΊ Π² запросС Π²Ρ‹ΡˆΠ΅. Π”Π°Π²Π°ΠΉΡ‚Π΅ слСгка услоТним запрос:

"Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄" and (Username = "admin" or Username = "testAdmin")

ΠœΡ‹ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅ΠΌ всС события Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ admin ΠΈ testAdmin.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ массивы

Π’ качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° события ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Request = {user: {GivenName: "", FamilyName: "testUser", MiddleName: "", Email: "", UserName: "testUser", IsInfrastructure: false, Roles: ["ВсС Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ"], IsBlocked: false, Password: "*"}, changePass: true}

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Ρƒ нас ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². НапримСр, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ события, Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ Request ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… changePass Ρ€Π°Π²Π΅Π½ true. Π­Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π½Π°ΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° смСна пароля. ΠœΡ‹ напишСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запрос:

Request.changePass = true

Бинтаксис ΠΏΠΎΡ…ΠΎΠΆ Π½Π° JS. ΠœΡ‹ обращаСмся ΠΊ ΠΊΠ»ΡŽΡ‡Ρƒ changePass, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Request. ΠžΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Ρƒ нас логичСский Ρ‚ΠΈΠΏ ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ слСдуСт Π±Π΅Π· ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. 

Если Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρƒ нас массив, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Products = ["pen", "pineapple", "apple"]

Π’ΠΎ ΠΌΡ‹ обращаСмся ΠΊ элСмСнтам массива ΠΏΠΎ индСксу, Π° Ссли индСкс Π½Π΅ извСстСн, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π·Π½Π°ΠΊ ?:

Products[0] = "pen"
Products[?] = "apple"

РСгулярныС выраТСния

Для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ событий с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСгулярного выраТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ /Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅/. НапримСр:

/Π£.*Π΄/

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Π½Π½ΠΎΠ³ΠΎ выраТСния Π½Π°ΠΉΠ΄Ρ‘ΠΌ события "Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄", Ρ‚.ΠΊ. . - это любой символ, Π° * - это ΠΊΠ²Π°Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ Π»ΡŽΠ±Ρ‹Ρ… символов ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ 0 ΠΈΠ»ΠΈ большС.

SQL-like запросы

Π’Π°ΠΊΠΈΠ΅ запросы Π½ΡƒΠΆΠ½Ρ‹ для Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠ·Π½Π°Ρ‚ΡŒ количСство Π²Ρ…ΠΎΠ΄ΠΎΠ² Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ количСство просмотров ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Π°. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΏΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΠΈΠΉ запрос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ подсчитываСт количСство Π²Ρ…ΠΎΠ΄ΠΎΠ² Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ admin:

select count(*) from stream where @Message like 'Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄%' and Username = 'admin'

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Из запроса Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ считаСм события ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ°, Π³Π΄Π΅ сообщСния выглядят ΠΊΠ°ΠΊ "Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ ..." ΠΈ Username Ρ€Π°Π²Π΅Π½ admin.

Π­Ρ‚ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ основныС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΡŽ Π·Π½Π°Π½ΠΈΠΉ ΠΈΠ· Π»ΠΎΠ³ΠΎΠ². Бсылка Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ Seq ΠΈ ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ запросам Π΅ΡΡ‚ΡŒ Π² шапкС Π΄Π°Π½Π½ΠΎΠ³ΠΎ руководства.

2. БистСма логирования Grafana. Бинтаксис запросов


Данная систСма установлСна ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Найти Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ Π² Π²Π΅Π± администрировании ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π²ΠΊΠ»Π°Π΄ΠΊΠ° ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ - ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ - Бобытия.

Π£ этой систСмы Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ событий. Π’ строкС Π²Π²ΠΎΠ΄Π° запроса Π² самом Π½Π°Ρ‡Π°Π»Π΅ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках указываСтся ΠΏΠΎΡ‚ΠΎΠΊ Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, события ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ слСдуСт Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ стоит Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Π“Ρ€Π°Ρ„Π°Π½Π΅ установлСн нСбольшой ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (1Ρ‡), Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ события; ΠΏΡ€ΠΈ нСобходимости ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄.
Π’ ΠΊΠΎΠ½Ρ†Π΅ записи ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ события присутствуСт ссылка "Show context", Π½Π°ΠΆΠ°Π² Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ события, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стоят Π΄ΠΎ ΠΈ послС Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ события.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ события Π² Grafana.

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΏΠΎ строкС

ВсС события Π² Grafana прСдставлСны Π² Π²ΠΈΠ΄Π΅ строки. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ строкС ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ: |="строка".
Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ случай с поиском событий Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ. ΠœΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² событии присутствуСт строка "Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ", поэтому ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

{stream="stdout"} |="Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄"

ΠœΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ записи:

ΠŸΠΎΠΉΠ΄Ρ‘ΠΌ дальшС ΠΈ Π½Π°ΠΉΠ΄Ρ‘ΠΌ всС записи Π²Ρ…ΠΎΠ΄Π° Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ admin:

{stream="stdout"} |="Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄" |="admin"

ΠœΡ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅ΠΌ записи ΠΏΠΎ строкС "Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄" ΠΈ Π΄Π°Π»Π΅Π΅ ΡƒΠΆΠ΅ ΠΈΡ… Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅ΠΌ ΠΏΠΎ строкС "admin". Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ нас Π½Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Username ΠΊΠ°ΠΊ Π² Seq, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ ΠΌΡ‹ Π±Π΅Ρ€Ρ‘ΠΌ ΠΈΠ· тСкста самого события.

Если Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ строку ΠΈΠ· поиска, Ρ‚ΠΎ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ: !="строка" - ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ НЕ.

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΏΠΎ рСгулярному Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ события ΠΏΠΎ рСгулярному Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ Π² Grafana, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ: |~`Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅`. Π•ΡΠ»ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ с использованиСм Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ: |~"Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅" - Ρ‚ΠΎ придётся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ экранированиС для \, Ρ‚.Π΅. ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ \w+, Π° \\w+. Π’Π°ΠΊΠΆΠ΅ Ссли ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ "", Ρ‚ΠΎ искомый тСкст подсвСчиваСтся Π² записях, Π½ΠΎ Ρ€ΠΎΠ²Π½ΠΎ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΏΠΎΠΊΠ° ΠΌΡ‹ Π½Π΅ Π½Π°Ρ‡Π½Ρ‘ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ конструкции Π²ΠΈΠ΄Π°: \w, \d, \s ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, Π»ΠΈΠ±ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ запрос Π² ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… ``. Π’ Grafana ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ синтаксис RE2, Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ Π½Ρ‘ΠΌ написано Ρ‚ΡƒΡ‚ - https://github.com/google/re2/wiki/Syntax.

Π”Π°Π²Π°ΠΉΡ‚Π΅ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π°ΠΉΠ΄Ρ‘ΠΌ события смСны пароля ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ:

{stream="stdout"} |~"Completed operation PUT: /user|changePass: true"

Π’ Π΄Π°Π½Π½ΠΎΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΌΡ‹ использовали ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π˜Π›Π˜ - |. Π’Π΅ΠΌ самым ΠΌΡ‹ Π½Π°ΠΉΠ΄Ρ‘ΠΌ всС записи содСрТащиС "Completed operation PUT: /user" ΠΈΠ»ΠΈ "changePass: true". На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ события Π² Grafana прСдставлСны мноТСством записСй. Π’.Π΅. событиС ΠΎ смСнС пароля Π±ΡƒΠ΄Π΅Ρ‚ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… записях ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

4. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… кСйсах


Начну с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ события создания, рСдактирования ΠΈ удалСния сущностСй ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ строкам:
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ - Completed operation POST
ИзмСнСниС - Completed operation PUT
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ - Completed operation DELETE

ПослС этого слСдуСт Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ сущности, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ : /user.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ всС события, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ рассмотрСны Π½ΠΈΠΆΠ΅, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ логирования Full для Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠ°ΠΊ: Identity server, Dashboard service, Dashboard viewer.

Бписок запросов для Seq


Π’Ρ…ΠΎΠ΄ Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ

"Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄"
Запрос ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Username = "ΠΈΠΌΡΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ", Π΄Π°Π±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ Π·Π°Ρ…ΠΎΠ΄ΠΈΠ» ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

/Completed operation POST: \/\buser\b/
Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΡ‚ΠΎ создал ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ testAdmin, пишСм Ρ‚Π°ΠΊ:
/Completed operation POST: \/\buser\b/ and Request.UserName = "testAdmin"
Π”Π°Π»Π΅Π΅ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… события смотрим UserFullName.

ИзмСнСниС пароля ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

RequestPath = "/api/user" && Request.changePass = true && Request.user.UserName = "testUser"
Π’Π°ΠΊ ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ, ΠΊΡ‚ΠΎ смСнил ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ testUser.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

/Completed operation DELETE: \/\buser\b/ && Request.UserName = "testUser2"

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ€ΠΎΠ»ΠΈ

"Completed operation POST: /role"

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ€ΠΎΠ»ΠΈ

"Completed operation DELETE: /role"

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€Π°Π² доступа Π½Π° ΠΏΠ°ΠΏΠΊΠΈ

"Completed operation PUT: /highLevelFolders"

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€Π°Π² доступа Π½Π° Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Ρ‹

"Completed operation PUT: /dashboard"

ИзмСнСниС "ΠžΠ±Ρ‰ΠΈΡ… настроСк"

"Completed operation PUT: /generalSettings"

ΠžΠ±Ρ‰Π΅Π΅ количСство просмотров Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Π°

select count(*) from stream where @Message like 'Done Handling GetDashboardAggregateRoot%' and Response.Result.Name = 'TEST'
Имя Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Π° Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ "TEST". НуТно ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ просмотры, ΠΊΠ°ΠΊ с Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, Ρ‚Π°ΠΊ ΠΈ с Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π°. Π’Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡Π΅ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π° просмотр считаСтся гСнСрация ΠΏΡ€Π΅Π²ΡŒΡŽ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Π°, Ρ‚Π°ΠΊΠΎΠ΅ событиС ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: UserFullName not like '%Preview Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€'.

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ список всСх просмотрСнных Π΄Π°ΡˆΠ±ΠΎΡ€Π΄ΠΎΠ²

select distinct(Response.Result.Name) from stream where @Message like 'Done Handling GetDashboardAggregateRoot%'
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ количСство Π΄Π°ΡˆΠ±ΠΎΡ€Π΄ΠΎΠ², для этого стоит distinct Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² count().

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ список всСх просмотрСнных Π΄Π°ΡˆΠ±ΠΎΡ€Π΄ΠΎΠ² с Python Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ

select distinct(Response.Result.Name) from stream where @Message like 'Done Handling GetDashboardAggregateRoot%' and Response.Result.Sheets[?].Widgets[?].DataSettings.DatasourceType = 'Python'

Бписок запросов для Grafana (Loki)


Π’Ρ…ΠΎΠ΄ Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ

{stream="stdout"} |~"Π£ΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄"
Π’Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π² случаС с Seq, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ - |~"Username: ..ΠΈΠΌΡΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ".

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

{stream="stdout"} !="Completed operation POST: /users" |~"Completed operation POST|UserFullName" |~"/user|Администратор"
ПослС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ "Show context" Π² ΠΊΠΎΠ½Ρ†Π΅ строки для изучСния записСй находящихся Π²Ρ‹ΡˆΠ΅ ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ΅.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

"Completed operation DELETE: /user"


На основании этих ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡŽ событий для своСго случая.


5. Π’ΠΈΠ΄Π΅ΠΎ - Π‘истСмы логирования Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Visiology