Prometheus на практике: мониторинг RabbitMQ с помощью Prometheus
Prometheus на практике: мониторинг RabbitMQ с помощью Prometheus

Prometheus на практике: мониторинг RabbitMQ с помощью Prometheus

Подготовьте среду

docker-compose установить RabbitMQ

Обратите внимание, что RabbitMQ необходимо открыть 2 порта.

docker-compose.yaml

Язык кода:yaml
копировать
version: '3'
services:
   rabbitmq:
 	image: rabbitmq:3.7.15-management
 	container_name: rabbitmq
 	 restart: always
 	 volumes:
 	 	- /data/rabbitmq/data: /var/lib/rabbitmq
 	 	- /data/rabbitmq/log: /var/log/rabbitmq
 	 port:
 	 - 5672:5672
 	 - 15672:15672
Язык кода:shell
копировать
docker-compose up -d

Монитор RabbitMQ

экспортер установки Docker

докер запускается напрямую

Язык кода:shell
копировать
docker run -d  -p 9419:9419  --name rabbitmq_exporter -e RABBIT_URL=http://localhost:15672 -e RABBIT_USER=guest -e RABBIT_PASSWORD=guest kbudde/rabbitmq_exporter

метод docker-compose

Язык кода:shell
копировать
cat >docker-compose.yaml <<FOF
version: '3.3'
services:
 rabbitmq_exproter:
 	image: kbudde/rabbitmq-exporter
 	container_name: rabbitmq_exporter
 	restart: always
 	environment:
 		RABBIT_URL: "localhost:15672"
 		RABBIT_USER: "guest"
 		REDIS_PASSWORD: "guest"
 		PUBLISH_PORT: "9419"
 		OUTPUT_FORMAT: "JSON"
 	port:
 	 - "9419:9419"
EOF

запускать

Язык кода:shell
копировать
docker-compose up -d

исследовать

Язык кода:shell
копировать
Просмотр запущенных контейнеров
docker ps

или:

Просмотрите журнал работы контейнера redis_exporter.
docker logs -f rabbitmq_exporter

Объяснение параметра

Environment variable

ценить

описывать

RABBIT_URL

localhost:15672

URL-адрес плагина управления RabbitMQ (должен начинаться с http(2))

RABBIT_USER

guest

Имя пользователя плагина управления RabbitMQ

REDIS_PASSWORD

guest

Пароль для плагина управления RabbitMQ

OUTPUT_FORMAT

JSON

Выходной формат

PUBLISH_PORT

9419

Рабочий порт (прослушивающий порт)

адрес метрики

После установки Exporter будет доступен сервис, заканчивающийся на /metrics.

имя

адрес

rabbitmq_exporter

http://localhost:9419/metrics

Конфигурация Прометея

Настройте Prometheus для сбора (извлечения) образцов данных мониторинга nginx_exporter.

Язык кода:shell
копировать
cd /data/docker-prometheus

# В Scrapc_configs (конфигурация очистки): добавьте следующую конфигурацию:
cat >prometheus/prometheus.yml <<FOF
 - job_name: 'rabbitmq_exporter'
   static_configs:
   - targets: ['localhost:9419']
   	 labels:
   	 	instance: тестовый сервер 
EOF

Перезагрузить конфигурацию

Язык кода:shell
копировать
curl -x POST http://localhost:9090/-/reload

исследовать

Часто используемые индикаторы мониторинга RabbitMQ

Язык кода:txt
копировать
rabbitmq_queue_messages_unacknowledged_global			Общее количество неподтвержденных сообщений в очереди (сообщений, которые не были использованы)
rabbitmq_node_disk_free_limit							Использовать размер диска
rabbitmq_node_disk_free									Общий размер диска
	
rabbitmq_node_mem_used									Использовать размер памяти
rabbitmq_node_mem_limit									Общий объем памяти

rabbitmq_sockets_used	 								Количество используемых розеток		
rabbitmq_sockets_available	 							Общее количество доступных сокетов
	
