dj-wasabi.telegraf

dj-wasabi.telegraf

ビルドステータス:

ビルドステータス

この役割はTelegrafをインストールして設定します。

Telegrafは、Goで書かれたエージェントで、実行しているシステムや他のサービスからメトリクスを収集し、InfluxDBに書き込みます。

デザイン目標は、メモリの使用量を最小限に抑え、プラグインシステムを備えて、コミュニティの開発者が有名なサービス(Hadoop、Postgres、Redisなど)やサードパーティのAPI(Mailchimp、AWS CloudWatch、Google Analyticsなど)からメトリクスを簡単に収集できるようにすることです。

(https://github.com/influxdb/telegraf)

要件

サポートされているシステム

この役割は以下のシステムをサポートしています:

  • Red Hat
  • Debian
  • Ubuntu
  • Docker コンテナ
  • (Open)Suse
  • Windows(最善を尽くします)
  • FreeBSD(最善を尽くします)
  • Archlinux(「オンライン」モードのみ)

そのため、これらのシステムのいずれかが必要です.. :-) 他のシステムでこの役割を使用する際は、プルリクエストや提案を送信してください。

InfluxDB

ネットワーク上のどこかでInfluxDBインスタンスが実行されている必要があります。または、https://github.com/influxdata/telegraf/#output-pluginsで見つかる他の出力タイプのいずれかが必要です。

Docker

ターゲットホストにDockerがインストールされている必要があります。Dockerをインストールするために以下の役割をお勧めします:

この設定は、Dockerコンテナ内にTelegrafが必要な場合のみ必要です(telegraf_agent_docker: True)。

アップグレード

0.7.0

問題がありました:

telegraf_plugins_extraを設定し、ansibleを実行し、プラグインを削除して再度ansibleを実行すると、プラグインがマシンに残ります。

役割変数

Ansible 役割固有の変数

インストールするバージョンを指定します:

  • telegraf_agent_version: インストールするTelegrafのバージョン。telegraf_agent_package_statelatestに設定されている場合、このプロパティと値は無視されます。デフォルト値: 1.10.0

Telegrafをターゲットホストにインストールする必要があります。インストール方法は次の4つです:

  • パッケージマネージャを使って(yumaptzypperなど)("repo");
  • https://dl.influxdata.com/からダウンロードする("online");
  • 提供されていて、ターゲットホストに既に存在しますが、まだインストール/設定されていない場合("offline");
  • ターゲットホストに既にインストールされているか、手動で実行されているが、まだ設定されていない場合("manual");

これは、telegraf_agent_package_methodを適切な値(repoonlineoffline、またはmanual)に設定することで構成できます。

Telegraf パッケージ

これらのプロパティは、どのように何のパッケージをインストールするかを設定します。

  • telegraf_agent_package: インストールするTelegrafパッケージの名前。telegraf_agent_package_methodonlineまたはofflineに設定されている場合、ファイルのフルパスを指定する必要があります。例: telegraf_agent_package: /tmp/telegraf.rpm。デフォルト: telegraf_agent_package: telegraf
  • telegraf_agent_package_method: 使用されるインストール方法。選択肢: repoofflineまたはonline
  • telegraf_agent_package_state: パッケージがpresentまたはlatestであるべきかどうか。latestに設定すると、telegraf_agent_versionは無視されます。デフォルト: present

Telegraf エージェントプロセスの設定

  • telegraf_agent_interval: サーバーにデータを送信するための間隔。デフォルト: 10
  • telegraf_agent_debug: Telegrafをデバッグモードで実行します。デフォルト: False
  • telegraf_agent_round_interval: 集計間隔を「interval」に丸めます。デフォルト: True
  • telegraf_agent_flush_interval: すべての出力のデフォルトデータフラッシュ間隔。デフォルト: 10
  • telegraf_agent_flush_jitter: フラッシュ間隔をランダムに変更します。デフォルト: 0
  • telegraf_agent_aws_tags: AWS EC2タグをTelegrafタグセクションに設定します。デフォルト: False
  • telegraf_agent_aws_tags_prefix: AWS EC2タグのプレフィックスを定義します。デフォルト: ""
  • telegraf_agent_collection_jitter: ランダムに収集を変更します。デフォルト: 0(v0.13以降)
  • telegraf_agent_metric_batch_size: エージェントメトリックのバッチサイズ。デフォルト: 1000 (v0.13以降)
  • telegraf_agent_metric_buffer_limit: エージェントメトリックバッファ制限。デフォルト: 10000 (v0.13以降)
  • telegraf_agent_quiet: Telegrafを静かモードで実行します(エラーメッセージのみ)。デフォルト: False(v0.13以降)
  • telegraf_agent_logfile: エージェントのログファイル名。デフォルト: ''(stdoutにログを出力することを意味します)(v1.1以降)
  • telegraf_agent_hostname: エージェントのホスト名。デフォルト: ansible_fqdn
  • telegraf_agent_omit_hostname: エージェントに「host」タグを設定しません。デフォルト: False(v1.1以降)

