Поиск по сайту:

Как установить стек TIG (Telegraf, InfluxDB и Grafana) на Ubuntu 22.04


Это руководство существует для этих версий ОС

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 18.04 (Bionic Beaver)

На этой странице

  1. Предпосылки
  2. Шаг 1. Настройка брандмауэра
  3. Шаг 2. Установите InfluxDB
  4. Шаг 3. Создание базы данных InfluxDB и учетных данных пользователя
  5. Шаг 4. Установите Telegraf
  6. Шаг 5. Убедитесь, что статистика Telegraf сохраняется в InfluxDB.
  7. Шаг 6. Установите Grafana
  8. Шаг 7. Настройка источника данных Grafana
  9. Шаг 8. Настройка информационных панелей Grafana
  10. Шаг 9. Настройка предупреждений и уведомлений
    1. Условия
    2. Правило
    3. Отсутствие данных и обработка ошибок

    Стек TIG (Telegraf, InfluxDB и Grafana) — это аббревиатура от платформы инструментов с открытым исходным кодом, упрощающих сбор, хранение, графическое отображение и оповещение системных показателей. Вы можете отслеживать и визуализировать такие показатели, как память, дисковое пространство, вошедшие в систему пользователи, загрузка системы, использование подкачки, время безотказной работы, запущенные процессы и т. д. из одного места. Инструменты, используемые в стеке, следующие:

    • Telegraf — это агент сбора метрик с открытым исходным кодом для сбора и отправки данных и событий из баз данных, систем и датчиков IoT. Он поддерживает различные плагины вывода, такие как InfluxDB, Graphite, Kafka и т. д., которым он может отправлять собранные данные.
    • InfluxDB — это база данных временных рядов с открытым исходным кодом, написанная на языке Go. Он оптимизирован для быстрого хранения с высокой доступностью и подходит для всего, что связано с большими объемами данных с отметками времени, включая метрики, события и аналитику в реальном времени.
    • Grafana – это пакет для визуализации и мониторинга данных с открытым исходным кодом. Он поддерживает различные плагины ввода, такие как Graphite, ElasticSearch, InfluxDB и т. д. Он предоставляет красивую панель инструментов и метрическую аналитику, позволяющую визуализировать и отслеживать любые системные метрики и данные о производительности.

    В этом руководстве вы узнаете, как установить и настроить стек TIG на одном сервере Ubuntu 22.04.

    Предпосылки

    1. A server running Ubuntu 22.04.

    2. A non-sudo user with root privileges.

    3. The uncomplicated Firewall(UFW) is enabled and running.

    4. Ensure that everything is updated.

      $ sudo apt update && sudo apt upgrade
      

    Шаг 1. Настройте брандмауэр

    Прежде чем устанавливать какие-либо пакеты, первым шагом является настройка брандмауэра для открытия портов для InfluxDB и Grafana.

    Проверьте состояние брандмауэра.

    $ sudo ufw status
    

    Вы должны увидеть что-то вроде следующего.

    Status: active
    
    To                         Action      From
    --                         ------      ----
    OpenSSH                    ALLOW       Anywhere
    OpenSSH (v6)               ALLOW       Anywhere (v6)
    

    Откройте порт 8086 для InfluxDB и 3000 для сервера Grafana.

    $ sudo ufw allow 8086
    $ sudo ufw allow 3000
    

    Проверьте статус еще раз для подтверждения.

    $ sudo ufw status
    Status: active
    
    To                         Action      From
    --                         ------      ----
    OpenSSH                    ALLOW       Anywhere
    8086                       ALLOW       Anywhere
    3000                       ALLOW       Anywhere
    OpenSSH (v6)               ALLOW       Anywhere (v6)
    8086 (v6)                  ALLOW       Anywhere (v6)
    3000 (v6)                  ALLOW       Anywhere (v6)
    

    Шаг 2 — Установите InfluxDB

    Мы будем использовать официальный репозиторий InfluxDB для его установки.

    Загрузите GPG-ключ InfluxDB.

    $ wget -q https://repos.influxdata.com/influxdb.key
    

    Импортируйте ключ GPG на сервер.

    $ echo '23a1c8836f0afc5ed24e0486339d7cc8f6790b83886c4c96995b88a061c5bb5d influxdb.key' | sha256sum -c && cat influxdb.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdb.gpg > /dev/null
    

    Импортируйте репозиторий InfluxDB.

    $ echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdb.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
    

    Обновите список системных репозиториев.

    $ sudo apt update
    

    У вас есть возможность установить InfluxDB 1.8.x или 2.0.x. Однако лучше использовать последнюю версию. Установите InfluxDB.

    $ sudo apt install influxdb2
    

    Запустите службу InfluxDB.

    $ sudo systemctl start influxdb
    

    Проверить статус услуги.

    $ sudo systemctl status influxdb
    ? influxdb.service - InfluxDB is an open-source, distributed, time series database
         Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; vendor preset: enabled)
         Active: active (running) since Tue 2022-09-13 00:00:27 UTC; 42s ago
           Docs: https://docs.influxdata.com/influxdb/
        Process: 12514 ExecStart=/usr/lib/influxdb/scripts/influxd-systemd-start.sh (code=exited, status=0/SUCCESS)
       Main PID: 12515 (influxd)
          Tasks: 7 (limit: 1030)
         Memory: 48.5M
            CPU: 547ms
         CGroup: /system.slice/influxdb.service
                 ??12515 /usr/bin/influxd
    ........
    

    Шаг 3 — Создайте базу данных InfluxDB и учетные данные пользователя

    Чтобы хранить данные из Telegraf, вам необходимо настроить базу данных Influx и пользователя.

    InfluxDB поставляется с инструментом командной строки под названием influx для взаимодействия с сервером InfluxDB. Думайте о influx как об инструменте командной строки mysql.

    Выполните следующую команду, чтобы выполнить первоначальную настройку Influx.

    $ influx setup
    > Welcome to InfluxDB 2.0!
    ? Please type your primary username navjot
    ? Please type your password ***************
    ? Please type your password again ***************
    ? Please type your primary organization name howtoforge
    ? Please type your primary bucket name tigstack
    ? Please type your retention period in hours, or 0 for infinite 360
    ? Setup with these parameters?
      Username:          navjot
      Organization:      howtoforge
      Bucket:            tigstack
      Retention Period:  360h0m0s
     Yes
    User    Organization    Bucket
    navjot  howtoforge      tigstack
    

    Вам необходимо настроить исходное имя пользователя, пароль, название организации, имя основной корзины для хранения данных и период хранения этих данных в часах. Ваши данные хранятся в файле /home/username/.influxdbv2/configs.

    Вы также можете выполнить эту настройку, запустив URL-адрес http://:8086/ в своем браузере. После того, как вы выполнили первоначальную настройку, вы можете войти в систему по URL-адресу с учетными данными, созданными выше.

    Вас должна приветствовать следующая панель инструментов.

    В процессе первоначальной настройки создается токен по умолчанию, который имеет полный доступ для чтения и записи ко всем организациям в базе данных. Вам нужен новый токен в целях безопасности, который будет подключаться только к организации и корзине, к которой мы хотим подключиться.

    Чтобы создать новый токен, щелкните следующий значок на левой боковой панели и щелкните ссылку Токены API, чтобы продолжить.

    Вы попадете на страницу токенов API. Здесь вы увидите токен по умолчанию, который мы создали во время начальной настройки.

    Нажмите кнопку «Создать токен» и выберите параметр «Чтение/запись токена», чтобы запустить новое всплывающее окно наложения. Дайте имя маркеру (telegraf) и выберите корзину по умолчанию, которую мы создали в разделах чтения и записи.

    Нажмите Сохранить, чтобы завершить создание токена. Нажмите на имя вновь созданного токена, чтобы открыть всплывающее окно со значением токена.

    Сохраните его сейчас, так как он понадобится нам позже.

    На этом установка и настройка InfluxDB завершена. Далее нам нужно установить Telegraf.

    Шаг 4 - Установите Телеграф

    Telegraf и InfluxDB используют один и тот же репозиторий. Это означает, что вы можете установить Telegraf напрямую.

    $ sudo apt install telegraf
    

    Служба Telegrafs включается и запускается автоматически во время установки.

    Telegraf — это агент, управляемый плагинами, и имеет 4 типа плагинов:

    <старт>

  11. Плагины ввода собирают метрики.
  12. Подключаемые модули процессора преобразуют, оформляют и фильтруют показатели.
  13. Подключаемые модули агрегатора создают и объединяют показатели.
  14. Плагины вывода определяют места назначения, куда отправляются метрики, включая InfluxDB.

