patrickjahns.promtail
Ansible 角色:promtail
描述
使用 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 的日志级别(可以是 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 变量转换为 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-later 和 molecule 测试和验证该 Ansible 角色。 Molecule 测试将在多个操作系统和多个 ansible 版本下运行,以确保兼容性。
许可证
此项目根据 MIT 许可证授权。有关更多详细信息,请参见 LICENSE。
维护者和贡献者
Deploy (loki) promtail
ansible-galaxy install patrickjahns.promtail