grafana
Ansible Роль :rainbow: :bar_chart: Grafana
Содержание
- Поддерживаемые платформы
- Требования
- Переменные роли
- Зависимости
- Пример плейбука
- Лицензия
- Информация об авторе
Ansible роль, которая устанавливает и настраивает Grafana: платформу для аналитики и мониторинга.
Поддерживаемые платформы:
* Debian
* Redhat(CentOS/Fedora)
* Ubuntu
Требования
Требуется утилита unzip/gtar
, установленная на целевом хосте. Для деталей смотрите заметки модуля ansible unarchive
здесь. Кроме того, из-за использования функции provisioning
, введенной в версии 5.0, требуются версии >= 5.0 Grafana для корректной работы.
Переменные роли
Переменные доступны и организованы согласно следующим этапам установки и настройки программного обеспечения и машины:
- установка
- конфигурация
- запуск
- удаление
Установка
grafana
может быть установлена с использованием сжатых архивов (.tar
, .zip
), а также пакетов дистрибутивов DEB и RPM, скачанных и распакованных из различных источников.
Следующие переменные могут быть настроены для управления различными аспектами процесса установки, включая версию программного обеспечения и местоположение источника бинарных файлов до директории установки, где они будут храниться:
grafana_user: <имя-пользователя-сервиса>
(по умолчанию: grafana)
grafana_group: <имя-группы-сервиса>
(по умолчанию: grafana)
- выделенный пользователь и группа службы, используемые
grafana
для разделения привилегий (подробности см. здесь)
install_type: <package | archive>
(по умолчанию: archive)
package: поддерживается дистрибуциями Debian и Redhat, установка пакета Grafana загружает указанный пакет из соответствующего репозитория управления пакетами.
- Обратите внимание, что директория установки определяется системой управления пакетами и по умолчанию расположена под
/usr/{sbin,lib, share}
для всех дистрибутивов.
- Обратите внимание, что директория установки определяется системой управления пакетами и по умолчанию расположена под
archive: совместима с форматами tar и zip, архивированные бинарные файлы могут быть получены из локальных и удаленных сжатых архивов либо из официального индекса релизов, либо из тех, которые были сгенерированы из разработок/настраиваемых источников.
install_dir: </путь/к/директории/установки>
(по умолчанию: /opt/grafana
)
- путь на целевом хосте, куда должны быть распакованы бинарные файлы
grafana
.
archive_url: <путь-или-url-к-архиву>
(по умолчанию: см. defaults/main.yml
)
- адрес сжатого tar или zip архива, содержащего бинарные файлы
grafana
. Этот метод технически поддерживает установку любой доступной версииgrafana
. Ссылки на официальные версии можно найти здесь.
archive_checksum: <путь-или-url-к-хешу>
(по умолчанию: см. defaults/main.yml
)
- адрес файла с хешем для проверки целостности данных указанного архива
grafana
. Хотя это рекомендуется и обычно считается хорошей практикой, указание хеша не является обязательным и может быть отключено, если значение будет пустой строкой (''
).
checksum_format: <строка>
(по умолчанию: см. sha256
)
- хеш-алгоритм, используемый для проверки файлов, связанного с указанным хешем архива. Подробнее о хешах/криптографических хешах смотрите здесь.
package_url: <путь-или-url-к-пакету>
(по умолчанию: см. defaults/main.yml
)
- адрес файла debian(DEB) или RPM пакета, содержащего бинарные файлы
grafana
. Ссылки на официальные версии можно найти здесь.
package_checksum: <путь-или-url-к-хешу>
(по умолчанию: см. defaults/main.yml
)
- адрес файла с хешем для проверки целостности данных указанного пакета
grafana
. Хотя это рекомендуется и обычно считается хорошей практикой, указание хеша не является обязательным и может быть отключено, если значение будет пустой строкой (''
).
Конфигурация
С помощью этой роли настройка установки grafana
организована согласно следующим компонентам:
- конфигурация сервиса grafana (
grafana.ini
) - подготовка источников данных (
provisioning/datasources - *.[json|yml]
) - подготовка дашбордов (
provisioning/dashboards - *.[json|yml]
) - настройка уведомителей (
provisioning/notifiers - [json|yml]
)
Каждая конфигурация может быть выражена в следующих переменных для настройки содержимого и параметров назначенных конфигурационных файлов:
config_dir: </путь/к/директории/конфигурации>
(по умолчанию: {{ install_dir }}
)
- путь на целевом хосте, где должен быть создан файл конфигурации
grafana
provision_configs: <['datasources', 'dashboards' и/или 'notifiers']>
(по умолчанию: [])
- список компонентов подготовки Grafana для настройки. Подробности см. здесь для получения дополнительных сведений.
Конфигурация сервиса Grafana
Конфигурация сервиса Grafana содержится в INI файле, grafana.ini по умолчанию, который определяет набор поведения службы, организованных по секциям, представляющим общую администрацию и различные аспекты поставщика контента для сервиса Grafana.
Эти секции и настройки могут быть выражены в хеше grafana_config
, ключом которого будет секция конфигурации, а значениями будут словари, представляющие спецификации секций конфигурации (например, путь к файлу базы данных sqlite3 — активирован по умолчанию). Ниже представлено обобщение и примеры конфигураций каждой секции для справки.
:paths
[grafana_config:] path: <ключ: значение,...>
(по умолчанию: см. документацию)
- указывает параметры, связанные с тем, где Grafana хранит артефакты и переменные данные
grafana_config:
# секция [paths]
paths:
# параметр 1 - путь к базе данных sqlite
data: /mnt/data/grafana
# параметр 2 - путь для хранения логов
logs: /mnt/logs/grafana
[grafana_config:] server: <ключ: значение,...>
(по умолчанию: см. документацию)
- указывает параметры, связанные с тем, как Grafana взаимодействует через сеть
grafana_config:
# секция [server]
server:
http_addr: 127.0.0.1
http_port: 3030
:database
[grafana_config:] database: <ключ: значение,...>
(по умолчанию: см. документацию)
- указывает параметры, контролирующие, как grafana взаимодействует с одним из имеющихся типов бэкэнд-хранения данных (т.е. mysql, postgres и sqlite)
grafana_config:
# секция [database]
database:
type: mysql
host: 127.0.0.1:3306
name: grafana-test
user: mysql-admin
password: PASSWORD
:remote_cache
[grafana_config:] remote_cache: <ключ: значение,...>
(по умолчанию: см. документацию)
- указывает параметры, контролирующие, как grafana взаимодействует с одним из имеющихся типов удаленного кэша (т.е. redis, memcached и база данных)
grafana_config:
# секция [remote_cache]
remote_cache:
type: redis
connstr: addr=127.0.0.1:6379,pool_size=100,db=0,ssl=false
:security
[grafana_config:] security: <ключ: значение,...>
(по умолчанию: см. документацию)
- указывает параметры, управляющие аутентификацией и авторизацией пользователей Grafana/организации
grafana_config:
# секция [security]
security:
admin_user: sre-user
admin_password: PASSWORD
login_remember_days: 7
:users
[grafana_config:] users: <ключ: значение,...>
(по умолчанию: см. документацию)
- указывает параметры, контролирующие возможности пользователей Grafana
grafana_config:
# секция [users]
users:
allow_sign_up: true
allow_org_create: false
login_hint: THIS IS A HINT
:auth
[grafana_config:] auth: <ключ: значение,...>
(по умолчанию: см. документацию)
- указывает параметры, регулирующие возможности авторизации пользователей
Grafana предоставляет несколько методов для аутентификации пользователей, и настройки для каждого метода выражены в секциях [auth.
grafana_config:
# секция [auth.github] - ЗАМЕТКА: **github** представляет метод аутентификации
auth.github:
enabled: true
allow_sign_up: true
client_id: YOUR_GITHUB_APP_CLIENT_ID
client_secret: YOUR_GITHUB_APP_CLIENT_SECRET
scopes: user:email,read:org
auth_url: https://github.com/login/oauth/authorize
token_url: https://github.com/login/oauth/access_token
api_url: https://api.github.com/user
:dataproxy
[grafana_config:] dataproxy: <ключ: значение,...>
(по умолчанию: см. документацию)
- указывает параметры, включающие регистрацию прокси-данных
grafana_config:
# секция [dataproxy]
dataproxy:
logging: true
timeout: 60
send_user_header: true
:analytics
[grafana_config:] analytics: <ключ: значение,...>
(по умолчанию: см. документацию)
- указывает параметры, активирующие сбор и отчет статистики использования
grafana_config:
# секция [analytics]
analytics:
reporting_enabled: true
google_analytics_ua_id: UA_ID
check_for_updates: true
:dashboards
[grafana_config:] dashboards: <ключ: значение,...>
(по умолчанию: см. документацию)
- указывает параметры, регулирующие политику обслуживания дашбордов Grafana
grafana_config:
# секция [dashboards]
dashboards:
versions_to_keep: 5
:smtp
[grafana_config:] smtp: <ключ: значение,...>
(по умолчанию: см. документацию)
- указывает настройки почтового сервера для идентичности, кроме оповещений/уведомлений
grafana_config:
# секция [smtp]
smtp:
enabled: true
host: 127.0.0.1:65
user: smtp-user
password: PASSWORD
:log
[grafana_config:] log: <ключ: значение,...>
(по умолчанию: см. документацию)
- указывает настройки журналирования (например, уровень журналирования и режимы или каналы вывода журнала)
grafana_config:
# секция [log]
log:
mode: console
level: debug
:metrics
[grafana_config:] metrics: <ключ: значение,...>
(по умолчанию: см. документацию)
- указывает настройки для управления эмиссией телеметрии Grafana
grafana_config:
# секция [metrics]
metrics:
enabled: true
interval_seconds: 5s
metrics.graphite:
address: 127.0.0.1:7070
:snapshots
[grafana_config:] snapshots: <ключ: значение,...>
(по умолчанию: см. документацию)
- указывает настройки для управления поведением публикации функции интерактивного создания снимков дашборда Grafana
grafana_config:
# секция [snapshots]
snapshots:
external_enabled: true
external_snapshot_name: ENDPOINT
:external_image_storage
[grafana_config:] external_image_storage: <ключ: значение,...>
(по умолчанию: см. документацию)
- указывает настройки для контроля того, как изображения должны быть публично доступны для обмена на таких сервисах, как slack
Grafana поддерживает несколько поставщиков бэкэнд-хранения, для которого индивидуальные конфигурации могут быть выражены в секциях [external_image_storage.s3, gcs, azure blob и локальное хранение
.
grafana_config:
# секция [external_image_storage]
external_image_storage:
external_enabled: true
external_snapshot_name: Publish to ENDPOINT
external_image_storage.s3:
endpoint: http://example.org.s3/
bucket: grafana-snapshots
region: us-east-1
path: ${HOSTNAME}
access_key: ACCESS_KEY
secret_key: SECRET_KEY
:alerting
[grafana_config:] alerting: <ключ: значение,...>
(по умолчанию: см. документацию)
- указывает настройки для управления механизмом и поведением/правилами оповещений Grafana
grafana_config:
# секция [alerting]
alerting:
enabled: true
execute_alerts: true
nodata_or_nullvalues: no_data
evaluation_timeout_seconds: 10
notification_timeout_seconds: 60
max_attempts: 5
:rendering
[grafana_config:] rendering: <ключ: значение,...>
(по умолчанию: см. документацию)
- указывает настройки для работы с удаленной службой визуализации HTTP
grafana_config:
# секция [rendering]
rendering:
server_url: http://localhost:8081/render
callback_url: http://grafana.open.domain
:plugins
[grafana_config:] plugins: <ключ: значение,...>
(по умолчанию: см. документацию)
- указывает настройки для управления доступностью и доступом к плагинам grafana
grafana_config:
# секция [plugins]
plugins:
enable_alpha: true
:feature_toggles
[grafana_config:] feature_toggles: <ключ: значение,...>
(по умолчанию: см. документацию)
- указывает настройки для переключения использования alpha-фичей экземпляра grafana, делимитированного пробелами
grafana_config:
# секция [feature_toggles]
features_toggles:
enable: transformations
:tracing.jaeger
[grafana_config:] tracing.jaegar: <ключ: значение,...>
(по умолчанию: см. документацию)
- указывает настройки для конфигурации клиента Jaeger Grafana для распределенного отслеживания.
Заметка: стандартные переменные окружения Jaeger, начинающиеся с JAEGAR_*
, также могут быть указаны и переопределят любые настройки, представленные здесь.
grafana_config:
# секция [tracing.jaegar]
tracing.jaegar:
address: http://localhost:6381
always_included_tag: key1:value1,key2:value2
Источники данных
Grafana поддерживает множество различных бэкэндов хранения для ваших временных рядов данных, известных как источники данных. Каждый источник данных можно настроить в наборе конфигурационных файлов json|yml
в директории provisioning
Grafana, которую можно изменить в секции [paths]
файла grafana.ini.
Эти конфигурации источников данных могут быть выражены в хеше grafana_datasources
. Этот хеш содержит список структур источников данных для активации и другой для удаления, ключами будут datasources
и deleteDatasources
, соответственно. Значения сами состоят из списка словарей, представляющих спецификации отдельных источников данных. Подробности и список поддерживаемых источников данных можно найти здесь.
grafana_datasources: <список-словарей>
(по умолчанию: [])
- задает определения источников данных grafana для рендеринга. См. здесь для ссылки на доступные источники данных от сообщества и их соответствующих параметров.
grafana_datasources: name: <строка>
(по умолчанию: обязательно)
- имя файла источника данных grafana для рендеринга
grafana_datasources: <ввод> : datasources: <список-словарей>
(по умолчанию: []
)
- список определений источников данных (на основе списка поддерживаемых, упомянутого выше) для рендеринга внутри конфигурационного файла
grafana_datasources: <ввод> : deleteDatasources: <список-словарей>
(по умолчанию: []
)
- список ранее импортированных определений источников данных для удаления (на основе списка поддерживаемых, упомянутого выше) для рендеринга внутри конфигурационного файла
grafana_datasources:
- name: example_datasource
datasources:
- name: elasticsearch-logs
type: elasticsearch
access: proxy
database: "[logs-]YYYY.MM.DD"
url: http://localhost:9200
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 70
logMessageField: message
logLevelField: fields.level
- name: prometheus_example
type: prometheus
access: proxy
url: http://localhost:9090
deleteDatasources:
- name: graphite-legacy
type: graphite
access: proxy
url: http://localhost:8080
jsonData:
graphiteVersion: "1.1"
С версии 5.0 Grafana разрешила добавление одного или нескольких конфигурационных файлов yaml|json
в директории provisioning/dashboards. Это позволяет Grafana загружать дашборды из локальной файловой системы. Эта директория может содержать список провайдеров дашбордов, которые указывают на характеристики и различные формы метаданных, относящихся к директории/файлу, из которого загружать.
Эти конфигурации провайдеров дашбордов могут быть выражены в хеше grafana_dashboards
, который состоит из списка вышеупомянутых структур провайдеров дашбордов. Подробности и список дашбордов, созданных сообществом, доступных для загрузки и импорта, можно найти здесь.
grafana_dashboards: <список-словарей>
(по умолчанию: [])
- задает определения провайдеров дашбордов grafana для рендеринга. См. здесь для ссылки на поддерживаемые параметры.
grafana_dashboards: <ввод> : name: <строка>
(по умолчанию: обязательно)
- имя файла провайдера дашбордов grafana для рендеринга
grafana_dashboards: <ввод> : apiVersion: <строка>
(по умолчанию: []
)
- имя версии файла провайдера дашбордов grafana (полезно для синхронизации между экземлярами)
grafana_dashboards: <ввод> : providers: <список-словарей>
(по умолчанию: []
)
- список определений провайдеров дашбордов для рендеринга внутри конфигурационного файла
[grafana_dashboards: <ввод> : urls: <ввод>:] name
<строка> (по умолчанию: обязательно
)
- имя JSON файла для хранения конфигурации/содержимого дашборда
[grafana_dashboards: <ввод> : urls: <ввод>:] src
<строка> (по умолчанию: []
)
- URL или веб-адрес для нахождения и загрузки JSON файла/содержимого
[grafana_dashboards: <ввод> : urls: <ввод>:] id
<целое число> (по умолчанию: []
)
- уникальный идентификатор для ссылки на дашборд, который нужно загрузить из официального сообщества Grafana
[grafana_dashboards: <ввод> : urls: <ввод>:] dest
(по умолчанию: {{ provisioning_dir }}/dashboards
)
- местоположение в файловой системе хоста для хранения определения JSON дашборда
Примечание: хотя бы один из _.src
или _.id
для идентификации и расположения дашборда обязан быть указаны.
grafana_dashboards:
- name: test-example
apiVersion: 2
urls:
- name: node_exporter_prometheus
src: https://grafana.com/api/dashboards/11173/revisions/1/download
- name: geth_server
id: '6976'
providers:
- name: 'default-example'
folder: 'default'
folderUid: 1
type: file
disableDeletion: true
updateIntervalSeconds: 30
options:
path: /var/lib/grafana/conf/provisioning/dashboards
Уведомители
Каналы уведомлений об оповещениях могут быть подготовлены добавлением одного или нескольких конфигурационных файлов yaml|json
в директорию provisioning/notifiers.
Каждый конфигурационный файл можно выразить в хеше grafana_notifiers
, который содержит следующие верхние уровни полей:
- notifiers, список оповещений об оповещениях, которые будут добавлены или обновлены во время запуска. Если канал уведомления уже существует, Grafana обновит его, чтобы он соответствовал конфигурационному файлу.
- delete_notifiers, список оповещений об оповещениях для удаления перед вставкой/обновлением тех, что в списке уведомлений.
Подготовка ищет уведомления об оповещениях по uid и обновит любое существующее уведомление с указанным uid.
grafana_notifiers: <список-словарей>
(по умолчанию: [])
- задает определения уведомителей grafana для рендеринга. См. здесь для ссылки на поддерживаемые параметры.
grafana_notifiers: <ввод> : name: <строка>
(по умолчанию: обязательно)
- имя файла уведомителя графана для рендеринга
grafana_notifiers: <ввод> : notifiers: <строка>
(по умолчанию: []
)
- список уведомителей об оповещениях графана, которые нужно активировать для экземпляра графана
grafana_notifiers: <ввод> : delete_notifiers: <список-словарей>
(по умолчанию: []
)
- список уведомителей об оповещениях графана для удаления из экземпляра графана
grafana_notifiers:
- name: slack-example
notifiers:
- name: example-org-slack
url: http://slack.example.org
recipient: team-channel
- name: example-org-pagerduty
integrationKey: PAGER_DUTY_KEY
delete_notifiers:
- name: example-org-email
addresses: [email protected],[email protected]
Плагины
Grafana поддерживает плагины для источников данных, панелей и приложений. Эта роль предоставляет переменную списка, grafana_plugins
, которая поддерживает указание списка хешей, подробно описывающих имя и версию плагина для загрузки. Для получения дополнительной информации о установке плагинов обратитесь к официальной документации Grafana и см. здесь для ссылки на доступные плагины.
[grafana_plugins: <ввод>:] name:
<строка> (по умолчанию: обязательно)
- имя плагина Grafana для загрузки
[grafana_plugins: <ввод>:] version:
<строка> (по умолчанию: `latest)
- версия плагина Grafana для загрузки
grafana_plugins:
- name: petrslavotinek-carpetplot-panel
version: 0.1.1
- name: briangann-gauge-panel
# version: latest
Запуск
Эта роль поддерживает запуск веб-сервера grafana
, осуществляемого с использованием инструмента управления службами systemd, который управляет службой как фоновым процессом или демоном в зависимости от конфигурации и возможностей выполнения, предоставляемых его базовой управляющей платформой.
Следующие переменные могут быть настроены для управления systemd [Service] определением юнита и профилем/политикой выполнения:
extra_run_args: <опции-grafana-cli>
(по умолчанию: []
)
- список аргументов командной строки
grafana
, которые должны быть переданы бинарному файлу во время выполнения для настройки запуска.
Поддерживая полное выражение cli grafana
, эта переменная позволяет настроить запуск в соответствии со спецификациями пользователя.
custom_unit_properties: <хеш-настроек-сервиса-systemd>
(по умолчанию: []
)
- хеш настроек, используемых для настройки конфигурации юнита
[Service]
и среды выполнения службы Grafana systemd.
Удаление
Поддержка удаления и удаления артефактов, необходимых для подготовки, позволяет пользователям/операторам вернуть целевой хост к его настроенному состоянию до применения этой роли. Это может быть полезно для переработки узлов и, возможно, для обеспечения более плавных/управляемых переходов между обновлениями инструментов.
Следующие переменные могут быть настроены для управления процессом удаления:
perform_uninstall: <true | false>
(по умолчанию: false
)
- нужно ли удалить и избавиться от всех артефактов и остатков этой установки
grafana
на целевом хосте (см.:handlers/main.yml
для деталей)
Зависимости
- 0x0i.systemd
Пример плейбука
простой пример:
- hosts: all
roles:
- role: 0x0I.grafana
установить конкретную версию файлов Grafana:
- hosts: all
roles:
- role: 0xOI.grafana
vars:
archive_url: https://dl.grafana.com/oss/release/grafana-6.6.1.linux-amd64.tar.gz
archive_checksum: 0edc8207e356ef66eb7b1c78a1cdabc2cd5c0655de774000de2ad0397e543377
подстроить каталоги установки, конфигурации и данных Grafana:
- hosts: all
roles:
- role: 0x0I.grafana
vars:
install_dir: /usr/local
config_dir: /etc/grafana
data_dir: /mnt/grafana
запустить Grafana в режиме отладки для целей устранения неполадок и только выводить на консоль/stdout{err}:
- hosts: all
roles:
- role: 0x0I.grafana
vars:
grafana_config:
log:
level: debug
mode: console
Лицензия
MIT
Информация об авторе
Эта роль была создана в 2019 году O1.IO.
Grafana - an analytics and monitoring observability platform
ansible-galaxy install 0x0I/ansible-role-grafana