dj-wasabi.telegraf

dj-wasabi.telegraf

Status kompilacji:

Status kompilacji

Ta rola zainstaluje i skonfiguruje Telegraf.

Telegraf to agent napisany w Go, który zbiera metryki z systemu, na którym działa, lub z innych usług i zapisuje je w InfluxDB.

Celem projektu jest minimalizacja zużycia pamięci oraz system pluginów, aby programiści mogli łatwo dodawać obsługę zbierania metryk z popularnych usług (jak Hadoop, Postgres czy Redis) i interfejsów API innych firm (jak Mailchimp, AWS CloudWatch czy Google Analytics).

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

Wymagania

Obsługiwane systemy

Ta rola obsługuje następujące systemy:

  • Red Hat
  • Debian
  • Ubuntu
  • Kontener Docker
  • (Open)Suse
  • Windows (na zasadzie najlepszego wysiłku)
  • FreeBSD (na zasadzie najlepszego wysiłku)
  • Archlinux (tylko tryb "online")

Potrzebujesz więc jednego z tych systemów. :-) Zachęcam do przesyłania Pull Requestów lub sugestii, jeśli chcesz używać tej roli w innych systemach.

InfluxDB

Potrzebujesz instancji InfluxDB działającej gdzieś w swojej sieci. Lub jednego z innych typów wyjściowych, które znajdziesz na https://github.com/influxdata/telegraf/#output-plugins

Docker

Docker musi być zainstalowany na docelowym hoście. Mogę polecić te role do instalacji Dockera:

To dotyczy tylko sytuacji, gdy konfiguracja jest potrzebna dla Telegraf w kontenerze Docker (gdy telegraf_agent_docker: True).

Aktualizacja

0.7.0

Wystąpił problem:

Jeśli skonfiguruję telegraf_plugins_extra, uruchomię ansible, usunę plugin i uruchomię ansible ponownie, plugin pozostaje na maszynie.

Zmienne roli

Zmienne specyficzne dla roli Ansible

Określenie wersji do zainstalowania:

  • telegraf_agent_version: Wersja Telegraf do zainstalowania. Jeśli telegraf_agent_package_state jest ustawione na latest, ta właściwość i wartość są ignorowane. Domyślnie: 1.10.0

Jak zainstalować Telegraf. Istnieją cztery metody instalacji Telegraf na docelowym hoście:

  • Przez menedżera pakietów, takiego jak yum, apt lub zypper ("repo");
  • Poprzez pobranie z strony https://dl.influxdata.com/ ("online");
  • Już dostarczony i dostępny na docelowym hoście, ale nie jeszcze zainstalowany/skonfigurowany ("offline");
  • Już zainstalowany na docelowym hoście lub zrobiony ręcznie, ale nie jeszcze skonfigurowany ("manual");

Można to skonfigurować, ustawiając telegraf_agent_package_method na jedną z odpowiednich wartości (repo, online, offline lub manual).

Pakiet Telegraf

Te właściwości określają, jak i jaki pakiet zostanie zainstalowany.

  • telegraf_agent_package: Nazwa pakietu Telegraf do zainstalowania. Gdy telegraf_agent_package_method jest ustawione na online lub offline, musi zawierać pełną ścieżkę do pliku. Przykład: telegraf_agent_package: /tmp/telegraf.rpm. Domyślnie: telegraf_agent_package: telegraf.
  • telegraf_agent_package_method: Metoda instalacji, która ma być używana. Można wybrać między: repo, offline lub online.
  • telegraf_agent_package_state: Czy pakiet powinien być present czy latest. Gdy ustawione na latest, telegraf_agent_version zostanie zignorowane. Domyślnie: present

Konfiguracja procesu agenta Telegraf.

  • telegraf_agent_interval: Interwał skonfigurowany do wysyłania danych do serwera. Domyślnie: 10
  • telegraf_agent_debug: Uruchom Telegraf w trybie debugowania. Domyślnie: False
  • telegraf_agent_round_interval: Zaokrągla interwał zbierania do 'interval'. Domyślnie: True
  • telegraf_agent_flush_interval: Domyślny interwał opróżniania danych dla wszystkich wyjść. Domyślnie: 10
  • telegraf_agent_flush_jitter: Dodaje losowy czas do interwału opróżniania. Domyślnie: 0
  • telegraf_agent_aws_tags: Konfiguruje tagi AWS ec2 w sekcji tagów Telegraf. Domyślnie: False
  • telegraf_agent_aws_tags_prefix: Określa prefiks dla tagów AWS ec2. Domyślnie: ""
  • telegraf_agent_collection_jitter: Dodaje losowy czas do zbierania. Domyślnie: 0 (od v0.13)
  • telegraf_agent_metric_batch_size: Rozmiar wsadu metryk agenta. Domyślnie: 1000 (od v0.13)
  • telegraf_agent_metric_buffer_limit: Limit bufora metryk agenta. Domyślnie: 10000 (od v0.13)
  • telegraf_agent_quiet: Uruchom Telegraf w trybie cichym (tylko wiadomości o błędach). Domyślnie: False (od v0.13)
  • telegraf_agent_logfile: Nazwa pliku dziennika agenta. Domyślnie: '' (oznacza logowanie do stdout) (od v1.1)
  • telegraf_agent_hostname: Nazwa hosta agenta. Domyślnie: ansible_fqdn
  • telegraf_agent_omit_hostname: Nie ustawiaj tagu "host" w agencie. Domyślnie: False (od v1.1)

