Назад | Перейти на главную страницу

Как отслеживать коды ошибок HTTP-ответа от nginx с помощью munin?

Я начинаю использовать Munin для мониторинга работающего сервера Nginx. Одна вещь, в которой меня особенно интересуют графики, - это количество ошибок - HTTP-ответы с кодами в диапазоне 50x. Мне интересно, если:

  1. Есть ли существующий плагин для этого?
  2. В качестве альтернативы, как лучше всего написать собственный плагин? Разбор журнала доступа?

Ну, такого животного не существовало, так что Я наколдовал это.

Вы найдете последний код в суть. Наслаждаться.

Мне неизвестны готовые решения OSS. Я лично написал такой плагин, но не могу поделиться кодом. Это два этапа:

  1. Парсер журнала для сбора свежей статистики (например, tail -f). Поскольку вы можете определить формат журнала Nginx, вы можете регистрировать желаемые значения, например код состояния, время восходящего запроса и т. д.
  2. Плагин Munin для передачи статистики в Munin.

Вам нужно будет разделить состояние между этими двумя частями. Есть несколько вариантов: в памяти (моей реализацией парсера журналов был демон, управляемый событиями, хранящий всю статистику в памяти); MongoDB; Redis; традиционный MySQL; Общая память; и т.п.

Так эта ссылка относится к плагинам nginx в репозитории munin. Не могу найти ничего очевидного, чтобы делать то, что вы хотите, или чего-либо в Интернете после (очень краткого) поиска.

Я написал пару плагинов munin, и они не такие уж и сложные. Вы должны уметь написать один, чтобы достичь того, чего хотите. Я бы просто подсчитал количество 50x ошибок в текущем журнале и вернул бы его как тип DERIVE с минимумом 0. Таким образом вы можете просто вернуть одно значение и позволить rrdtool работать, если оно увеличилось. Примечание. Это будет проблемой, если в конце дня вы скажете 130 ошибок 50x, а журнал будет повернут, и вы сразу получите 131 ошибку, график будет думать, что это значение 1.

Другой вариант - самостоятельно отслеживать счетчик по имени файла журнала и возвращать фактическое увеличение и сбрасывать его при ротации журнала.