Мы еще долго будем использовать APM в проекте для мониторинга состояния приложения, анализа производительности и т.д. Эти инструменты очень эффективны, и они не вторгаются в бизнес и их не нужно закапывать.
Однако есть некоторые требования, которые не могут быть выполнены с помощью мониторинга APM, например:Применяйте бизнес-метрики.
режим монитора
В настоящее время существует два способа сбора индикаторов: один «проталкивание», а другой «вытягивание»:
К представителям push относятся ElasticSearch, InfluxDB, OpenTSDB и т. д. Вам необходимо проталкивать индикаторы из программы в соответствующие приложения мониторинга, используя TCP, UDP и т. д., но если вы используете только TCP, то после зависания приложения мониторинга или узкое место, легко повлиять на само приложение, а при использовании UDP, хотя вам не нужно беспокоиться о мониторинге приложений, легко потерять данные.
Представитель pull, главный представитель — Prometheus, так что нам не придется беспокоиться о мониторинге состояния самого приложения. Кроме того, мониторинг можно добавить автоматически с помощью возможностей обнаружения сервисов, таких как DNS-SRV или Consul.
Конечно, InfluxDB плюс коллектор, или ES плюс metricbeat тоже могут стать «pull», а Prometheus плюс Push Gateway тоже могут стать «push».
Далее мы в основном представляем Прометея.
Prometheus
«Прометей» также является богом Греции, и значение «предвидения» должно быть значением наблюдения.
Как и k8s, он также разработан на основе принципов внутреннего применения Google и может рассматриваться как реализация внутренней системы мониторинга Google Borgmon.
Схема архитектуры выглядит следующим образом (из Prometheusофициальная документация):
Prometheus может вызвать интерфейс метрик каждого приложения из конфигурации или обнаружения службы для сбора данных, а затем сохранить их на жестком диске, а если это базовое приложение, такое как база данных, балансировщик нагрузки и т. д., вы можете установить Экспортеры в связанных сервисы для предоставления Интерфейс метрик подтянут Prometheus.
Собранные данные имеют два назначения: одно для сигнализации, а другое для визуализации.
Далее мы представим их один за другим.
Формат показателей
<metric name>{<label name>=<label value>, ...}
Каждая часть должна соответствовать соответствующему регулярному выражению
- metric name: [a-zA-Z:][a-zA-Z0-9:]*
- label name: [a-zA-Z0-9_]*
- значение метки: .* (т.е. без ограничений)
Следует отметить, что лучше всего использовать значения перечисления для значений меток, а не использовать неограниченные значения, такие как идентификатор пользователя, адрес электронной почты и т. д., иначе это будет потреблять много памяти и не соответствует смыслу индикатора коллекция.
Реализация интерфейса Метрики
Большинство языков предоставляют клиентов, таких как клиенты Node.jsprom-client:
npm install prom-client --save
В настоящее время этот клиент предоставляет полные функции, которые могут собирать данные в приложении, такие как
- Сколько пользователей вы зарегистрировали сегодня, сколько денег вы заработали, и вы можете их использовать
Counter
; - Память узла и изменения ЦП, вы можете использовать
Gause
; - Статистика времени отклика интерфейса API, вы можете использовать
Histogram
илиSummary
Когда за первым может следовать конкретное значение в процентах от второго в ответ на длину статистики;
Кстати, в этом пакете предусмотрена функция сбора данных по умолчанию, таких как индикаторы Node:
const promClient = require('prom-client');
promClient.collectDefaultMetrics({
timeout: 5000,
});
Вызовите полицию
Вы можете настроить соответствующие правила для сигналов тревоги в соответствии с потребностями бизнеса, а затем придет ключ.Вы устали от традиционных сигналов тревоги по SMS или электронной почте?
С одной стороны, когда возникают онлайн-проблемы, мы получаем большое количество тревожных сообщений, причем большая часть из них повторяется; есть важные тревожные сигналы, которые мы будем игнорировать.
AlertManager Prometheus предоставляет множество расширенных возможностей оповещения для решения этих проблем.
- Группировка тревог: Piece Alarm, когда появляется тревога, будет выдано только сообщение, чтобы сообщить вам, что база данных была зависена вверх, не используя 100 Push Bombs;
- Подавление тревоги: Очевидно, когда есть проблема с базой данных, у других приложений обязательно будут проблемы.В это время вам могут не понадобиться другие неактуальные тревожные текстовые сообщения.Эта функция будет вовремя уведомлять вас о действительно полезной информации;
- Тревожная тишина: Некоторые неважные тревоги можно полностью игнорировать, поэтому нет необходимости уведомлять;
В настоящее время метод уведомления о тревоге может быть через веб -ook, электронную почту и т. Д. Оценивается, что WeChat или Dingtalk также могут быть использованы. Я в настоящее время использую провину.
визуализация
Предпочтя курс Grafana, Prometheus решил отказаться от инструментов визуализации PromDash и сосредоточился на сборе и анализе данных мониторинга. Конфигурация Prometheus в Grafana тоже очень проста, после настроенного источника данных можно напрямую создать диаграмму.
Следует отметить, что вам нужно будет использовать Prometheus, посвященныйязык запросовДля настройки данных, если задействовано слишком много диаграмм, вам может понадобиться использовать шаблон Grafana:
- label_values(label): Набор значений метки в глобальном;
- label_values(metric, label): коллекция значений меток для метрики;
- metrics(metric): коллекция метрик регулярного выражения, возвращающая все совпадающие метрики;
- query_result(query): возвращает коллекцию запросов;
Ref
- Прометей.IO/docs/opera T…
- Прометей.IO/блог/2015/0…
- docs. Конечно же, включите его. org/features/big…
Оригинальная ссылка:GitHub.com/west-north/ был бы…
Этот документ принимаетАтрибуция – Некоммерческое использование – Share Alike (BY-NC-SA)Лицензия.