Zmienne roli specyficzne dla Dockera:

  • telegraf_agent_docker: Zainstaluj Telegraf jako kontener dockera. Domyślnie: False
  • telegraf_agent_docker_name: Nazwa kontenera dockera. Domyślnie: telegraf
  • telegraf_agent_docker_network_mode: Tryb sieciowy kontenera dockera. Domyślnie: bridge
  • telegraf_agent_docker_restart_policy: Polityka ponownego uruchamiania kontenera dockera. Domyślnie: unless-stopped
  • telegraf_agent_docker_image_version: Wersja obrazu Telegraf w Dockerze do użycia. Domyślnie zawiera wartość podaną dla telegraf_agent_version. Może być ustawiona na latest, aby uzyskać aktualny tag latest dla podanego obrazu Dockera.
  • telegraf_uid_docker: Nadpisuje identyfikator użytkownika. Domyślnie: 995
  • telegraf_gid_docker: Nadpisuje identyfikator grupy. Domyślnie: 998

Pełna dokumentacja ustawień agenta: https://github.com/influxdata/telegraf/blob/master/docs/CONFIGURATION.md#agent-configuration.

Dodatkowe informacje

problem z ansible_fqdn przy uzyskiwaniu hostname

Dodatkowe informacje dotyczące: problemu z ansible_fqdn przy uzyskiwaniu hostname #105

Opisz błąd

Na niektórych węzłach otrzymuję dziwne nazwy hostów, głównie localhost.localdomain. Te węzły pokazują poprawną konfigurację w hostnamectl. Zauważyłem, że używasz 'ansible_fqdn' jako domyślnej.

Okazuje się, że ansible_fqdn i ansible_hostname mogą dawać różne wyniki, a czasami nawet bardzo dziwne wyniki, ponieważ czasami wykonuje wywołania DNS (co nie jest pod moją kontrolą w takich przypadkach), aby określić te nazwy.

Propozycja naprawy

W moim playbooku dodałem ten parametr:

telegraf_agent_hostname: "{{ ansible_nodename }}"

Ustawianie tagów

Możesz ustawić tagi dla hosta uruchamiającego Telegraf:

telegraf_global_tags:
  - tag_name: some_name
    tag_value: some_value

Określając wyjście. Domyślnie ustawione jest na localhost, musisz określić poprawny serwer influxdb:

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

Konfiguracja będzie wydrukowana linia po linii, więc możesz również użyć:

config:
    - # Wydrukuj linię dokumentującą

i zostanie to wydrukowane w pliku konfiguracyjnym.

Szczegóły dotyczące Dockera

Obraz Dockera

Używany jest oficjalny Obraz Influxdata Telegraf. telegraf_agent_version będzie tłumaczyć się na tag obrazu.

Montaże Dockera

Proszę zauważyć, że kontener Dockera montuje zasadniczo cały twój system (tylko do odczytu), aby monitorować hosta silnika Dockera z wnętrza kontenera. Dokładnie:

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

Więcej informacji: https://github.com/influxdata/telegraf/blob/master/docs/FAQ.md.

Przykład konfiguracji Dockera

telegraf_agent_docker: True
# Wymusza tryb sieciowy hosta, aby można było zbierać metryki ruchu hosta silnika Docker.
telegraf_agent_docker_network_mode: host
# Wymusza użycie konkretnego tagu obrazu.
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"

Zmienne specyficzne dla Windows

UWAGA

