patrickjahns.promtail

Ansible 角色:promtail

测试 许可证 Ansible 角色 GitHub 标签

描述

使用 ansible 部署 promtail。支持 amd64 和 arm 架构。 有关最近的更改,请查看 CHANGELOG 或查看 github 发布

需求

  • Ansible >= 2.7

角色变量

所有可以被覆盖的变量存储在 defaults/main.yml 文件和下面的表中。

名称 默认值 描述
promtail_version "3.0.0" promtail 包的版本。也可以接受 latest 作为参数。
promtail_custom_checksum "" 自定义 checksum 用于自定义构建的 promtail 二进制文件。
promtail_binary_local_dir "" 允许使用本地包而不是从 GitHub 分发的包。作为参数,它接受 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 promtail 将推送结果的服务器 URL。
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 的日志级别(可以是 debuginfowarnerror)。
promtail_config_include_default_file_sd_config "True" 设置为 false 时,默认的 file_sd 将不会被配置。
promtail_apt_update_cache "True" 设置为 false 时,角色将不会自己更新 APT 缓存。

对于每个部分(promtail_config_clientspromtail_config_serverpromtail_config_positionspromtail_config_scrape_configspromtail_target_config),配置可以按照 官方 promtail 配置 进行传递。 该角色将把 ansible 变量转换为 loki 的相应 yaml 配置。

示例剧本

基本剧本假定 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 主机上运行测试,只需在运行 tox 测试之前指定 DOCKER_HOST 变量。

CI

GitHub Actions 被用来通过 ansible-latermolecule 测试和验证该 Ansible 角色。 Molecule 测试将在多个操作系统和多个 ansible 版本下运行,以确保兼容性。

许可证

此项目根据 MIT 许可证授权。有关更多详细信息,请参见 LICENSE

维护者和贡献者

安装
ansible-galaxy install patrickjahns.promtail
许可证
mit
下载
514.5k
拥有者
Site Reliability Engineer with a ❤️ for "everything as code". Passionate about software craftsmanship and deliberately breaking things (aka Chaos Engineering)