patrickjahns.promtail

Rol de Ansible: promtail

Test Licencia Rol de Ansible Etiqueta de GitHub

Descripción

Despliega promtail usando ansible. Soporta arquitecturas amd64 y arm. Para cambios recientes, consulta el CHANGELOG o revisa las versiones en github.

Requisitos

  • Ansible >= 2.7

Variables del Rol

Todas las variables que se pueden sobrescribir se encuentran en el archivo defaults/main.yml así como en la tabla a continuación.

Nombre Valor por Defecto Descripción
promtail_version "3.0.0" Versión del paquete promtail. También acepta latest como parámetro.
promtail_custom_checksum "" Suma de verificación personalizada para binarios promtail construidos manualmente.
promtail_binary_local_dir "" Permite usar paquetes locales en lugar de los distribuidos en github. Recibe como parámetro la ruta donde está almacenado el archivo zip de promtail en el host donde se ejecuta ansible.
promtail_extra_args [] Permite establecer argumentos adicionales para el binario dentro del archivo de servicio systemd.
promtail_config_dir /etc/promtail Directorio para almacenar el archivo de configuración de promtail.
promtail_config_expand_env "false" Valor de la opción promtail -config.expand-env.
promtail_config_file_sd_dir "{{ promtail_config_dir }}/file_sd" Directorio predeterminado para el descubrimiento de file_sd.
promtail_config_file "{{ promtail_config_dir }}/promtail.yml" Archivo de configuración utilizado por promtail.
promtail_system_user promtail Usuario con el que se ejecutará el proceso promtail.
promtail_system_group "{{ promtail_system_user }}" Grupo del usuario promtail.
promtail_user_additional_groups "adm" Grupos adicionales que se agregarán al usuario promtail para permitir el acceso a archivos de registro específicos.
promtail_config_clients consulta defaults/main.yml Sección de clientes en la configuración de promtail.
promtail_loki_server_url http://127.0.0.1:3100 URL del servidor donde promtail enviará sus resultados.
promtail_config_server consulta defaults/main.yml Sección del servidor en la configuración de promtail.
promtail_positions_directory /var/lib/promtail Ruta al directorio donde promtail realiza el seguimiento de las posiciones de los registros.
promtail_config_positions {"filename": "{{ promtail_positions_directory }}/positions.yml"} Sección de posiciones en la configuración de promtail.
promtail_config_scrape_configs [] Sección de scrape_configs en la configuración de promtail.
promtail_target_config {} Sección de target_config en la configuración de promtail.
promtail_log_level "info" Nivel de registro de promtail (puede ser: debug, info, warn, error).
promtail_config_include_default_file_sd_config "True" Cuando se establece en falso, no se provisionará el file_sd por defecto.
promtail_apt_update_cache "True" Cuando se establece en falso, el rol no actualizará la caché de APT por su cuenta.

Para cada sección (promtail_config_clients, promtail_config_server, promtail_config_positions, promtail_config_scrape_configs, promtail_target_config), la configuración se puede pasar de acuerdo con la configuración oficial de promtail. El rol convertirá las variables de ansible en la respectiva configuración yaml para loki.

Ejemplo de Playbook

Playbook básico que asumirá que loki escuchará en http://127.0.0.1:3100 con una configuración sencilla para raspar logs de /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

Un ejemplo más complejo que sobrescribe la configuración de servidor, cliente y posiciones proporcionando una configuración de raspado para /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

Pruebas Locales

La forma preferida de probar el rol localmente es usar Docker y molecule (v3.x). Tendrás que instalar Docker en tu sistema. Consulta "Comenzar" para un paquete de Docker adecuado para tu sistema. Usamos tox para simplificar el proceso de pruebas en múltiples versiones de ansible. Para instalar tox, ejecuta:

pip3 install tox

Para ejecutar pruebas en todas las versiones de ansible (ADVERTENCIA: esto puede llevar tiempo):

tox

Para ejecutar un comando moleculare personalizado en un entorno personalizado solo con la prueba predeterminada:

tox -e ansible29 -- molecule test -s default

Para más información sobre molecule, ve su documentación.

Si deseas ejecutar pruebas en un host Docker remoto, simplemente especifica la variable DOCKER_HOST antes de ejecutar las pruebas de tox.

CI

Se utilizan acciones de Github para probar y validar este rol de ansible a través de ansible-later y molecule. Las pruebas de molecule se ejecutarán en varios sistemas operativos y versiones de ansible para asegurar la compatibilidad.

Licencia

Este proyecto está bajo la Licencia MIT. Consulta LICENSE para más detalles.

Mantenedores y Contribuyentes

Instalar
ansible-galaxy install patrickjahns.promtail
Licencia
mit
Descargas
514.5k
Propietario
Site Reliability Engineer with a ❤️ for "everything as code". Passionate about software craftsmanship and deliberately breaking things (aka Chaos Engineering)