Wsparcie dla Windows jest realizowane na zasadzie najlepszego wysiłku (nie mam możliwości testowania/weryfikowania zmian na różnych dostępnych instancjach Windows). Pull requesty specyficzne dla Windows są niemal natychmiast akceptowane, chyba że ktoś może zaoferować mechanizm testowy Windows przy pomocy Travis lub innej usługi dla Pull Requestów.

  • telegraf_win_install_dir: Katalog, w którym Telegraf będzie zainstalowany.
  • telegraf_win_logfile: Lokalizacja pliku dziennika Telegraf.
  • telegraf_win_include: Katalog, który będzie zawierał całą konfigurację pluginów.

Zmienne specyficzne dla openSUSE

Zmienne specyficzne dla MacOS

UWAGA

Wsparcie dla MacOS jest, podobnie jak wsparcie dla Windows, realizowane na zasadzie najlepszego wysiłku i nie jest oficjalnie wspierane.

  • telegraf_mac_user: Telegraf będzie działać jako ten użytkownik (potrzebny, ponieważ uruchamianie rzeczy jako inne użytkowniki przy użyciu brew jest problematyczne).

Dodatkowe informacje

Istnieją dwie właściwości, które są podobne, ale używane w różnych celach. Są to:

  • telegraf_plugins_default
  • telegraf_plugins_extra

telegraf_plugins_default

Za pomocą właściwości telegraf_plugins_default ustala się korzystanie z domyślnego zestawu wtyczek Telegraf. Możesz to nadpisać dodatkowymi wtyczkami, które powinny być włączone domyślnie.

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

Każdy agent Telegraf ma te wartości jako domyślną konfigurację.

telegraf_plugins_extra

Z kolei drugi parametr telegraf_plugins_extra może być używany do dodawania wtyczek specyficznych dla celu serwera. Jest to hasz, a nie lista, dzięki czemu można łączyć wartości z wielu plików z zmiennymi. Oto przykład użycia tego parametru dla serwerów baz danych MySQL:

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

Istnieje opcja usunięcia plików z dodatkowymi wtyczkami w /etc/telegraf/telegraf.d, jeśli nie zostały wygenerowane przez ten playbook za pomocą zmiennej telegraf_plugins_extra_exclusive.

Opcje pluginu Telegraf:

  • tags: Parowanie k/v tagów do zastosowania w pomiarach konkretnego inputu. Może być używane na każdym etapie dla lepszego filtrowania, na przykład w wyjściach.
  • tagpass: (dodane w Telegraf 0.1.5) nazwy tagów i tablice ciągów, które są używane do filtrowania metryk przez dany plugin. Każdy ciąg w tablicy jest testowany jako dokładne dopasowanie do nazwy tagu, a jeśli pasuje, metryka jest emitowana.
  • tagdrop: (dodane w Telegraf 0.1.5) Przeciwieństwo tagpass. Jeśli tag pasuje, metryka nie jest emitowana. To jest testowane na metrykach, które przeszły test tagpass.
  • interval: Jak często zbierać tę metrykę. Normalne wtyczki używają jednego globalnego interwału, ale jeśli jedna konkretna wtyczka powinna być uruchamiana rzadziej lub częściej, można to skonfigurować tutaj.
  • filter.name: Jak gdyby istniał dodatkowy filtr, który należy skonfigurować, na przykład grok dla wtyczki logparser.
  • filter.config: Dodatkowa konfiguracja dla - w przykładzie filter.name - filtru grok. (Zobacz przykład poniżej)
  • sub_inputs: Jeśli input wymaga innych sub-inputy, można je dodać tutaj (zobacz przykład poniżej).

Przykład mógłby wyglądać tak:

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

Jeśli chcesz zdefiniować procesory, możesz po prostu użyć zmiennej telegraf_processors. Przykład mógłby wyglądać tak:

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

Kiedy chcesz skorzystać z filtru grok do logparser:

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

Gdy chcesz dołączyć sub-inputy ze swoją własną konfiguracją:

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 = "*"

Zależności

Brak zależności

Przykładowy Playbook

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

Molecule

Ta rola jest skonfigurowana do testowania z Molecule. Możesz znaleźć więcej informacji na ten temat na tej stronie: https://werner-dijkerman.nl/2016/07/10/testing-ansible-roles-with-molecule-testinfra-and-docker/

Licencja

BSD

Informacje o autorze

Daj mi znać, jeśli masz jakiekolwiek problemy. Pull requesty są również akceptowane! :-)

mail: ikben [ at ] werner-dijkerman . nl

O projekcie

Installing and configuring Telegraf

Zainstaluj
ansible-galaxy install dj-wasabi.telegraf
Licencja
mit
Pobrania
787.8k
Właściciel
DevOps Engineer, Technical reviewer Packt Pub / Manning / BPB Online / O'Reilly Media