Telegraf хранит свою конфигурацию для всех этих плагинов в файле /etc/telegraf/telegraf.conf. Первый шаг — подключить Telegraf к InfluxDB, включив выходной плагин influxdb_v2. Откройте файл /etc/telegraf/telegraf.conf для редактирования.

$ sudo nano /etc/telegraf/telegraf.conf

Найдите строку [[outputs.influxdb_v2]] и раскомментируйте, удалив перед ней #. Отредактируйте код под ним следующим образом.

# # Configuration for sending metrics to InfluxDB 2.0
 [[outputs.influxdb_v2]]
#   ## The URLs of the InfluxDB cluster nodes.
#   ##
#   ## Multiple URLs can be specified for a single cluster, only ONE of the
#   ## urls will be written to each interval.
#   ##   ex: urls = ["https://us-west-2-1.aws.cloud2.influxdata.com"]
   urls = ["http://127.0.0.1:8086"]
#
#   ## Token for authentication.
   token = "$INFLUX_TOKEN"
#
#   ## Organization is the name of the organization you wish to write to.
   organization = "howtoforge"
#
#   ## Destination bucket to write into.
   bucket = "tigstack"

Вставьте значение токена InfluxDB, сохраненное ранее, вместо переменной $INFLUX_TOKEN в приведенном выше коде.

