Программа с открытым исходным кодом для организации дашбордов и уведомлений по результатам мониторинга компьютерных систем. Имеет очень гибкую настройку выводимых данных и может использоваться с большим количеством различных баз данных. Сама по себе не является базой данных и предназначена только для вывода и анализа.
Официальный сайт: Grafana: The open observability platform | Grafana Labs
Пример docker compose файла:
services:
influxdb:
image: influxdb:latest
container_name: influxdb
restart: always
ports:
- 8086:8086
volumes:
- ./influxdb/data:/var/lib/influxdb2
- ./influxdb/config:/etc/influxdb2
networks:
- monitoring
labels:
org.label-schema.group: monitoring
grafana:
image: grafana/grafana:latest
container_name: grafana-server
restart: always
depends_on:
- influxdb
links:
- influxdb
ports:
- 3000:3000
volumes:
- grafana_data:/var/lib/grafana
- ./grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards
- ./grafana/provisioning/datasources:/etc/grafana/provisioning/datasources
environment:
- GF_SERVER_ROOT_URL=${GF_SERVER_ROOT_URL}
- GF_AUTH_GENERIC_OAUTH_ENABLED=false
- GF_AUTH_GENERIC_OAUTH_NAME=${GF_AUTH_GENERIC_OAUTH_NAME}
- GF_AUTH_GENERIC_OAUTH_CLIENT_ID=${GF_AUTH_GENERIC_OAUTH_CLIENT_ID}
- GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET=${GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET}
- GF_AUTH_GENERIC_OAUTH_SCOPES=${GF_AUTH_GENERIC_OAUTH_SCOPES}
- GF_AUTH_GENERIC_OAUTH_AUTH_URL=${GF_AUTH_GENERIC_OAUTH_AUTH_URL}
- GF_AUTH_GENERIC_OAUTH_TOKEN_URL=${GF_AUTH_GENERIC_OAUTH_TOKEN_URL}
- GF_AUTH_GENERIC_OAUTH_API_URL=${GF_AUTH_GENERIC_OAUTH_API_URL}
- GF_AUTH_SIGNOUT_REDIRECT_URL=${GF_AUTH_SIGNOUT_REDIRECT_URL}
- GF_AUTH_OAUTH_AUTO_LOGIN=false
- GF_AUTH_GENERIC_OAUTH_ROLE_ATTRIBUTE_PATH="contains(groups, 'Grafana
Admins') && 'Admin' || contains(groups, 'Grafana Editors') && 'Editor'
|| 'Viewer'"
networks:
- monitoring
labels:
org.label-schema.group: monitoring
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- ./prometheus:/etc/prometheus
- prometheus_data:/prometheus
ports:
- 9090:9090
command:
- --config.file=/etc/prometheus/prometheus.yml
- --storage.tsdb.path=/prometheus
- --web.console.libraries=/etc/prometheus/console_libraries
- --web.console.templates=/etc/prometheus/consoles
- --storage.tsdb.retention.time=15d
- --storage.tsdb.retention.size=10GB
- --web.enable-lifecycle
restart: unless-stopped
networks:
- monitoring
labels:
org.label-schema.group: monitoring
nodeexporter:
image: prom/node-exporter:latest
container_name: nodeexporter
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- --path.procfs=/host/proc
- --path.rootfs=/rootfs
- --path.sysfs=/host/sys
- --collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)
restart: unless-stopped
ports:
- 9100:9100
expose:
- 9100
networks:
- monitoring
labels:
org.label-schema.group: monitoring
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
container_name: cadvisor
privileged: true
devices:
- /dev/kmsg:/dev/kmsg
volumes:
- /:/rootfs:ro
- /var/run:/var/run:ro
- /sys:/sys:ro
- /var/lib/docker:/var/lib/docker:ro
- /cgroup:/cgroup:ro #doesn't work on MacOS only for Linux
restart: unless-stopped
ports:
- 8090:8080
networks:
- monitoring
labels:
org.label-schema.group: monitoring
pushgateway:
image: prom/pushgateway:latest
container_name: pushgateway
restart: unless-stopped
ports:
- 9091:9091
networks:
- monitoring
labels:
org.label-schema.group: monitoring
volumes:
grafana_data: {}
prometheus_data: {}
networks:
monitoring:
name: monitoring
driver: bridge
[!note]
Метка используется для отделения стека мониторинга в панелях мониторингаlabels: org.label-schema.group: monitoring
type: note
tags:
aliases:
data: 2024-09-24 22:18
modified: 2024-09-24T23:47:31+03:00
dg-publish: true
Основным преимуществом настройки уведомлений из Grafana является агрегация нескольких источников данных. Можно построить запрос и уведомления агрегируя сразу данные из [[Self-hosting. InfluxDB|InfluxDB]] и [[Self-hosting. Prometheus|Prometheus]].
Основным минусом является достаточно сложная и путанная настройка уведомлений и не очень понятная документация.
При создании уведомлений можно применять шаблоны составленные по [[Работа с шаблонами Grafana Alert|правилам]].
Основной порядок настройки уведомлений:
- Создание события уведомления
Alert rule. Событие может быть создано из панели или напрямую в интерфейсе. - Задать название событию.
- Добавить запрос данных из источника. Если была выбрана конкретная панель для создания используются запрос из панели (надо скорректировать отборы).
[!bug] Ограничение
Судя по всему нет возможности на прямую соединить два разных запроса из разных источников в пост обработке.
- Настройка пост обработки. Не обязательно можно сразу использовать результат запроса.
- Блок
Reduceиспользуется для сокращения запроса до одного значения на ряд. - Блок
Thresholdустанавливает правила по которым формируется уведомления например значение больше N.
- Блок
- Установить источник уведомления. У одного из блоков должно быть прожато
Set as alert conditionэтот блок будет отвечать за вызов уведомления.
- Настройка проверки условий
- Для настройки надо создать папку
- В папке надо создать или выбрать группу. В группе устанавливается как часто будет выполняться проверка данных на вызов события
Evaluation interval. - Установить
Pending periodэто время которое допускается срабатывания события без отправки уведомления. Грубо говоря задержка для перекрытия всплесков. Может быть установлено только кратноEvaluation interval. - Для некоторых запросов важно настроить поведение когда нет данных в запросе в пункте
Alert state if no data or all values are nullчто бы избежать лишних срабатываний.
- Установка правил уведомления.
- Можно установить конкретную точку уведомления (не рекомендуется)
- Правильно установить метку по которой будет выполняться вызов уведомления.
- Задание описания и данных уведомления
- В основном я использую блок
Descriptionи там формирую [[Работа с шаблонами Grafana Alert#Шаблоны для сообщений|шаблонами]] уведомления для отправки. - В пункте
Dashboard and panelможно сменить привязку к конкретной панель. Эту панель можно будет вывести в сообщении и возле нее на дашборде появится значок уведомления и контроля события. - Дополнительные данные можно передать через
Custom annotationкоторые можно использовать в [[Работа с шаблонами Grafana Alert#Шаблоны для сообщений|шаблоне]].
- В основном я использую блок
- Основной этап создания события уведомления закончен.
Настройка отправителей уведомлений:
Настройка отправки сообщений выполняется в разделе Contact points тут же определяются шаблоны сообщений в разделе Notification Templates.
Contact Points может быть использован для любого количества правил уведомления.
Задание шаблона сообщения выполняется в конкретной Contact Points в пункте Message Template:.
У шаблона обязательно должно быть задан заголовок в формате
{{ define "Уведомление о перегреве" }}
...
{{ end }}
При создании шаблона можно воспользоваться подбором данных уведомлений для проверки работы шаблона.
Список будет доступен только из тех уведомлений которые активны в текущий момент времени.
Настройка правил уведомления:
Настройка правил по которым выполняется отправка уведомлений задается в разделе Notification policies основное разделение выполняется по меткам установленных при создании уведомления в пункте 7.
Matching labels - выполняет отбор уведомлений для применения правил;Repeat interval - переопределяет правила повторной отправки уведомлений;Mute timings - отвечает за правила когда уведомления не отправляются, правила создаются в разделе Notification policies → Mute Timings.
Пример правил настройки событий: [[Пример настроенных уведомлений для Grafana]]
Настроенные правила уведомления.json (17,8 КБ)
[!urls]- Упоминания:
- [[Self-hosting. Grafana|Grafana]]
[!urls]- Упоминания:
- [[Self-hosting программы]]
- [[Сервер Monitoring]]
- [[Мониторинг домашней и серверной инфраструктуры на базе InfluxDB и Grafana]]
- [[Мониторинг proxmox с использованием InfluxDB v2 и Grafana]]
- [[Мониторинг роутеров openwrt в influxdb v2 и grafana]]
- [[Мониторинг состояния роутеров keenetic в influxdb v2 и grafanа]]
[!description]- Примечание
Примечание:: Визуализация мониторинга и статистики







