prometheus
Роль Ansible :fire: :straight_ruler: Prometheus
Содержание
- Поддерживаемые платформы
- Требования
- Переменные роли
- Зависимости
- Пример плейбука
- Лицензия
- Информация об авторе
Роль Ansible, которая устанавливает и настраивает Prometheus: многомерную, ненастраиваемую временную базу данных и инструментарий мониторинга/оповещения.
Поддерживаемые платформы:
* Debian
* Redhat(CentOS/Fedora)
* Ubuntu
Требования
Требуется установить утилиту unzip/gtar
на целевом хосте. См. примечания к модулю ansible unarchive
здесь для деталей.
Переменные роли
Переменные доступны и организованы в соответствии с различными этапами предоставления программного обеспечения и машин:
- установка
- конфигурация
- запуск
- удаление
Установка
prometheus
и связанный с ним alertmanager
могут быть установлены с помощью сжатых архивов (.tar
, .zip
), загруженных и извлеченных из различных источников.
Следующие переменные могут быть настроены для управления различными аспектами этого процесса установки, начиная от версии программного обеспечения и местоположения исходника бинарных файлов до каталога установки, в котором они будут храниться:
managed_services: <список-сервисов (prometheus | alertmanager)>
(по умолчанию: ['prometheus'])
- список сервисов инструментария Prometheus, которые нужно управлять через эту роль
prometheus_user: <имя-пользователя-сервиса>
(по умолчанию: prometheus)
- выделенный пользователь и группа сервиса, используемые
prometheus
для разделения прав (подробности см. здесь)
install_dir: </путь/к/каталогу/установки>
(по умолчанию: /opt/prometheus
)
- путь на целевом хосте, куда должны быть извлечены бинарные файлы
prometheus
archive_url: <путь-или-url-к-архиву>
(по умолчанию: см. defaults/main.yml
)
- адрес сжатого tar или zip архива, содержащего бинарные файлы
prometheus
. Этот метод технически поддерживает установку любой доступной версииprometheus
. Ссылки на официальные версии можно найти здесь.
archive_checksum: <путь-или-url-к-чексумме>
(по умолчанию: см. defaults/main.yml
)
- адрес файла контрольной суммы для проверки целостности данных указанного архива
prometheus
. Хотя это рекомендуется и обычно считается лучшей практикой, указание контрольной суммы не обязательно и может быть отключено, предоставив пустую строку (''
) для её значения.
checksum_format: <строка>
(по умолчанию: см. sha256
)
- алгоритм хеширования, используемый для проверки файлов, связанного с указанной контрольной суммой архива. Дополнительную информацию о контрольных суммах/криптографических хешах можно найти здесь.
alertmgr_installdir: </путь/к/каталогу/установки>
(по умолчанию: /opt/alertmanager
)
- путь на целевом хосте, куда должны быть извлечены бинарные файлы
alertmanager
exporter_installdir: </путь/к/каталогу/установки>
(по умолчанию: {{ install_dir }}/exporters
)
- путь на целевом хосте, куда должны быть извлечены бинарные файлы экспорта Prometheus
alertmgr_archive_url: <путь-или-url-к-архиву>
(по умолчанию: см. defaults/main.yml
)
- адрес сжатого tar или zip архива, содержащего бинарные файлы
alertmanager
. Этот метод технически поддерживает установку любой доступной версииalertmanager
. Ссылки на официальные версии можно найти здесь.
alertmgr_archive_checksum: <путь-или-url-к-чексумме>
(по умолчанию: см. defaults/main.yml
)
- адрес файла контрольной суммы для проверки целостности данных указанного архива
alertmanager
. Хотя это рекомендуется и обычно считается лучшей практикой, указание контрольной суммы не обязательно и может быть отключено, предоставив пустую строку (''
) для её значения.
alertmgr_checksum_format: <строка>
(по умолчанию: см. sha256
)
- алгоритм хеширования, используемый для проверки файлов, связанного с указанной контрольной суммой архива. Дополнительную информацию о контрольных суммах/криптографических хешах можно найти здесь.
filesd_path: </путь/к/файлам-sd>
(по умолчанию: {{ install_dir }}/filesd
)
- путь на целевом хосте, где файлы обнаружения файлов Prometheus будут храниться по умолчанию
rules_path: </путь/к/правилам>
(по умолчанию: {{ install_dir }}/rules.d
)
- путь на целевом хосте, где файлы правил Prometheus будут храниться по умолчанию
templates_path: </путь/к-шаблонам-alertmanager>
(по умолчанию: {{ alertmgr_installdir }}/templates
)
- путь на целевом хосте, где файлы шаблонов alertmanager будут храниться по умолчанию
Конфигурация
Используя эту роль, конфигурация установки prometheus
организована в соответствии со следующими компонентами:
- конфигурация сервиса prometheus (
prometheus.yml
) - обнаружение файлов сервисов (
file_sd - *.[json|yml]
) - правила записи и оповещения (
rule_files - *.[json|yml]
) - конфигурация сервиса alertmanager (
alertmanager.yml
) - файлы шаблонов alertmanager (
*.tmpl
)
Каждая конфигурация может быть выражена в следующих переменных для настройки содержимого и настроек назначенных конфигурационных файлов, которые должны быть отрендерены:
config_dir: </путь/к/каталогу/конфигурации>
(по умолчанию: {{ install_dir }}
)
- путь на целевом хосте, где должны быть отрендерены конфигурационные файлы
prometheus
data_dir: </путь/к/каталогу/данных>
(по умолчанию: /var/data/prometheus
)
- путь на целевом хосте, где
prometheus
хранит данные
alertmgr_configdir: </путь/к/каталогу/конфигурации>
(по умолчанию: {{ alertmgr_installdir }}
)
- путь на целевом хосте, где должны быть отрендерены конфигурационные файлы
alertmanager
alertmgr_datadir: </путь/к/каталогу/данных>
(по умолчанию: /var/data/alertmanager
)
- путь на целевом хосте, где
alertmanager
хранит данные
Конфигурация сервиса Prometheus
Конфигурация сервиса Prometheus может быть выражена в хеше prometheus_config
, который содержит набор пар ключ-значение, представляющих различные цели сбора данных (источники, из которых необходимо собирать метрики), механизмы обнаружения сервисов, правила записи/оповещения и конфигурации для взаимодействия с системами удаленного чтения/записи, используемыми сервисом Prometheus.
Значения этих ключей представляют собой, как правило, словари или списки словарей, содержащие набор пар ключ-значение, представляющих соответствующие спецификации/настройки (например, интервал сбора или частота, с которой следует собирать целевые метрики глобально) для каждого раздела. Ниже приведено общее представление и примеры конфигураций для ссылок.
:global
[prometheus_config:] global: <key: value,...>
(по умолчанию: см. defaults/main.yml
)
- указывает параметры, которые действительны и служат по умолчанию во всех других контекстах конфигурации. Подробнее см. здесь.
Пример
prometheus_config:
global:
# Как часто собирать цели по умолчанию.
scrape_interval: 15s
# Как долго до истечения времени запроса на сбор.
scrape_timeout: 30s
# Как часто оценивать правила.
evaluation_interval: 30s
# Метки, которые следует добавить ко всем временным рядами или оповещениям при взаимодействии с
# внешними системами (федерация, удаленное хранилище, Alertmanager).
external_labels:
monitor: example
foo: bar
:scrape_configs
[prometheus_config:] scrape_configs: <список-словарей>
(по умолчанию: см. defaults/main.yml
)
- указывает набор целей и параметры, описывающие, как их собирать, организованные в задания
Цели могут быть статически настроены или динамически обнаружены с использованием одного из поддерживаемых механизмов обнаружения сервисов. Подробнее см. здесь и здесь для списка поддерживаемых методов обнаружения сервисов.
Пример
prometheus_config:
scrape_configs:
- job_name: static-example
static_configs:
- targets: ['localhost:9090', 'localhost:9191']
labels:
example: label
- job_name: kubernetes-example
kubernetes_sd_configs:
- role: endpoints
api_server: 'https://localhost:1234'
namespaces:
names:
- default
:rule_files
[prometheus_config:] rule_files: <список>
(по умолчанию: см. defaults/main.yml
)
- указывает список шаблонов, обозначающих имена и пути файлов
Правила и оповещения читаются из всех соответствующих файлов. Правила делятся на две категории: правила записи и правила оповещения. Подробнее см. здесь для правил записи и здесь для правил оповещения.
Пример
prometheus_config:
rule_files:
- "example.yml"
- "example_rules/*"
:remote_read
[prometheus_config:] remote_read: <список-словарей>
(по умолчанию: см. defaults/main.yml
)
- указывает настройки, связанные с функцией удаленного чтения
См. здесь для получения дополнительных сведений. Для списка доступных плагинов/интеграций для удаленного чтения/хранилища обратитесь по этой ссылке.
Пример
prometheus_config:
remote_read:
- url: http://remote1/read
read_recent: true
name: default
- url: http://remote2/read
read_recent: false
name: read_special
required_matchers:
job: special
tls_config:
cert_file: valid_cert_file
key_file: valid_key_file
:remote_write
[prometheus_config:] remote_write: <список-словарей>
(по умолчанию: см. defaults/main.yml
)
- указывает настройки, связанные с функцией удаленной записи
См. здесь для получения дополнительной информации. Для списка доступных плагинов/интеграций для удаленной записи/хранилища обратитесь по этой ссылке.
Пример
prometheus_config:
remote_write:
- name: drop_expensive
url: http://remote1/push
write_relabel_configs:
- source_labels: [__name__]
regex: expensive.*
action: drop
- name: rw_tls
url: http://remote2/push
tls_config:
cert_file: valid_cert_file
key_file: valid_key_file
:alerting
[prometheus_config:] alerting: <key: value,...>
(по умолчанию: см. defaults/main.yml
)
- указывает настройки, связанные с Alertmanager, а также экземпляры Alertmanager, к которым сервер Prometheus отправляет оповещения
Этот раздел предоставляет параметры для настройки взаимодействия с этими Alertmanager. Alertmanager могут быть статически настроены через параметр статических конфигураций или динамически обнаружены с использованием одного из поддерживаемых механизмов обнаружения сервисов. Подробнее см. здесь.
Пример
prometheus_config:
alerting:
alertmanagers:
- scheme: https
static_configs:
- targets:
- "1.2.3.4:9093"
- "1.2.3.5:9093"
Обнаружение сервисов с помощью файлов
Обнаружение сервисов на основе файлов предоставляет более общий способ настройки статических целей и служит интерфейсом для подключения пользовательских механизмов обнаружения сервисов. Он читает набор файлов, содержащих список нуля или более <static_config>
ов. Изменения во всех определенных файлах обнаруживаются с помощью наблюдений за диском и немедленно применяются. Файлы могут быть предоставлены в формате YAML или JSON. Применяются только изменения, приводящие к правильно сформированным группам целей. Подробнее см. здесь для получения дополнительных сведений.
prometheus_file_sd: <список-словарей>
(по умолчанию: [])
- указывает конфигурации prometheus file_sd для рендеринга
Используя эту роль, настройки конфигурации обнаружения сервисов на основе файлов могут быть выражены внутри хеша prometheus_file_sd
, который содержит список словарей, инкапсулирующих путь, имя и содержание конфигурации файла yaml
или json
, который должен быть загружен Prometheus для обнаружения файлов.
[prometheus_file_sd : <эпизод>:] name: <строка>
(по умолчанию: НЕТ - обязательно)
- имя файла file_sd для рендеринга
[prometheus_file_sd : <эпизод>:] path: <строка>
(по умолчанию: {{ install_dir }}/file_sd
)
- путь файла file_sd для рендеринга
[prometheus_file_sd : <эпизод>:] config: <список-словарей>
(по умолчанию: НЕТ - обязательно)
- список словарей, представляющих настройки, указывающие набор статических целей, которые должны быть указаны в файле file_sd
Пример
prometheus_file_sd:
- name: example-file.slow.json
config:
- targets: ["host1:1234"]
labels:
test-label: example-slow-file-sd
- name: file.yml
path: /etc/prometheus/file_sd
config:
- targets: ["host2:1234"]
Примечание: Ожидается, что связанный файл конфигурации file_sd
будет включен в файл prometheus.yml
для успешной загрузки.
Файлы правил
Prometheus поддерживает два типа правил, которые могут быть настроены и затем оценены через регулярные интервалы: правила записи и правила оповещения. Правила записи позволяют вам заранее вычислять часто необходимые или ресурсоемкие выражения и сохранять их результат как новый набор временных рядов. Правила оповещения позволяют определять условия оповещения на основе выражений языка Prometheus и отправлять уведомления о срабатывании оповещений во внешнюю службу. Подробнее см. здесь для получения дополнительных сведений.
prometheus_rule_files: <список-словарей>
(по умолчанию: [])
- указывает файлы правил prometheus для рендеринга
Используя эту роль, как правила записи, так и правила оповещения могут быть выражены внутри хеша prometheus_rule_files
, который содержит список словарей, инкапсулирующих путь, имя и содержание конфигурации файла yaml
или json
, устанавливаемого для загрузки Prometheus для установки правил.
[prometheus_rule_files : <эпизод>:] name: <строка>
(по умолчанию: НЕТ - обязательно)
- имя файла правила для рендеринга
[prometheus_rule_files : <эпизод>:] path: <строка>
(по умолчанию: {{ install_dir }}/rules.d
)
- путь файла правила для рендеринга
[prometheus_rule_files : <эпизод>:] config: <список-словарей>
(по умолчанию: НЕТ - обязательно)
- список словарей, представляющих настройки, указывающие набор групп правил, которые должны быть указаны в файле правил
Пример
prometheus_rule_files:
- name: example-rules.yml
config:
groups:
- name: запись правила пример
rules:
- record: job:http_inprogress_requests:sum
expr: sum(http_inprogress_requests) by (job)
- name: nondefault-path-example-rules.yml
path: /etc/prometheus/rules.d
config:
groups:
- name: оповещение правила пример
rules:
- alert: Высокая задержка запроса
expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5
for: 10m
labels:
severity: page
annotations:
summary: Высокая задержка запроса
Примечание: Ожидается, что связанный раздел rule_files
будет включен в файл prometheus.yml
для успешной загрузки.
Конфигурация сервиса Alertmanager
Конфигурация сервиса Alertmanager может быть выражена в хеше alertmanager_config
, который содержит набор пар ключ-значение, представляющих один из разделов, указывающих различные маршруты, получатели, шаблоны и конфигурации подавления оповещений.
Значения этих ключей представляют собой, как правило, словари или списки словарей, содержащие набор пар ключ-значение, представляющих соответствующие спецификации/настройки (например, URL API для уведомлений Slack) для каждого раздела. Ниже приведено общее представление и примеры конфигураций для ссылок.
:global
[alertmanager_config:] global: <key: value,...>
(по умолчанию: см. defaults/main.yml
)
- указывает параметры, которые действительны и служат по умолчанию во всех других контекстах конфигурации. Подробнее см. здесь для получения дополнительных сведений.
Пример
alertmanager_config:
global:
# Mail-уведомления и SMTP-отправитель.
smtp_smarthost: 'localhost:25'
smtp_from: '[email protected]'
smtp_auth_username: 'alertmanager'
smtp_auth_password: 'password'
# Токен для Hipchat.
hipchat_auth_token: '1234556789'
# Альтернативный хост для Hipchat.
hipchat_api_url: 'https://hipchat.foobar.org/'
:route
[alertmanager_config:] route: <key: value,...>
(по умолчанию: см. defaults/main.yml
)
- определяет узел в дереве маршрутизации и его дочерние узлы
Каждое оповещение попадает в дерево маршрутизации на верхнем уровне маршрута, который должен соответствовать всем оповещениям (т.е. не имеет никаких настроенных сопоставителей). Затем оно проходит через дочерние узлы. Если continue установлено в false, он останавливается после первого совпадающего дочернего узла. Если continue равно true на совпадающем узле, оповещение будет продолжать соответствовать последующим братьям. Подробнее см. здесь для получения дополнительных сведений.
Пример
alertmanager_config:
route:
receiver: 'default-receiver'
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
group_by: [cluster, alertname]
# Все оповещения, которые не соответствуют следующим дочерним маршрутам,
# остаются на корневом узле и будут отправлены получателю 'default-receiver'.
routes:
# Все оповещения с service=mysql или service=cassandra
# отправляются на сотовый телефон базы данных.
- receiver: 'database-pager'
group_wait: 10s
match_re:
service: mysql|cassandra
# Все оповещения с меткой team=frontend соответствуют этому подмаршруту.
# Они группируются по продукту и окружению, а не по кластеру
# и alertname.
- receiver: 'frontend-pager'
group_by: [product, environment]
match:
team: frontend
:receivers
[alertmanager_config:] inhibit_rules: <список-словарей>
(по умолчанию: см. defaults/main.yml
)
- указывает список получателей уведомлений
Получатели - это именованные конфигурации одной или нескольких интеграций уведомлений. Подробнее см. здесь для получения дополнительных сведений.
Пример
alertmanager_config:
receivers:
- name: 'team-X-mails'
email_configs:
- to: '[email protected]'
pagerduty_configs:
- service_key: <team-X-key>
hipchat_configs:
- auth_token: <auth_token>
room_id: 85
message_format: html
notify: true
:inhibit_rules
[alertmanager_config:] inhibit_rules: <список-словарей>
(по умолчанию: см. defaults/main.yml
)
- указывает список правил подавления
Правило подавления отключает оповещение (целевой объект), соответствующее набору совпадающих критериев, когда существует оповещение (источник), которое соответствует другому набору совпадающих критериев. Подробнее см. здесь для получения дополнительных сведений.
Пример
alertmanager_config:
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
# Применять подавление, если имя оповещения совпадает.
equal: ['alertname', 'cluster', 'service']
:templates
[alertmanager_config:] templates: <список>
(по умолчанию: см. defaults/main.yml
)
- указывает файлы и каталоги, из которых читаются шаблоны уведомлений
Последний компонент может использовать шаблон с подстановочником, например templates/*.tmpl
. См. здесь для ссылки на шаблоны уведомлений и эту ссылку для примеров.
Пример
alertmanager_config:
templates:
- '/etc/alertmanager/template/*.tmpl'
Шаблоны Alertmanager
Prometheus создает и отправляет оповещения в Alertmanager, который затем отправляет уведомления различным получателям на основе их меток. Уведомления, отправленные получателям, формируются с помощью шаблонов. Alertmanager предлагает стандартные шаблоны, но их также можно настроить. Подробнее см. здесь для получения дополнительных сведений.
altermanager_templates: <список-словарей>
(по умолчанию: [])
- указывает конфигурации шаблонов уведомлений
alertmanager
для рендеринга
Используя эту роль, настройки конфигурации шаблонов alertmanager могут выражаться внутри хеша alertmanager_templates
, который содержит список словарей, представляющих и инкапсирующих путь, имя и содержание конфигурации файла tmpl
, который должен быть загружен alertmanager.
[alertmanager_templates : <эпизод>:] name: <строка>
(по умолчанию: НЕТ - обязательно)
- имя файла шаблона для рендеринга
[alertmanager_templates : <эпизод>:] path: <строка>
(по умолчанию: {{ alertmgr_installdir }}/templates
)
- путь файла шаблона для рендеринга
[alertmanager_templates : <эпизод>:] config: <список-словарей>
(по умолчанию: НЕТ - обязательно)
- список словарей, представляющих настройки, указывающие набор параметров шаблона для рендеринга
Пример
alertmanager_templates:
- name: test
config:
- define: "myorg.test.guide"
template: 'https://internal.myorg.net/wiki/alerts/\{\{ .GroupLabels.app \}\}/\{\{ .GroupLabels.alertname \}\}'
- name: test2
path: /etc/alertmanager/templates
config:
- define: "myorg.test.text"
template: 'summary: \{\{ .CommonAnnotations.summary \}\}\ndescription: \{\{ .CommonAnnotations.description \}\}'
Примечание: Ожидается, что связанный раздел templates
будет включен в файл alertmanager.yml
для успешной загрузки.
Запуск
Эта роль поддерживает запуск всех компонентов экосистемы мониторинга и оповещения Prometheus. Это включает в себя как сервисы Prometheus, так и Alertmanager, а также множество экспортеров метрик. Запуск каждого осуществляется с помощью инструмента управления службами systemd, который управляет службами как фоновыми процессами или демонами в соответствии с конфигурацией и возможностями выполнения, предоставляемыми его базовой управляющей системой.
Следующие переменные могут быть настроены для управления systemd [Service] определением и политикой выполнения служб:
Prometheus
extra_run_args: <команды-CLI-prometheus>
(по умолчанию: []
)
- список аргументов командной строки
prometheus
, передаваемых бинарному файлу во время выполнения для изменения запуска.
Полная поддержка выражения CLI prometheus
, эта переменная позволяет настроить запуск в соответствии со спецификациями пользователя.
custom_unit_properties: <хеш-настроек-сервиса-systemd>
(по умолчанию: []
)
- хеш настроек, используемых для настройки конфигурации и среды выполнения
[Service]
для службы Prometheus systemd.
Alertmanager
extra_alertmgr_args: <команды-CLI-alertmanager>
(по умолчанию: []
)
- список аргументов командной строки
alertmanager
, передаваемых бинарному файлу во время выполнения для изменения запуска.
Полная поддержка выражения CLI alertmanager
, эта переменная позволяет настроить запуск в соответствии со спецификациями пользователя.
custom_alertmgr_properties: <хеш-настроек-сервиса-systemd>
(по умолчанию: []
)
- хеш настроек, используемых для настройки конфигурации и среды выполнения
[Service]
для службы Alertmanager systemd.
Экспортеры
prometheus_exporters: <список-словарей>
(по умолчанию: [])
- указывает экспортеры prometheus для установки и запуска и управления ими как службами systemd.
Каждая запись словаря эксппортера ожидает указания нескольких свойств, включая имя; url и адрес прослушивания целевого экспортера для правильной настройки и связи с сервером Prometheus. Другие свойства, используемые для настройки работы экспортера, могут быть дополнительно указаны через переменную extra_args
, которая добавляет предоставленные аргументы командной строки в настройку ExecStart единицы экспортера. См. здесь для получения дополнительных сведений и списка плагинов экспортера для справки.
[prometheus_exporters : <эпизод>:] name: <строка>
(по умолчанию: НЕТ - обязательно)
- имя экспортера Prometheus для установки
[prometheus_exporters : <эпизод>:] url: <строка>
(по умолчанию: НЕТ - обязательно)
- URL экспортера Prometheus для установки
[prometheus_exporters : <эпизод>:] description: <строка>
(по умолчанию: <имя-экспортера>
)
- описание или документация экспортера Prometheus для включения в файл единицы Systemd экспортера
[prometheus_exporters : <эпизод>:] unit_properties: <хеш>
(по умолчанию: {}
)
- хеш настроек, используемых для настройки конфигурации и среды выполнения
[Service]
для службы <экспортер> systemd.
Пример
prometheus_exporters:
- name: node_exporter
url: https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
description: https://github.com/prometheus/node_exporter
unit_properties:
User: exporter
Group: exporter
extra_args:
- '--web.listen-address=0.0.0.0:9110'
- '--log.level=debug'
Удаление
Поддержка удаления и удаления артефактов, необходимых для предоставления, позволяет пользователям/операторам возвращать целевой хост в его настроенное состояние до применения этой роли. Это может быть полезно для переработки узлов и ролей, а также, возможно, для более управляемых переходов между обновлениями инструментов.
Следующая переменная(ые) могут быть настроены для управления этим процессом удаления:
perform_uninstall: <true | false>
(по умолчанию: false
)
- нужно ли удалить и удалить все артефакты и остатки этой установки
prometheus
на целевом хосте (см.:handlers/main.yml
для деталей)
Зависимости
- 0x0i.systemd
Пример плейбука
Пример по умолчанию:
- hosts: all
roles:
- role: 0x0I.prometheus
только установить и управлять сервисом Prometheus (отключить настройку alertmanager):
- hosts: all
roles:
- role: 0x0I.prometheus
vars:
managed_services: ['prometheus']
установить конкретную версию файлов Prometheus:
- hosts: all
roles:
- role: 0x0I.prometheus
vars:
archive_url: https://github.com/prometheus/prometheus/releases/download/v2.15.0/prometheus-2.15.0.linux-amd64.tar.gz
archive_checksum: 1c2175428e7a70297d97a30a04278b86ccd6fc53bf481344936d6573482203b4
изменить установку Prometheus и Alertmanager, конфигурацию и каталоги данных:
- hosts: all
roles:
- role: 0x0I.prometheus
vars:
install_dir: /usr/local
config_dir: /etc/prometheus
data_dir: /var/lib/prometheus
alertmgr_installdir: /usr/local
alertmgr_configdir: /etc/alertmanager
alertmgr_datadir: /var/lib/alertmanager
настроить глобальные параметры сбора и оценки:
- hosts: all
roles:
- role: 0x0I.prometheus
vars:
prometheus_config:
global:
scrape_interval: 30s
scrape_timeout: 30s
evaluation_interval: 30s
настроить оповещение Prometheus/настройку alertmanager:
- hosts: all
roles:
- role: 0x0I.prometheus
vars:
prometheus_config:
alerting:
alertmanagers:
- scheme: https
static_configs:
- targets:
- "1.2.3.4:9093"
создать правила записи и оповещения:
- hosts: all
roles:
- role: 0x0I.prometheus
vars:
prometheus_config:
rule_files:
- /etc/prometheus/rules.d/*
prometheus_rule_files:
- name: example-rules.yml
path: /etc/prometheus/rules.d/*
config:
groups:
- name: recording rule example
rules:
- record: job:http_inprogress_requests:sum
expr: sum(http_inprogress_requests) by (job)
- name: another-example.yml
path: /etc/prometheus/rules.d
config:
groups:
- name: alerting rule example
rules:
- alert: HighRequestLatency
expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5
for: 10m
labels:
severity: page
annotations:
summary: High request latency
статическая
цель с настройками scrape_config для сборки и оценки:
- hosts: all
roles:
- role: 0x0I.prometheus
vars:
prometheus_config:
scrape_configs:
- job_name: static-example
static_configs:
- targets: ['localhost:9090', 'localhost:9191']
labels:
my: label
your: label
scrape_interval: 10s
scrape_timeout: 10s
evaluation_interval: 10s
file_sd
scrape_config на основе файлов с переопределениями сбора и оценки:
- hosts: all
roles:
- role: 0x0I.prometheus
vars:
prometheus_config:
scrape_configs:
- job_name: file-sd-example
file_sd_configs:
- files:
- foo/*.slow.json
- single/file.yml
refresh_interval: 10m
- files:
- bar/*.yml
prometheus_file_sd:
- name: example-file.slow.json
path: foo
config:
- targets: ["host1:1234"]
labels:
test-label: example-slow-file-sd
- name: foo.yml
path: bar
config:
- targets: ["host2:1234"]
- name: file.yml
path: single
config:
- targets: ["host3:1234"]
dns
-based scrape_config:
- hosts: all
roles:
- role: 0x0I.prometheus
vars:
prometheus_config:
scrape_configs:
- job_name: dns-example
dns_sd_configs:
- refresh_interval: 15s
names:
- first.dns.address.domain.com
- second.dns.address.domain.com
- names:
- third.dns.address.domain.com
kubernetes
-based scrape_config с настройками TLS и базовой аутентификации:
- hosts: all
roles:
- role: 0x0I.prometheus
vars:
prometheus_config:
scrape_configs:
- job_name: kubernetes-example
kubernetes_sd_configs:
- role: endpoints
api_server: 'https://localhost:1234'
tls_config:
cert_file: valid_cert_file
key_file: valid_key_file
basic_auth:
username: 'myusername'
password: 'mysecret'
ec2
-based scrape_config:
- hosts: all
roles:
- role: 0x0I.prometheus
vars:
prometheus_config:
scrape_configs:
- job_name: ec2-example
ec2_sd_configs:
- region: us-east-1
access_key: access
secret_key: mysecret
profile: profile
filters:
- name: tag:environment
values:
- prod
- name: tag:service
values:
- web
- db
openstack
-based scrape_config:
- hosts: all
roles:
- role: 0x0I.prometheus
vars:
prometheus_config:
scrape_configs:
- job_name: openstack-example
openstack_sd_configs:
- role: instance
region: RegionOne
port: 80
refresh_interval: 1m
azure
-based scrape_config:
- hosts: all
roles:
- role: 0x0I.prometheus
vars:
prometheus_config:
scrape_configs:
- job_name: azure-example
azure_sd_configs:
- environment: AzurePublicCloud
authentication_method: OAuth
subscription_id: 11AAAA11-A11A-111A-A111-1111A1111A11
tenant_id: BBBB222B-B2B2-2B22-B222-2BB2222BB2B2
client_id: 333333CC-3C33-3333-CCC3-33C3CCCCC33C
client_secret: mysecret
port: 9100
marathon
-based scrape_config:
- hosts: all
roles:
- role: 0x0I.prometheus
vars:
prometheus_config:
scrape_configs:
- job_name: marathon-example
marathon_sd_configs:
- servers:
- 'https://marathon.example.com:443'
auth_token: "mysecret"
consul
-based scrape_config:
- hosts: all
roles:
- role: 0x0I.prometheus
vars:
prometheus_config:
scrape_configs:
- job_name: consul-example
consul_sd_configs:
- server: 'localhost:1234'
token: mysecret
services: ['nginx', 'cache', 'mysql']
tags: ["canary", "v1"]
node_meta:
rack: "123"
allow_stale: true
scheme: https
Лицензия
MIT
Информация об авторе
Эта роль была создана в 2019 году O1.IO.
Prometheus - a multi-dimensional time-series data monitoring and alerting toolkit
ansible-galaxy install 0x0I/ansible-role-prometheus