Docker 固有の役割変数:

  • telegraf_agent_docker: TelegrafをDockerコンテナとしてインストールします。デフォルト: False
  • telegraf_agent_docker_name: Dockerコンテナの名前。デフォルト: telegraf
  • telegraf_agent_docker_network_mode: Dockerコンテナのネットワークモード。デフォルト: bridge
  • telegraf_agent_docker_restart_policy: Dockerコンテナの再起動ポリシー。デフォルト: unless-stopped
  • telegraf_agent_docker_image_version: 使用するDocker Telegrafイメージのバージョン。デフォルト値はtelegraf_agent_versionに指定された値を含みます。latestに設定することで、提供されたDockerイメージの最新のタグを取得できます。
  • telegraf_uid_docker: ユーザーIDをオーバーライドします。デフォルト: 995
  • telegraf_gid_docker: グループIDをオーバーライドします。デフォルト: 998

エージェント設定の完全なリファレンス: https://github.com/influxdata/telegraf/blob/master/docs/CONFIGURATION.md#agent-configuration

追加情報

ansible_fqdnがホスト名の取得に問題を引き起こす

ansible_fqdnがホスト名の取得に問題を引き起こす件に関する追加情報 #105

バグの説明

一部のノードでは、主にlocalhost.localdomainのような奇妙なホスト名を受け取っています。それらのノードはhostnamectlで適切に設定されています。「ansible_fqdn」をデフォルトとして使用していることを確認しました。

ansible_fqdnとansible_hostnameが異なる結果を返し、時には非常に奇妙な結果となる場合があるようです。時には、DNS呼び出し(これらの場合は私の制御下にはありません)を行って名前を推測することがあります。

修正提案

私のプレイブックに次のパラメータを追加しました:

telegraf_agent_hostname: "{{ ansible_nodename }}"

タグの設定

Telegrafを実行しているホストのタグを設定できます:

telegraf_global_tags:
  - tag_name: some_name
    tag_value: some_value

出力を指定します。デフォルトはlocalhostに設定されていますので、正しいInfluxDBサーバーを指定してください:

telegraf_agent_output:
  - type: influxdb
    config:
      - urls = ["http://localhost:8086"]
      - database = "telegraf"
    tagpass:
      - cpu = ["cpu0"]

設定は1行ずつ構成に印刷されるため、次のように使うこともできます。

config:
    - # ドキュメンテーション行を印刷

そうすると、設定ファイルに印刷されます。

Dockerに関する特記事項

Docker イメージ

公式のInfluxdata Telegrafイメージが使用されます。telegraf_agent_versionはイメージタグに変換されます。

Docker マウント

Dockerコンテナは、基本的にホストシステム全体(読み取り専用)をマウントして、コンテナ内からDockerエンジンホストを監視します。具体的には:

- /etc/telegraf:/etc/telegraf:ro
- /:/hostfs:ro
- /etc:/hostfs/etc:ro
- /proc:/hostfs/proc:ro
- /sys:/hostfs/sys:ro
- /var/run:/var/run:ro

詳しい情報: https://github.com/influxdata/telegraf/blob/master/docs/FAQ.md

Docker設定の例

telegraf_agent_docker: True
# ホストネットワーキングモードを強制し、Dockerエンジンホストのトラフィックメトリクスを収集します。
telegraf_agent_docker_network_mode: host
# 特定のイメージタグを強制します。
telegraf_agent_version: 1.10.0-alpine

telegraf_plugins_default:
  - plugin: cpu
    config:
      - percpu = true
  - plugin: disk
    tagpass:
      - fstype = [ "ext4", "xfs" ]
    tagdrop:
      - path = [ "/etc", "/etc/telegraf", "/etc/hostname", "/etc/hosts", "/etc/resolv.conf" ]
  - plugin: io
  - plugin: mem
  - plugin: system
  - plugin: swap
  - plugin: netstat
  - plugin: processes
  - plugin: docker
    config:
      - endpoint = "unix:///var/run/docker.sock"
      - timeout = "5s"

Windows 固有の変数

注意

_ Windowsのサポートは最善を尽くします(様々なWindowsインスタンスでの変更をテスト/確認する手段がありません)。Windowsに特化したPRは、誰かがプルリクエストのためにWindowsのテストメカニズムを提供できるまで、ほとんど即座にマージされます。_

  • telegraf_win_install_dir: Telegrafがインストールされるディレクトリ。
  • telegraf_win_logfile: Telegrafのログファイルの場所。
  • telegraf_win_include: プラグイン設定を含むディレクトリ。

openSUSE 固有の変数

MacOS 固有の変数

注意

