Обратите внимание, что RabbitMQ необходимо открыть 2 порта.
docker-compose.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
docker-compose up -d
докер запускается напрямую
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
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
запускать
docker-compose up -d
исследовать
Просмотр запущенных контейнеров
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.
cd /data/docker-prometheus
# В Scrapc_configs (конфигурация очистки): добавьте следующую конфигурацию:
cat >prometheus/prometheus.yml <<FOF
- job_name: 'rabbitmq_exporter'
static_configs:
- targets: ['localhost:9419']
labels:
instance: тестовый сервер
EOF
Перезагрузить конфигурацию
curl -x POST http://localhost:9090/-/reload
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 в каталоге правил.
Конфигурация Прометея
rule_files:
- "alert.yml"
- "rules/*.yml"
Поскольку это одна машина, триггер кластера не настроен.
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 относительно строгий, и ошибок в отступах быть не должно.
docker exec -it prometheus promtool check config /etc/prometheus/prometheus.yml
curl -x POST http://localhost:9090/-/reload
http://localhost:9090/alerts?search=
или:
http://localhost:9090/rules
grafana отображает данные, собранные Prometheus из redis_exporter
id :4279