Этот проект предоставляет комплексное решение для развертывания мониторинга Prometheus и Grafana.
- Обзор
- Предварительные требования
- Установка и развертывание
- Описание метрик дашборда
- Устранение неисправностей
Данный стек развертывает Fluentd (для сбора и обработки логов), Prometheus (для сбора метрик) и Grafana (для визуализации) на вашей хостовой машине. Fluentd будет настроен на экспорт своих метрик на порт 24231. Grafana предварительно настроена на автоматическое обнаружение источника данных Prometheus и импорт подробного дашборда Fluentd с использованием механизма Grafana Provisioning.
- Docker и Docker Compose (v3.8+): Должны быть установлены на машине развертывания.
- Ansible:
- Добавьте целевой хост для развертывания в файл
hosts.yml. - Настройте свой SSH-ключ и имя пользователя в
ansible.cfgдля безопасного доступа к хосту.
- Добавьте целевой хост для развертывания в файл
- Ansible Playbook (
playbook.ymlи связанные роли): Отвечает за установку и настройку Fluentd на вашей хостовой машине. Fluentd должен быть сконфигурирован для экспорта метрик на24231/tcp. prometheus/prometheus.yml: Конфигурирует Prometheus для сбора метрик Fluentd.grafana/provisioning/datasources/datasource.yaml: Определяет источник данных Prometheus для Grafana.grafana/provisioning/dashboards/dashboards.yaml: Инструктирует Grafana загружать дашборды из указанного пути.grafana/dashboards/fluentd-output-metrics.json: Сам JSON-файл дашборда Grafana. Убедитесь, что все ссылки на источник данных внутри этого файла используютname: "Prometheus".docker-compose.yml: Оркестрирует контейнеры Prometheus и Grafana.
- Подготовьте структуру проекта и заполните все файлы, как описано выше.
- Выполните Ansible Playbook для развертывания и настройки Fluentd на вашей хостовой машине.
ansible-playbook playbook.yml
- Откройте Grafana в вашем веб-браузере по адресу:
http://<YOUR-IP>:80.- Используйте учетные данные по умолчанию: имя пользователя
secure-admin/ парольsecure-admin.
- Используйте учетные данные по умолчанию: имя пользователя
- Перейдите в раздел Dashboards (иконка с четырьмя квадратами в левом меню), чтобы найти "Fluentd Output Metrics Dashboard".
Дашборд "Fluentd Output Metrics Dashboard" предоставляет ключевую информацию о производительности плагина Fluentd.
fluentd_output_status_emit_records: Количество успешно отправленных записей в секунду.fluentd_output_status_num_errors: Количество ошибок в секунду, возникших при записи логов.fluentd_output_status_buffer_total_bytes: Текущий общий размер (в байтах) данных, ожидающих записи в буферах.fluentd_output_status_buffer_queue_length: Текущее количество буферных чанков в очереди.fluentd_output_status_buffer_available_space_ratio: Процент свободного места в буфере.fluentd_output_status_retry_count: Частота повторных попыток после неудачных записей.fluentd_output_status_emit_count: Общее количество успешных отправлений данных.fluentd_output_status_write_count: Общее количество успешных записей данных в буфер.fluentd_output_status_rollback_count: Общее количество откатов операций записи (критично).fluentd_output_status_flush_time_count: Общее время (в секундах), затраченное на операции сброса буферов.fluentd_output_status_slow_flush_count: Общее количество медленных операций сброса буфера.fluentd_output_status_retry_wait: Текущее время ожидания (в секундах) перед повторной попыткой.fluentd_output_status_buffer_stage_length: Количество чанков в "stage" области буфера.fluentd_output_status_buffer_stage_byte_size: Размер (в байтах) данных в "stage" области буфера.fluentd_output_status_queue_byte_size: Размер (в байтах) данных в "queue" области буфера.fluentd_output_status_buffer_newest_timekey: Временная метка самой новой записи в буфере.fluentd_output_status_buffer_oldest_timekey: Временная метка самой старой записи в буфере.
- Метрики Fluentd не поступают в Prometheus:
- Проверьте статус службы Fluentd на хостовой машине (
sudo systemctl status fluentd). - Убедитесь, что Fluentd прослушивает порт
24231(например,sudo ss -tunl | grep 24231). - Проверьте статус целей Prometheus по адресу
http://<YOUR-IP>:9090/targets; цельfluentdдолжна бытьUP. - Проверьте логи контейнера Prometheus (
docker logs prometheus). - Если Prometheus не может подключиться к Fluentd, убедитесь, что ваша версия Docker Engine поддерживает
host.docker.internalна Linux. В качестве альтернативы установитеnetwork_mode: hostдля контейнера Prometheus вdocker-compose.ymlи используйтеtargets: ['localhost:24231']вprometheus.yml.
- Проверьте статус службы Fluentd на хостовой машине (
- Дашборд Grafana не отображается или не содержит данных:
- Проверьте логи контейнера Grafana (
docker logs grafana). - Убедитесь, что файл
grafana/dashboards/fluentd-output-metrics.jsonкорректен и все ссылки на источник данных внутри него используютname: "Prometheus", что соответствует имени, указанному вgrafana/provisioning/datasources/datasource.yaml. - Убедитесь, что provisioning-файлы Grafana (
datasources.yaml,dashboards.yaml) корректно смонтированы в контейнер Grafana (проверьте секциюvolumesвdocker-compose.yml).
- Проверьте логи контейнера Grafana (