MacOSサポートもWindowsサポートと同様に最善を尽くしますが、正式にはサポートされていません。

  • telegraf_mac_user: Telegrafはこのユーザーとして実行されます(brewを使用して他のユーザーとして実行するのは問題があります)。

追加情報

似たような2つのプロパティがありますが、異なる目的で使用されます:

  • telegraf_plugins_default
  • telegraf_plugins_extra

telegraf_plugins_default

telegraf_plugins_defaultプロパティを使用して、Telegrafプラグインのデフォルトセットを使うように設定します。デフォルトで有効にすべき追加のプラグインで上書きできます。

telegraf_plugins_default:
  - plugin: cpu
    config:
      - percpu = true
  - plugin: disk
  - plugin: io
  - plugin: mem
  - plugin: system
  - plugin: swap
  - plugin: netstat

すべてのTelegrafエージェントには、これらがデフォルト設定として含まれています。

telegraf_plugins_extra

2番目のパラメーターであるtelegraf_plugins_extraは、サーバーの目標に特有のプラグインを追加するために使用できます。リストの代わりにハッシュを使用して、複数の変数ファイルから値をマージできます。以下は、MySQLデータベースサーバー用にこのパラメーターを使用する例です:

cat group_vars/mysql_database
telegraf_plugins_extra:
  mysql:
    config:
      - servers = ["root:{{ mysql_root_password }}@tcp(localhost:3306)/"]

この場合、telegraf_plugins_extra_exclusive変数を使用して、プレイブックによって生成されていないextra-pluginファイルを/etc/telegraf/telegraf.dから削除するオプションがあります。

Telegrafプラグインオプション:

  • tags: 特定の入力の測定に適用するk/vタグです。フィルタリングを強化するために、出力の段階で使用できます。
  • tagpass:(Telegraf 0.1.5以降で追加)メトリクスを現在のプラグインでフィルタリングするために使用されるタグ名と文字列の配列です。配列内の各文字列は、タグ名と正確に一致するかどうかがテストされ、一致すればメトリックは発出されます。
  • tagdrop:(Telegraf 0.1.5以降で追加)tagpassの逆。タグが一致する場合、メトリックは発出されません。これは、tagpassテストを通過したメトリックスに対してテストされます。
  • interval: このメトリックをどれくらいの頻度で収集するかを設定します。通常のプラグインは単一のグローバル間隔を使用しますが、特定のプラグインを多くまたは少なく実行する必要がある場合、ここで設定できます。
  • filter.name: logparserプラグインのgrokのような特別なフィルターが必要な場合の設定です。
  • filter.config: filter.nameの例のための追加設定です。(以下の例を参照)
  • sub_inputs: 入力が他のサブ入力を必要とする場合、ここに追加できます(以下の例を参照)。

例は次のようになります:

telegraf_plugins_default:
  - plugin: disk
    interval: 12
    tags:
      - diskmetrics = "true"
    tagpass:
      - fstype = [ "ext4", "xfs" ]
      - path = [ "/opt", "/home" ]

処理器を定義したい場合は、telegraf_processors変数を使用するだけで済みます。 例は以下のようになります:

telegraf_processors:
  - processor: rename
  - processor: rename.replace
    config:
        - tag = "level"
        - dest = "LogLevel"

logparserのgrokフィルターを使用する場合:

telegraf_plugins_extra:
    logparser:
    plugin: logparser
    config:
        - files = ["/var/log/messages"]
        - from_beginning = false
    filter:
        name: grok
        config:
        - patterns = ["invoked oom-killer"]

独自の設定を持つサブ入力を含めたい場合は次のようにします:

sqs:
  plugin: cloudwatch
  config:
    - region = "eu-west-1"
    - access_key = "foo"
    - secret_key = "bar"
    - period = "1m"
    - delay  = "2m"
    - interval = "1m"
    - namespace = "AWS/SQS"
    - statistic_include = ["average"]
  sub_inputs:
    metrics:
      - names = [
          "ApproximateAgeOfOldestMessage",
          "ApproximateNumberOfMessagesVisible",
        ]
    metrics.dimensions:
      - name = "QueueName"
      - value = "*"

依存関係

依存関係はありません

サンプルプレイブック

- hosts: servers
  roles:
     - { role: dj-wasabi.telegraf }

Molecule

この役割はMoleculeでテストするように設定されています。このページでMoleculeに関する詳細情報を見つけることができます: https://werner-dijkerman.nl/2016/07/10/testing-ansible-roles-with-molecule-testinfra-and-docker/

ライセンス

BSD

著者情報

問題があればお知らせください。プルリクエストも受け付けています! :-)

メール: ikben [ at ] werner-dijkerman . nl

プロジェクトについて

Installing and configuring Telegraf

インストール
ansible-galaxy install dj-wasabi.telegraf
ライセンス
mit
ダウンロード
787.8k
所有者
DevOps Engineer, Technical reviewer Packt Pub / Manning / BPB Online / O'Reilly Media