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