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によって書かれました。

プロジェクトについて

Run Telegraf Agent with Docker input plugin in Docker container

インストール
ansible-galaxy install lespocky.telegraf_docker_in_docker
ライセンス
other
ダウンロード
13.8k
所有者
Embedded Linux Developer