lespocky.telegraf_docker_in_docker
Telegraf Docker in Docker (telegraf-docker-in-docker)
Ansibleロールは、Dockerコンテナ内でDocker入力プラグインを使用してTelegrafエージェントを実行します。
目次
背景
Telegrafは、InfluxDBにメトリクスを送るためにしばしば使用されるエージェントです。 これらはGo言語で書かれており、従来のディストリビューション(Debian GNU/Linuxなど)にパッケージ化するのが難しいため、Dockerで実行するのが便利です。
Telegraf Docker入力プラグインは、Docker Engine APIから実行中のDockerコンテナのメトリクスを集めます。 Dockerコンテナ内でTelegrafエージェントを実行するには、ホスト上のDockerエンドポイントへのアクセスが必要です。通常はUNIXソケットです。 セキュリティの観点から、エージェントは特権のないユーザーとして実行するのが理にかなっており、そのためにはホストシステムのdockersグループにユーザーがいる必要があります。このユーザーはコンテナ内からそのエンドポイントにアクセスするのに使用されます。
このプロジェクトは、ユーザーとコンテナのセットアップを1つの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で実行する必要があります。 Super User権限なしでdocker engine apiエンドポイントにアクセスするには、dockerグループにユーザーが必要です。 ホスト上にすでに存在しない場合、このユーザーはシステムユーザーとして作成され、'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 とその貢献者たち
著者情報
Netz39のインフラ監視のために、Alexander Dahlによって書かれました。