Как настроить TOBS, стек наблюдаемости, для мониторинга Kubernetes

Статус: Устарел

Эта статья устарела и больше не поддерживается.

Причина

Установщик TOBS был объявлен устаревшим в исходном коде.

Смотрите вместо этого

Официальная документация TOBS.

Введение

TOBS, сокращение от The Observability Stack, представляет собой предварительно упакованный набор инструментов мониторинга и интерфейсов панелей управления, который можно установить в любой существующий кластер Kubernetes. В него входят многие из самых популярных инструментов открытого исходного кода для обеспечения наблюдаемости, такие как Prometheus и Grafana в качестве базы, включая Promlens, TimescaleDB, Alertmanager и другие. Вместе они обеспечивают простое, поддерживаемое решение для анализа трафика сервера и выявления любых потенциальных проблем с развертыванием в масштабах очень больших масштабов.

TOBS использует стандартные графики Helm Kubernetes для настройки и обновления развертываний. Его можно установить в любой кластер Kubernetes, но это можно продемонстрировать более эффективно, если вы управляете кластером с помощью kubectl с локальной машины, а не удаленного узла. Управляемый Kubernetes от DigitalOcean предоставит вам конфигурацию по умолчанию подобную этой.

В этом руководстве вы установите TOBS в существующий кластер Kubernetes и узнаете, как обновлять, настраивать и просматривать его компонентные панели инструментов.

Предварительные требования

Для выполнения этого руководства вам понадобится:

Шаг 1 — Проверка вашей конфигурации Kubernetes

Для установки TOBS сначала необходимо иметь действующую конфигурацию Kubernetes с установленным kubectl, с помощью которой вы можете проверить доступность ваших рабочих узлов. Вы можете протестировать это, запустив kubectl get nodes:

  1. kubectl get nodes

Если kubectl может подключиться к вашему кластеру Kubernetes и работает ожидаемо, этот командный запрос вернет список узлов со статусом Ready:

Output
NAME STATUS ROLES AGE VERSION pool-uqv8a47h0-ul5a7 Ready <none> 22m v1.21.5 pool-uqv8a47h0-ul5am Ready <none> 21m v1.21.5 pool-uqv8a47h0-ul5aq Ready <none> 21m v1.21.5

Если это успешно, вы можете перейти к Шагу 2. В противном случае вам следует проверить детали вашей конфигурации на наличие проблем.

По умолчанию kubectl будет искать файл по пути ~/.kube/config, чтобы понять ваше окружение. Чтобы проверить, существует ли этот файл и содержит ли он правильный синтаксис YAML, вы можете выполнить команду head, чтобы просмотреть несколько его первых строк, так:

  1. head ~/.kube/config
Output
apiVersion: v1 clusters: - cluster: certificate-authority-data: …

Если файл не существует, убедитесь, что вы вошли под тем же пользователем, который настроил Kubernetes. Пути ~/ отражают домашние каталоги отдельных пользователей, и конфигурации Kubernetes сохраняются по умолчанию для каждого пользователя.

Если вы используете управляемый кластер Kubernetes от DigitalOcean, убедитесь, что вы выполнили команду doctl kubernetes cluster kubeconfig save после настройки кластера, чтобы ваше локальное устройство могло аутентифицироваться в нем. Это создаст файл ~/.kube/config:

  1. doctl kubernetes cluster kubeconfig save your-cluster-name

Если вы используете это устройство для доступа к нескольким кластерам, вы должны ознакомиться с документацией Kubernetes по использованию переменных среды и нескольких файлов конфигурации, чтобы избежать конфликтов. После настройки вашей среды kubectl вы можете перейти к установке TOBS на следующем шаге.

Шаг 2 — Установка TOBS и тестирование ваших конечных точек

TOBS включает следующие компоненты:

  • Prometheus – это база данных временных рядов и инструмент мониторинга, который работает путем опроса конечных точек метрик и сканирования и обработки данных, предоставленных этими конечными точками. Он позволяет выполнять запросы к этим данным с использованием PromQL, языка запросов данных временных рядов.
  • Alertmanager, обычно развертываемый наряду с Prometheus, формирует слой оповещения стека, обрабатывая оповещения, генерируемые Prometheus, и устраняя дублирование, группировку и маршрутизацию их к интеграциям, таким как электронная почта или PagerDuty. Чтобы узнать больше о Alertmanager, обратитесь к документации Prometheus по оповещениям.
  • Grafana – это инструмент визуализации данных и аналитики, который позволяет создавать панели и графики для ваших метрических данных.
  • kube-state-metrics – это дополнительный агент, который прослушивает сервер API Kubernetes и генерирует метрики о состоянии объектов Kubernetes, таких как развертывания и поды. Эти метрики предоставляются в виде обычного текста на HTTP-конечных точках и используются Prometheus.
  • В последнюю очередь идет node-exporter, экспортер Prometheus, который запускается на узлах кластера и предоставляет метрики ОС и аппаратного обеспечения, такие как использование ЦП и памяти для Prometheus. Эти метрики также предоставляются в виде текста на HTTP-точках и потребляются Prometheus.

