promtail

Ansible Роль: promtail

Тест Лицензия Ansible Роль GitHub тег

Описание

Разверните promtail с помощью ansible. Поддерживает архитектуры amd64 и arm. Для недавних изменений смотрите CHANGELOG или ознакомьтесь с релизами на GitHub.

Требования

  • Ansible >= 2.7

Переменные Роли

Все переменные, которые можно переопределить, хранятся в файле defaults/main.yml, а также в таблице ниже.

Имя Значение по умолчанию Описание
promtail_version "3.0.0" Версия пакета promtail. Также принимает latest в качестве параметра.
promtail_custom_checksum "" Пользовательская контрольная сумма для пользовательских бинарных файлов promtail
promtail_binary_local_dir "" Позволяет использовать локальные пакеты вместо тех, что распространяются на GitHub. Должен принимать путь, где хранится zip-архив promtail на хосте, на котором выполняется ansible.
promtail_extra_args [] Позволяет устанавливать дополнительные аргументы для бинарного файла в системном файле службы systemd.
promtail_config_dir /etc/promtail Каталог для хранения файла конфигурации promtail
promtail_config_expand_env "false" Значение параметра promtail -config.expand-env
promtail_config_file_sd_dir "{{ promtail_config_dir }}/file_sd" Директория по умолчанию для открытия file_sd
promtail_config_file "{{ promtail_config_dir }}/promtail.yml" Файл конфигурации, используемый promtail
promtail_system_user promtail Пользователь, от имени которого будет выполняться процесс promtail
promtail_system_group "{{ promtail_system_user }}" Группа пользователя promtail
promtail_user_additional_groups "adm" Дополнительные группы, которые должны быть добавлены пользователю promtail для доступа к определенным журналам
promtail_config_clients см. defaults/main.yml Раздел promtail clients
promtail_loki_server_url http://127.0.0.1:3100 URL сервера, на который promtail будет отправлять свои результаты
promtail_config_server см. defaults/main.yml Раздел promtail server
promtail_positions_directory /var/lib/promtail Путь к директории, где promtail отслеживает положенные журналы
promtail_config_positions {"filename": "{{ promtail_positions_directory }}/positions.yml"} Раздел promtail positions
promtail_config_scrape_configs [] Раздел promtail scrape_configs
promtail_target_config {} Раздел promtail target_config
promtail_log_level "info" Уровень логирования promtail (один из: debug,info,warn,error)
promtail_config_include_default_file_sd_config "True" Если установить в false, стандартный file_sd не будет предоставлен
promtail_apt_update_cache "True" Если установить в false, роль не будет обновлять кеш APT сама

Для каждого раздела (promtail_config_clients, promtail_config_server, promtail_config_positions, promtail_config_scrape_configs, promtail_target_config) конфигурацию можно передавать в соответствии с официальной конфигурацией promtail. Роль конвертирует переменные ansible в соответствующую yaml-конфигурацию для loki.

Пример Плейбука

Базовый плейбук предполагает, что loki будет слушать на http://127.0.0.1:3100 и содержит простую конфигурацию для сбора логов из /var/log:

---
- hosts: all
  roles:
    - role: patrickjahns.promtail
      vars:
        promtail_config_scrape_configs:
          - job_name: system
            static_configs:
            - targets:
                - localhost
              labels:
                job: varlogs
                __path__: /var/log/*log

Более сложный пример, который переопределяет конфигурацию сервера, клиента и позиций, а также предоставляет конфигурацию для сбора логов из /var/log:

---
- hosts: all
  roles:
    - role: patrickjahns.promtail
      vars:
        promtail_config_server:
          http_listen_port: 9080
          grpc_listen_port: 9081
        promtail_config_clients:
          - url: "http://prometheus.domain.tld:3100/loki/api/v1/push"
            external_labels:
              host: "{{ ansible_hostname }}"
        promtail_config_positions:
          filename: "{{ promtail_positions_directory }}/positions.yaml"
          sync_period: "60s"

        promtail_config_scrape_configs:
          - job_name: system
            static_configs:
            - targets:
                - localhost
              labels:
                job: varlogs
                __path__: /var/log/*log

Локальное Тестирование

Предпочтительный способ локального тестирования роли — это использование Docker и molecule (v3.x). Вам нужно установить Docker на свою систему. Просмотрите раздел "Начало работы" для получения пакета Docker, подходящего для вашей системы. Мы используем tox, чтобы упростить процесс тестирования на нескольких версиях ansible. Для установки tox выполните:

pip3 install tox

Чтобы запустить тесты на всех версиях ansible (ВНИМАНИЕ: это может занять некоторое время)

tox

Чтобы запустить пользовательскую команду molecule в пользовательской среде только с тестовым сценарием по умолчанию:

tox -e ansible29 -- molecule test -s default

Для получения дополнительной информации о molecule посетите их документацию.

Если вы хотите запустить тесты на удаленном хосте Docker, просто укажите переменную DOCKER_HOST перед запуском тестов tox.

CI

Github actions используется для тестирования и проверки данной роли ansible с помощью ansible-later и molecule. Тесты molecule будут выполняться с несколькими операционными системами, а также с версиями ansible для обеспечения совместимости.

Лицензия

Этот проект лицензирован под MIT License. Смотрите LICENSE для получения более подробной информации.

Поддержка и вносчики изменений

Установить
ansible-galaxy install patrickjahns/ansible-role-promtail
Лицензия
mit
Загрузки
435354
Владелец
Site Reliability Engineer with a ❤️ for "everything as code". Passionate about software craftsmanship and deliberately breaking things (aka Chaos Engineering)