Найдите строку ПЛАГИНЫ ВВОДА, и вы увидите следующие подключаемые модули ввода, включенные по умолчанию.

# Read metrics about cpu usage
[[inputs.cpu]]
  ## Whether to report per-cpu stats or not
  percpu = true
  ## Whether to report total system cpu stats or not
  totalcpu = true
  ## If true, collect raw CPU time metrics
  collect_cpu_time = false
  ## If true, compute and report the sum of all non-idle CPU states
  report_active = false
  ## If true and the info is available then add core_id and physical_id tags
  core_tags = false


# Read metrics about disk usage by mount point
[[inputs.disk]]
  ## By default stats will be gathered for all mount points.
  ## Set mount_points will restrict the stats to only the specified mount points.
  # mount_points = ["/"]

  ## Ignore mount points by filesystem type.
  ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]

  ## Ignore mount points by mount options.
  ## The 'mount' command reports options of all mounts in parathesis.
  ## Bind mounts can be ignored with the special 'bind' option.
  # ignore_mount_opts = []


# Read metrics about disk IO by device
[[inputs.diskio]]
....
....

# Get kernel statistics from /proc/stat
[[inputs.kernel]]
  # no configuration


# Read metrics about memory usage
[[inputs.mem]]
  # no configuration
  
# Get the number of processes and group them by status
[[inputs.processes]]
  # no configuration


# Read metrics about swap memory usage
[[inputs.swap]]
  # no configuration


# Read metrics about system load & uptime
[[inputs.system]]
  # no configuration

Вы можете настроить дополнительные входные плагины в зависимости от ваших требований, включая Apache Server, контейнеры Docker, Elasticsearch, брандмауэр iptables, Kubernetes, Memcached, MongoDB, MySQL, Nginx, PHP-fpm, Postfix, RabbitMQ, Redis, Varnish, Wireguard, PostgreSQL и т. д.