Для установки TOBS сначала необходимо запустить установщик TOBS на контрольной панели. Это настроит команду tobs и каталоги конфигурации. Как упоминалось в предварительных требованиях, команда tobs предназначена только для работы в системах Linux/macOS/BSD (как официальные двоичные файлы Kubernetes), поэтому если вы до сих пор использовали Windows, вам следует работать в среде Подсистемы Windows для Linux.

Получите и запустите установщик TOBS:

  1. curl --proto '=https' --tlsv1.2 -sSLf https://tsdb.co/install-tobs-sh |sh
Output
tobs 0.7.0 was successfully installed ? Binary is available at /root/.local/bin/tobs.

Теперь вы можете развернуть TOBS на вашем кластере Kubernetes. Это делается с помощью одной строки, используя вашу новую команду tobs:

  1. tobs install

Это сгенерирует несколько строк вывода и может занять несколько моментов. В зависимости от вашей конкретной версии Kubernetes, в выводе могут быть несколько предупреждений, но их можно игнорировать, пока вы не получите сообщение Welcome to tobs:

Output
WARNING: Using a generated self-signed certificate for TLS access to TimescaleDB. This should only be used for development and demonstration purposes. To use a signed certificate, use the "--tls-timescaledb-cert" and "--tls-timescaledb-key" flags when issuing the tobs install command. Creating TimescaleDB tobs-certificate secret Creating TimescaleDB tobs-credentials secret skipping to create TimescaleDB s3 backup secret as backup option is disabled. 2022/01/10 11:25:34 Transport: unhandled response frame type *http.http2UnknownFrame 2022/01/10 11:25:35 Transport: unhandled response frame type *http.http2UnknownFrame 2022/01/10 11:25:35 Transport: unhandled response frame type *http.http2UnknownFrame Installing The Observability Stack 2022/01/10 11:25:37 Transport: unhandled response frame type *http.http2UnknownFrame W0110 11:25:55.438728 75479 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ W0110 11:25:55.646392 75479 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ … ?? Welcome to tobs, The Observability Stack for Kubernetes …

С этого момента вывод будет содержать инструкции для подключения к каждой из веб-точек Prometheus, TimescaleDB, PromLens и Grafana в вашем браузере. Они полностью воспроизведены ниже для справки:

Output
############################################################################### ? PROMETHEUS NOTES: ############################################################################### Prometheus can be accessed via port 9090 on the following DNS name from within your cluster: tobs-kube-prometheus-prometheus.default.svc.cluster.local Get the Prometheus server URL by running these commands in the same shell: tobs prometheus port-forward The Prometheus alertmanager can be accessed via port 9093 on the following DNS name from within your cluster: tobs-kube-prometheus-alertmanager.default.svc.cluster.local Get the Alertmanager URL by running these commands in the same shell: export POD_NAME=$(kubectl get pods --namespace default -l "app=alertmanager,alertmanager=tobs-kube-prometheus-alertmanager" -o jsonpath="{.items[0].metadata.name}") kubectl --namespace default port-forward $POD_NAME 9093 WARNING! Persistence is disabled on AlertManager. You will lose your data when the AlertManager pod is terminated. ############################################################################### ? TIMESCALEDB NOTES: ############################################################################### TimescaleDB can be accessed via port 5432 on the following DNS name from within your cluster: tobs.default.svc.cluster.local To get your password for superuser run: tobs timescaledb get-password -U <user> To connect to your database, chose one of these options: 1. Run a postgres pod and connect using the psql cli: tobs timescaledb connect -U <user> 2. Directly execute a psql session on the master node tobs timescaledb connect -m ############################################################################### ? PROMLENS NOTES: ############################################################################### PromLens is a PromQL query builder, analyzer, and visualizer. You can access PromLens via a local browser by executing: tobs promlens port-forward Then you can point your browser to http://127.0.0.1:8081/. ############################################################################### ? GRAFANA NOTES: ############################################################################### 1. The Grafana server can be accessed via port 80 on the following DNS name from within your cluster: tobs-grafana.default.svc.cluster.local You can access grafana locally by executing: tobs grafana port-forward Then you can point your browser to http://127.0.0.1:8080/. 2. The 'admin' user password can be retrieved by: tobs grafana get-password 3. You can reset the admin user password with grafana-cli from inside the pod. tobs grafana change-password <password-you-want-to-set>

