prometheus

логотип ansible

логотип prometheus

Роль Ansible :fire: :straight_ruler: Prometheus

Galaxy Role GitHub release (последняя дата) Лицензия: MIT

Содержание

Роль 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
Лицензия
Unknown
Загрузки
908
Владелец