Когда вы закончите, сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

Перезапустите службу Telegraf после того, как вы закончите применение изменений.

$ sudo systemctl restart telegraf

Шаг 5. Убедитесь, что статистика Telegraf хранится в InfluxDB.

Прежде чем продолжить, вам необходимо убедиться, что статистика Telegraf правильно собирается и передается в InfluxDB. Откройте пользовательский интерфейс InfluxDB в своем браузере, щелкните третий значок на левой боковой панели и выберите меню Buckets.

Нажмите на tigstack, и вы должны увидеть следующую страницу.

Нажмите на название корзины, а затем нажмите на одно из значений в фильтре _measurement и продолжайте нажимать на другие значения по мере их появления. Когда вы закончите, нажмите кнопку «Отправить». Вы должны увидеть график вверху. Возможно, вам придется подождать некоторое время, пока появятся данные.

Это должно подтвердить, что данные передаются правильно.

Шаг 6 — Установите Графану

Мы будем использовать официальный репозиторий Grafana для его установки. Импортируйте GPG-ключ Grafana.

$ sudo wget -q -O /usr/share/keyrings/grafana.key https://packages.grafana.com/gpg.key

Добавьте репозиторий в вашу систему.

$ echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

Обновите список системных репозиториев.

$ sudo apt update

Установите Графану.

$ sudo apt install grafana

Запустите и включите службу Grafana.

$ sudo systemctl enable grafana-server --now

Проверьте статус услуги.

$ sudo systemctl status grafana-server
? grafana-server.service - Grafana instance
     Loaded: loaded (/lib/systemd/system/grafana-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-09-13 01:04:47 UTC; 2s ago
       Docs: http://docs.grafana.org
   Main PID: 13674 (grafana-server)
      Tasks: 7 (limit: 1030)
     Memory: 104.6M
        CPU: 1.050s
     CGroup: /system.slice/grafana-server.service
             ??13674 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/run/grafana/grafana-server.pid --packaging=deb cfg:default.paths.logs=/var/log/grafana 
.......

Шаг 7 — Настройте источник данных Grafana

Запустите URL-адрес http://:3000 в своем браузере, и следующая страница входа в Grafana должна приветствовать вас.

Войдите с именем пользователя по умолчанию admin и паролем admin. Далее вам нужно установить новый пароль по умолчанию.

Вас встретит следующая домашняя страница Grafana. Нажмите кнопку «Добавить первый источник данных».

Нажмите кнопку InfluxDB.

На следующей странице выберите Flux в раскрывающемся меню в качестве языка запросов. Вы можете использовать InfluxQL в качестве языка запросов, но его сложнее настроить, так как по умолчанию он поддерживает только InfluxDB v1.x. Flux поддерживает InfluxDB v2.x, и его проще установить и настроить.

Введите следующие значения.

URL-адрес: http://localhost:8086

Доступ: сервер

Основные сведения об аутентификации

Пользователь: navjot

Пароль:

Детали InfluxDB

Организация: Howtoforge

Токен:

Ведро по умолчанию: tigstack

Нажмите кнопку «Сохранить и протестировать», и вы должны увидеть подтверждающее сообщение, подтверждающее, что установка прошла успешно.

Шаг 8. Настройте информационные панели Grafana.

Следующим шагом будет настройка панелей инструментов Grafana. Нажмите на знак с четырьмя квадратами и выберите Dashboards, чтобы открыть экран Dashboard Create.

На следующей странице нажмите кнопку «Добавить новую панель», чтобы открыть следующий экран.

Вставьте следующий код в редактор запросов. Этот

from(bucket: "NAMEOFYOUBUCKET")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "cpu")
  |> filter(fn: (r) => r["_field"] == "usage_idle")
  |> filter(fn: (r) => r["cpu"] == "cpu-total")
  |> filter(fn: (r) => r["host"] == "NAMEOFYOURHOST")
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
  |> map(fn: (r) => ({ r with _value: r._value * -1.0 + 100.0 }))
  |> toFloat()
  |> yield(name: "mean")