Каждый из них обеспечивается DNS-именем внутри вашего кластера, чтобы к ним можно было получить доступ с любого из рабочих узлов, например, tobs-kube-prometheus-alertmanager.default.svc.cluster.local для Prometheus. Кроме того, для каждого из них настроена команда перенаправления портов, позволяющая получать к ним доступ из локального веб-браузера.

В новом терминале выполните tobs prometheus port-forward:

  1. tobs prometheus port-forward

Это займет терминал на время активности процесса перенаправления портов. Вы можете нажать Ctrl+C, чтобы корректно завершить блокирующий процесс, например, этот, когда захотите прекратить перенаправление порта. Затем в веб-браузере перейдите по URL-адресу http://127.0.0.1:9090/. Вы должны увидеть полный интерфейс Prometheus, работающий и генерирующий метрики из вашего кластера:

Вы можете сделать то же самое для Grafana, которая доступна по адресу http://127.0.0.1:8080/, пока активно перенаправление портов в другом процессе. Сначала вам нужно будет использовать команду get-password, предоставленную выводом установщика:

  1. tobs grafana get-password
Output
your-grafana-password

Затем вы можете использовать этот пароль для входа в интерфейс Grafana, запустив его команду перенаправления портов и открыв http://127.0.0.1:8080/ в вашем браузере.

  1. tobs grafana port-forward

Теперь у вас работает стек TOBS в вашем кластере Kubernetes. Вы можете обращаться к документации отдельных компонентов, чтобы узнать их соответствующие функции. В последнем этапе этого руководства вы узнаете, как вносить обновления в саму конфигурацию TOBS.

Шаг 3 — Редактирование конфигураций TOBS и обновление

Конфигурация TOBS содержит некоторые параметры для отдельных приложений в стеке, а также некоторые параметры для самого развертывания TOBS. Она генерируется и хранится в виде шаблона Helm Kubernetes. Вы можете вывести текущую конфигурацию, запустив tobs helm show-values. Однако это выведет всю длинную конфигурацию на ваш терминал, что может быть сложно прочитать. Вместо этого вы можете перенаправить вывод в файл с расширением .yaml, потому что шаблоны Helm — это все действительный синтаксис YAML:

  1. tobs helm show-values > values.yaml

Содержимое файла будет выглядеть примерно так:

~/values.yaml
2022/01/10 11:56:37 Transport: unhandled response frame type *http.http2UnknownFrame
# Значения для настройки развертывания TimescaleDB
# README по шаблонам находится по адресу:
#    https://github.com/timescale/timescaledb-kubernetes/tree/master/charts/timescaledb-single
# Проверьте различные параметры конфигурации (руководство администратора) по адресу:
#    https://github.com/timescale/timescaledb-kubernetes/blob/master/charts/timescaledb-single/admin-guide.md
cli: false

# Переопределение пространства имен развертывания
namespaceOverride: ""
…

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

Если вы когда-либо измените этот файл, чтобы обновить свое развертывание, вы можете переустановить TOBS поверх самого себя, используя обновленную конфигурацию. Просто передайте опцию -f команде tobs install с файлом YAML в качестве дополнительного аргумента:

  1. tobs install -f values.yaml

Наконец, вы можете обновить TOBS с помощью следующей команды:

  1. tobs upgrade

Это выполняет эквивалент команды helm upgrade, загружая новейший образчик из источника.

Вывод

В этом руководстве вы узнали, как развернуть и настроить TOBS, The Observability Stack, на существующем кластере Kubernetes. TOBS особенно полезен, поскольку он позволяет избежать необходимости отдельного обслуживания конфигурационных деталей для каждого из этих приложений, обеспечивая стандартизированный мониторинг для приложений, работающих на вашем кластере.

Затем вы можете захотеть изучить, как использовать Cert-Manager, чтобы обеспечить вход HTTPS на ваш кластер Kubernetes.

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-tobs-the-observability-stack-for-kubernetes-monitoring