rabbitmq_fd_used										Количество символов, используемых в файле озаписи
rabbitmq_fd_available									Общее количество доступных файлов для записи символов

Конфигурация триггера

Поскольку все предыдущие триггеры были написаны в одном файле yml, то есть alert.yam, его со временем станет сложно поддерживать, поскольку позже будет настроено все больше и больше триггеров. Здесь мы позволяем ему читать все файлы yml в каталоге правил.

Конфигурация Прометея

Язык кода:shell
копировать
rule_files:
	- "alert.yml"
	- "rules/*.yml"

Настройка триггера RabbitMQ

Поскольку это одна машина, триггер кластера не настроен.

Язык кода:shell
копировать
cat >prometheus/rules/rabbitmq.yml <<FOF
groups:
- name: Rabbitmq
	rules:
    - alert: RabbitMQDown
      expr: rabbitmq_up != 1
      labels:
        severity: High
      annotations:
          summary: "Rabbitmq Вниз, экземпляр: {{$labels.instance }}"
          description: «Rabbitmq_exporter не может подключиться к RabbitMQ!»
    - alert: Rabbitmq имеет неподтвержденные сообщения
      expr: rabbitmq_queue_messages_unacknowledged_global > 0
      for: 1m
      labels:
        severity: critical
      annotations:
          summary: «В RabbitMQ есть неподтвержденные сообщения, экземпляр: {{$labels.instance }}"
          description: "RabbitmqНеподтвержденное сообщение>0текущийценитьдля:{{ $value }}"
    - alert: RabbitMQ сигнализирует о нехватке свободного места на диске
      expr: rabbitmq_node_disk_free_alarm !=0
      for: 0m
      labels:
        severity: critical
      annotations:
          summary: «В RabbitMQ недостаточно свободного места на диске, экземпляр: {{$labels.instance }}"
          description: «В RabbitMQ недостаточно свободного места на диске, пожалуйста, учтите»
    - alert: RabbitMQ: сигнал недостаточной доступной памяти
      expr: rabbitmq_sockets_used / rabbitmq_sockets_available * 100 >60
      for: 0m
      labels:
        severity: critical
      annotations:
          summary: «У RabbitMQ недостаточно доступной памяти, экземпляр: {{$labels.instance }}"
          description: «У RabbitMQ недостаточно доступной памяти, пожалуйста, обратите внимание»
    - alert: Номер соединения RabbitMQ_socket используется слишком высокий сигнал тревоги
      expr: rabbitmq_sockets_used / rabbitmq_sockets_available * 100 >60
      for: 0m
      labels:
        severity: critical
      annotations:
          summary: «Использование RabbitMQ_socket слишком велико, пример: {{$labels.instance }}"
          description: "RabbitMQ_socketиспользовать>60%текущийценитьдля::{{ $value }}"
    - alert: Файл RabbitMQ описать использование символов, слишком высокий уровень предупреждения
      expr: rabbitmq_fd_used / rabbitmq_fd_available * 100 > 60
      for: 0m
      labels:
        severity: critical
      annotations:
          summary: «Файл RaiibitMQ описывает использование символов слишком много, пример: {{$labels.instance }}"
          description: "RaiibitMQдокументописывать符использовать>60%,текущийценитьдля:{{ $value }}"
  		
EOF

Обязательно помните, что вам необходимо внимательно прочитать синтаксис yaml. Лучше всего зайти на веб-сайт, который проверяет синтаксис yaml в Интернете. Синтаксис yaml относительно строгий, и ошибок в отступах быть не должно.

исследовать Конфигурация

Язык кода:shell
копировать
docker exec -it prometheus promtool check config /etc/prometheus/prometheus.yml

Перезагрузить конфигурацию

Язык кода:shell
копировать
curl -x POST http://localhost:9090/-/reload

исследовать

http://localhost:9090/alerts?search=

или:

http://localhost:9090/rules

dashboard

grafana отображает данные, собранные Prometheus из redis_exporter

id :4279

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода