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
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose