Практическое задание

Эта задача — шаг 13 курса «Логи: разбор и обслуживание»

Метрики уровней из лога воркера

средне~10 мин

В /var/log/worker/worker.log строки вида ВРЕМЯ УРОВЕНЬ текст, уровень — второе поле: INFO, WARN или ERROR. Посчитай строки каждого уровня и запиши в /root/worker_levels.prom три метрики Prometheus: worker_log_events_total{severity="info"} N, то же для warn и error (значение лейбла — строчными).

Что потренируешь:
  • prometheus
  • awk
  • ассоциативный массив
  • tolower
  • лейблы

Разбор темы

Счётчики Prometheus в текстовом формате — строка имя{лейбл="значение"} число; один и тот же worker_log_events_total с разными severity — разные временные ряды. Подсчёт по значению поля — ассоциативный массив awk, где ключ — само поле. Подвох логов в том, что ключевое слово часто встречается и в тексте («retry after ERROR from upstream»), поэтому поиск подстроки по всей строке завышает счёт: надёжнее смотреть на конкретное поле. Значения лейблов принято писать строчными, а приводить регистр лучше явно, а не руками.

Что проверяется

  1. error = 2
  2. warn = 3, info = 6

Как это выглядит