Помогите с идеями как лучше распарсить лог нжинкса в случае хождения по апстримам
Прилетать может в подобных вариациях:
В зависимости от количества апстримов и с разделителями ", " или " : "
Формат аля csv в данном случае не принципиален, принципиально понять суть как лучше.
Моя идея в том чтобы ловить последний апстрим как upstream (айпи, статус и время коннект респонс), а всё что до последнего апстрима запихивать в badupstream просто текстом.
Может у кого-то был опыт?
В идеале, конечно, если бы nginx отправлял в таких случаях отдельными полями, тогда бы не было вопросов - включил json и всё, а так приходится выкручиваться ибо не люблю _grokparsefailure
Вот примерные вариации логов ("upstream_addr"; "upstream_status"; "upstream_connect_time"; "upstream_response_time")
"-"; "-"; "- sec"; "- sec";
"-, -"; "-, -"; "-, - sec"; "-, - sec";
"- : -"; "- : -"; "- : - sec"; "- : - sec";
"-, - : -"; "-, - : -"; "-, - : - sec"; "- : - sec";
"10.10.10.23:80"; "200"; "2.953 sec"; "2.953 sec";
"10.10.10.23:80, 10.10.10.24:80"; "502, -"; "2.953, - sec"; "2.953, - sec";
"10.10.10.23:80 : 10.10.10.24:80"; "502 : -"; "2.953 : - sec"; "2.953 : - sec";
"10.10.10.23:80, 10.10.10.24:80 : 10.10.10.25:80"; "502, 502 : -"; "2.953, 1.000 : - sec"; "2.953, 2.000 : - sec";
"10.10.10.23:80, 10.10.10.24:80 : 10.10.10.25:80"; "502, 502 : 200"; "2.953, 1.000 : 0.001 sec"; "2.953, 2.000 : 0.002 sec";
"10.10.10.23:80, 10.10.10.24:80, 10.10.10.25:80"; "502, 502, -"; "2.953, 1.000, - sec"; "2.953, 2.000, - sec";
"10.10.10.23:80, 10.10.10.24:80, 10.10.10.25:80"; "502, 502, 200"; "2.953, 1.000, 0.001 sec"; "2.953, 2.000, 0.002 sec";