Настройка мониторинга с помощью Docker-Compose (серия 3 деталей)
В этом посте вы узнаете, как настроить Prometheus в контейнере Docker.
Короче говоря: что такое Prometheus?
Прометей является приложением мониторинга с открытым исходным кодом. Он царапает HTTP -конечные точки для сбора метрик, выявленных в простом текстовом формате.
Например, ваше веб -приложение может разоблачить метрическую
http_server_requests_seconds_count{exception="None", method="GET",outcome="SUCCESS",status="200",uri="/actuator/health"} 435
Что означает, что конечная точка /Привод/здоровье
был успешно запросил 435 раз с помощью запроса GET.
Прометей также может создавать оповещения, если показатель превышает порог, например, Если ваша конечная точка вернулась более чем в сто раз больше кода состояния 500 за последние 5 минут.
Конфигурация
Чтобы настроить Prometheus, мы создаем три файла:
- Prometheus/prometheus.yml — фактическая конфигурация Prometheus
- Prometheus/alert.yml — предупреждения, которые вы хотите Прометей, чтобы проверить
- Docker-Compose.yml
Prometheus/prometheus.yml
Добавьте следующее в Prometheus/prometheus.yml
global: scrape_interval: 30s scrape_timeout: 10s rule_files: - alert.yml scrape_configs: - job_name: services metrics_path: /metrics static_configs: - targets: - 'prometheus:9090' - 'idonotexists:564'
scrape_configs
Скажите Прометею, где находятся ваши приложения. Здесь мы используем static_configs
жесткий код некоторых конечных точек. Первый-Прометея (это имя службы в саме docker-compose.yml
), второе-для демонстрационных целей. Это конечная точка, которая всегда работает.
rule_files
сообщает Прометею, где искать правила оповещения. Мы приходим к этому через мгновение.
scrape_interval
Определяет, как часто проверять наличие новых показателей метрики.
Если царапина занимает больше времени, чем scrape_timeout
(например, медленная сеть), Прометеус отменит скрас.
Prometheus/alert.yml
Этот файл содержит правила, которые Прометею периодически оценивает. Вставьте это в файл:
groups: - name: DemoAlerts rules: - alert: InstanceDown expr: for: 5m
вверх
это встроенный показатель от Прометея. Он возвращает ноль, если услуги не были достигнуты в последнем царапине.
{job = "services"}
фильтруют результаты вверх
Содержать только метрики с тегом оказание услуг
. Этот тег добавляется в наши метрики, потому что мы определили это как имя задания в Prometheus.yml
Docker-Compose.yml
Наконец, мы хотим запустить Prometheus. Поместите это в свой Docker-compose.yml
:
version: '3' services: prometheus: image: prom/prometheus:v2.21.0 ports: - 9000:9090 volumes: - ./prometheus:/etc/prometheus - prometheus-data:/prometheus command: --web.enable-lifecycle --config.file=/etc/prometheus/prometheus.yml volumes: prometheus-data:
Том ./prometheus:/etc/Прометей
наше Прометей
Папка в нужном месте для изображения, чтобы забрать нашу конфигурацию.
Prometheus-data:/prometheus
используется для хранения скрещенных данных, чтобы они были доступны после перезапуска.
Команда:-web.enable-lifecycle-config.file =/etc/prometheus/prometheus.yml
необязательно. Если вы используете -web.enable-lifecycle
Вы можете перезагрузить файлы конфигурации (например, правила) без перезапуска Prometheus:
curl -X POST http://localhost:9000/-/reload
Если вы измените команду, вы переопределяете по умолчанию изображения и должны включать -config.file =/etc/prometheus/prometheus.yml
Анкет
Начать Прометея.
Наконец, начните Прометея с:
docker-compose up -d
и открыть http://localhost: 9000
в вашем браузере.
Вы увидите ui Prometheus, где вы сможете ввести некоторые специальные запросы на свой
Как и ожидалось, это говорит вам, что ваш Prometheus встал, а другая услуга — нет.
Если вы пойдете в Оповещения
Вы увидите, что наше предупреждение находится на рассмотрении (или уже стреляет):
Смотрите полный исходный код на GitHub
Настройка мониторинга с помощью Docker-Compose (серия 3 деталей)
Оригинал: «https://dev.to/ablx/minimal-prometheus-setup-with-docker-compose-56mp»