Используйте имя корзины, которое мы использовали выше. И имя хоста, которое вы можете получить из файла /etc/hostname.

Приведенный выше код рассчитает использование ЦП и создаст для него график. Дайте панели название.

Нажмите кнопку «Инспектор запросов», а затем нажмите кнопку «Обновить», чтобы убедиться, что ваш запрос работает успешно. Щелкните значок крестика, чтобы закрыть инспектор.

Вы также можете назвать ось, используя поле «Метка» справа под разделом «Ось».

Нажмите кнопку «Применить», чтобы сохранить панель.

Нажмите кнопку «Сохранить панель управления» после завершения.

Дайте имя панели инструментов и нажмите «Сохранить», чтобы закончить.

Откроется панель инструментов, а затем нажмите кнопку «Добавить панель», чтобы создать другую панель.

Повторите процесс, создав другую панель для использования ОЗУ.

from(bucket: "NAMEOFYOUBUCKET")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "mem")
  |> filter(fn: (r) => r["_field"] == "used_percent")
  |> filter(fn: (r) => r["host"] == "NAMEOFYOURHOST")
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
  |> yield(name: "mean")

И используйте следующий код для отображения использования жесткого диска.

from(bucket: "NAMEOFYOURBUCKET")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "disk")
  |> filter(fn: (r) => r["_field"] == "used")
  |> filter(fn: (r) => r["path"] == "/")
  |> filter(fn: (r) => r["host"] == "NAMEOFYOURHOST")
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
  |> map(fn: (r) => ({ r with _value: r._value / 1000000.0 }))
  |> toFloat()  
  |> yield(name: "mean")

Вы можете создавать неограниченное количество панелей.

Приведенный выше код основан на языке сценариев Flux. К счастью, вам не нужно учить язык, чтобы писать запросы. Вы можете сгенерировать запрос из URL-адреса InfluxDB. Хотя изучение языка может помочь в оптимизации запросов.

Вам нужно вернуться на панель инструментов InfluxDB и открыть страницу «Обзор», чтобы получить запрос.

Нажмите на название корзины, а затем нажмите на одно из значений в фильтре _measurement и продолжайте нажимать на другие значения по мере их появления. Когда вы закончите, нажмите кнопку «Редактор сценариев», и вы должны увидеть следующую страницу. График тоже надо обновить.

Скопируйте показанный запрос, и теперь вы можете использовать его на панели инструментов Grafana для построения графиков.

Шаг 9. Настройте оповещения и уведомления

Основное использование настройки мониторов — своевременное получение предупреждений, когда значение превышает определенный порог.

Первый шаг — установить место назначения, куда вы хотите получать оповещения. Вы можете получать уведомления по электронной почте, Slack, Kafka, Google Hangouts Chat, Microsoft Teams, Telegram и т. д.

Мы включим уведомления по электронной почте для нашего руководства. Чтобы настроить уведомления по электронной почте, нам нужно сначала настроить службу SMTP. Откройте файл /etc/grafana/grafana.ini для настройки SMTP.

$ sudo nano /etc/grafana/grafana.ini

Найдите в нем следующую строку [smtp]. Раскомментируйте следующие строки и введите значения для пользовательского SMTP-сервера.

[smtp]
enabled = true
host = email-smtp.us-west-2.amazonaws.com:587
user = YOURUSERNAME
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
password = YOURUSERPASSWORD
;cert_file =
;key_file =
;skip_verify = false
from_address = 
from_name = HowtoForge Grafana
# EHLO identity in SMTP dialog (defaults to instance_name)
;ehlo_identity = dashboard.example.com
# SMTP startTLS policy (defaults to 'OpportunisticStartTLS')
;startTLS_policy = NoStartTLS

Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

