lespocky.telegraf_docker_in_docker
Telegraf Docker in Docker (telegraf-docker-in-docker)
一个用于在Docker容器中运行Telegraf代理并使用Docker输入插件的Ansible角色。
内容列表
背景
Telegraf 是 一个常用的代理,用于将监控指标发送到 InfluxDB。 这两者都是用Go语言编写的,传统的Linux发行版(如Debian GNU/Linux) 很难打包,因此在Docker中运行它们非常方便。
Telegraf Docker输入插件从Docker引擎API收集正在运行的Docker容器的指标。 在Docker容器中运行Telegraf代理需要访问主机上的Docker端点,这通常是一个UNIX套接字。 从安全的角度来看,以非特权用户身份运行代理是有意义的,这意味着在Docker主机上 需要有一个用户在 docker 组中,可以从容器内访问该端点。
这个项目将用户和容器的设置都放在一个Ansible角色中完成。
要求
容器是通过 community.docker.docker_container 模块 设置的, 该模块是 community.docker 集合的一部分。 您可能已经安装了它。 如果没有,请按照模块文档中的说明进行安装。
安装
可以通过您的 requirements.yml 安装此角色,可以从 Ansible Galaxy 或通过Git仓库安装。
角色变量
必填变量
tdid_influxdb_org
:- 描述: InfluxDB组织名称。
tdid_influx_token
:- 描述: InfluxDB API令牌。 推荐不要将其放入剧本中,请使用保密库或 安全查找!
可选变量
tdid_conf_dir
:- 默认值:
"/etc"
- 描述: 角色将配置文件复制到的主机上的目标目录。
- 默认值:
tdid_docker_image
:- 默认值:
"telegraf:latest"
- 描述: "telegraf" 和某个标签的组合。 默认使用来自 Docker Hub 的最新镜像。
- 示例:
"telegraf:latest"
"telegraf:alpine"
"telegraf:1.23"
"telegraf:1.24-alpine"
- 默认值:
tdid_influxdb_url
:- 默认值:
"http://localhost:8086"
- 描述: 运行InfluxDB节点的节点URL。
- 默认值:
tdid_influxdb_bucket
:- 默认值:
"default"
- 描述: 写入的目标桶。
- 默认值:
tdid_timezone
:- 默认值:
"UTC"
- 描述: 传递给telegraf容器的环境变量
TZ
。 - 示例:
Europe/Berlin
Asia/Nepal
- 默认值:
tdid_user
:- 默认值:
"telegraf"
- 描述: 在主机上创建或修改的系统用户。
- 背景: 将任意主机用户映射到容器用户并不容易。 主机上的访问权限适用于相同的数值UID和GID 在容器内部。 访问主机上的某些内容的容器内部进程必须 使用主机上所需的uid/gid。 必须有一个用户在docker组中,以便在没有超级用户权限的情况下访问 Docker引擎API端点。 如果在主机上还不存在,则会创建此用户作为 系统用户,并将其加入'docker'组。 Telegraf代理可以使用该UID在容器内运行。
- 默认值:
依赖关系
不使用其他Galaxy角色,仅使用上述列出的社区模块。
示例剧本
只需包含角色并设置一些 变量。
最小示例
- hosts: servers
roles:
- role: telegraf_docker_in_docker
vars:
tdid_influxdb_org: Home
tdid_influx_token: "{{ lookup( … ) }}"
完整示例
- hosts: servers
roles:
- role: telegraf_docker_in_docker
vars:
tdid_influxdb_org: Home
tdid_influx_token: "{{ lookup( … ) }}"
tdid_conf_dir: "/etc/telegraf"
tdid_influxdb_bucket: devops
tdid_influxdb_url: "http://influx.example.org:8086"
tdid_docker_image: telegraf:1.24-alpine
tdid_timezone: "Europe/Berlin"
tdid_user: telegraf
贡献
欢迎提交拉取请求。
许可证
该项目根据 MIT 许可证 进行许可,除非文件中另有说明,并遵守 REUSE合规性。
© 2022 Alexander Dahl 和贡献者
作者信息
由 Alexander Dahl 为 Netz39 基础设施监控编写。