0

Azure Log Analytics (別名 OMS) は Kusto QL を使用します。Docker コンテナーから Log Analytics に IIS ログを送信し、次のクエリを使用してエントリを解析する予定です。

ContainerLog
| extend fields  = split(LogEntry, ' ')
| extend appname = tostring(fields[16])
| extend path = tostring(fields[4])

ここに私が手作業で解析した2つの異なるレコードがあります:

date       time     s-ip           cs-method  cs-uri-stem                     cs-uri-query     s-port   cs-username                c-ip           cs(User-Agent)                                                                  cs(Referer)                    sc-status  sc-substatus  sc-win32-status  time-taken   x-forwarded-for                  container-app
2019-11-29 17:37:49 ddd.dd.dd.ddd  GET        /ping.aspx                      -                80       -                          dd.dd.ddd.d    Go-http-client/1.1                                                              -                              200        0             0                12           dd.dd.ddd.d                      OurCustomValue  
2019-11-29 17:33:36 ddd.dd.dd.ddd  GET        /js/js_v4/jquery-functions.js   v=26.35.0.0      80       7vgnwjAzOsKcUpseaPykcQ--   dd.dd.ddd.d    Mozilla/5.0+(Windows+NT+10.0 +Win64 +x64 +rv:70.0)+Gecko/20100101+Firefox/70.0  https://site.domain.com/       200        0             0                14           dd.ddd.dd.dd:55001,+dd.dd.ddd.d  OurCustomValue  

問題は、「ユーザー エージェント」フィールドにスペースが含まれている可能性があり、パーサーが混乱して他のフィールドに分割される可能性があることです。したがって、User-Agent の後にリストされているフィールドのすべてのインデックスはオフになります。たとえば、2 番目のレコードの最後のフィールドは、インデックス 16 (0 から開始) ではなく、19 になります。

たとえば、フィールドの数またはタイプを定義することによって、これらのログを解析するより良い方法はありますか?

4

1 に答える 1