Перезапустите сервер Grafana, чтобы применить настройки.

$ sudo systemctl restart grafana-server

Откройте страницу Grafana, нажмите значок «Оповещение» и нажмите «Контактные точки».

Grafana автоматически создает и настраивает контактную точку электронной почты по умолчанию, которую необходимо настроить с правильным адресом электронной почты. Нажмите кнопку редактирования в контактной точке grafana-default-email.

Введите данные, чтобы настроить канал уведомлений по электронной почте.

Если вы хотите отправить дополнительное сообщение, щелкните ссылку Дополнительные настройки электронной почты и введите текст сообщения.

Нажмите Тест, чтобы проверить, работают ли настройки электронной почты. Нажмите Сохранить, когда закончите.

Теперь, когда мы настроили каналы уведомлений, нам нужно настроить оповещения о том, когда получать эти электронные письма. Чтобы настроить оповещения, вам нужно вернуться к панелям панели инструментов.

Нажмите Панель инструментов >> Обзор, чтобы открыть страницу панели инструментов.

Нажмите на панель инструментов, которую мы только что создали, и вы получите ее домашнюю страницу с различными панелями. Чтобы отредактировать панель, нажмите на название панели, и появится раскрывающееся меню. Щелкните ссылку Изменить, чтобы продолжить.

Нажмите на панель оповещений и нажмите кнопку «Создать правило оповещения на этой панели», чтобы настроить новое оповещение.

Теперь вы можете настроить условия, при которых Grafana будет отправлять оповещения.

По умолчанию выбран тип оповещения, управляемый Grafana. Щелкните раскрывающееся меню, чтобы изменить диапазон времени на «Последние 15 минут», что означает, что он будет проверять от 15 минут назад до настоящего времени.

Условия

Grafana работает с запросом следующего формата, чтобы определить, когда запускать оповещение.

avg() OF query(A) IS BELOW 14

  • avg() определяет, как значение для каждой серии должно быть уменьшено до сопоставимого значения по сравнению с пороговым значением. Вы можете щелкнуть имя функции, чтобы выбрать другую функцию, такую как avg(), min(), max(), sum(), count() и т. д.

Вы можете добавить второе условие под ним, нажав кнопку + под первым условием. В настоящее время вы можете использовать операторы AND и OR только между несколькими условиями.

Правило

  • Имя — введите описательное имя для оповещения.
  • Папка. Создайте или выберите уже существующую папку для хранения правила уведомления.
  • Группа. Введите название группы оповещений. Оповещения в одной группе оцениваются через один и тот же интервал времени.
  • Оценивать каждые: укажите, как часто Grafana должна оценивать оповещение. Его также называют интервалом оценки. Здесь вы можете установить любое желаемое значение.

Нет данных и обработка ошибок

Вы можете настроить, как Grafana должна обрабатывать запросы, которые не возвращают данные или возвращают только нулевые значения, используя следующие условия:

<старт>

  • Нет данных. Установите для правила состояние Нет данных.
  • Предупреждение. Установите для правила состояние Предупреждение.
  • Хорошо. Установите для правила оповещения значение ОК, так как вы получите оповещение, даже если все в порядке.

    Вы можете указать Grafana, как обрабатывать ошибки выполнения или тайм-аута.

    <старт>

  • Предупреждение. Установите для правила состояние Предупреждение.
  • Хорошо. Установите для правила оповещения значение ОК, так как вы получите оповещение, даже если все в порядке.
  • Ошибка. Установите для правила оповещения значение Ошибка, чтобы указать на наличие проблемы.

    Когда вы закончите, нажмите кнопку Предварительный просмотр предупреждений, чтобы убедиться, что все работает нормально. Нажмите кнопку «Сохранить и выйти» в правом верхнем углу, чтобы завершить добавление оповещения. Теперь вы должны начать получать оповещения на свою электронную почту.

    Заключение

    На этом руководство по установке и настройке стека TIG на сервере Ubuntu 22.04 завершается. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.