Статус: Устарел
Эта статья устарела и больше не поддерживается.
Причина
Установщик TOBS был объявлен устаревшим в исходном коде.
Смотрите вместо этого
Официальная документация TOBS.
Введение
TOBS, сокращение от The Observability Stack, представляет собой предварительно упакованный набор инструментов мониторинга и интерфейсов панелей управления, который можно установить в любой существующий кластер Kubernetes. В него входят многие из самых популярных инструментов открытого исходного кода для обеспечения наблюдаемости, такие как Prometheus и Grafana в качестве базы, включая Promlens, TimescaleDB, Alertmanager и другие. Вместе они обеспечивают простое, поддерживаемое решение для анализа трафика сервера и выявления любых потенциальных проблем с развертыванием в масштабах очень больших масштабов.
TOBS использует стандартные графики Helm Kubernetes для настройки и обновления развертываний. Его можно установить в любой кластер Kubernetes, но это можно продемонстрировать более эффективно, если вы управляете кластером с помощью kubectl
с локальной машины, а не удаленного узла. Управляемый Kubernetes от DigitalOcean предоставит вам конфигурацию по умолчанию подобную этой.
В этом руководстве вы установите TOBS в существующий кластер Kubernetes и узнаете, как обновлять, настраивать и просматривать его компонентные панели инструментов.
Предварительные требования
Для выполнения этого руководства вам понадобится:
-
Кластер Kubernetes с включенным управлением доступом на основе ролей (RBAC). В этой настройке будет использоваться кластер Kubernetes от DigitalOcean, но вы можете создать кластер, используя другой метод. Ваша версия Kubernetes должна соответствовать поддерживаемой версии TOBS.
-
Командная строковая утилита
kubectl
установлена на вашем локальном компьютере и настроена для подключения к вашему кластеру. Вы можете узнать больше о установкеkubectl
в официальной документации. Если вы используете кластер Kubernetes DigitalOcean, обратитесь к Как подключиться к кластеру Kubernetes DigitalOcean, чтобы узнать, как подключиться к вашему кластеру с помощьюkubectl
.
Шаг 1 — Проверка вашей конфигурации Kubernetes
Для установки TOBS сначала необходимо иметь действующую конфигурацию Kubernetes с установленным kubectl
, с помощью которой вы можете проверить доступность ваших рабочих узлов. Вы можете протестировать это, запустив kubectl get nodes
:
Если kubectl
может подключиться к вашему кластеру Kubernetes и работает ожидаемо, этот командный запрос вернет список узлов со статусом Ready
:
OutputNAME 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
, чтобы просмотреть несколько его первых строк, так:
OutputapiVersion: v1
clusters:
- cluster:
certificate-authority-data:
…
Если файл не существует, убедитесь, что вы вошли под тем же пользователем, который настроил Kubernetes. Пути ~/
отражают домашние каталоги отдельных пользователей, и конфигурации Kubernetes сохраняются по умолчанию для каждого пользователя.
Если вы используете управляемый кластер Kubernetes от DigitalOcean, убедитесь, что вы выполнили команду doctl kubernetes cluster kubeconfig save
после настройки кластера, чтобы ваше локальное устройство могло аутентифицироваться в нем. Это создаст файл ~/.kube/config
:
Если вы используете это устройство для доступа к нескольким кластерам, вы должны ознакомиться с документацией 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:
Outputtobs 0.7.0 was successfully installed ?
Binary is available at /root/.local/bin/tobs.
Теперь вы можете развернуть TOBS на вашем кластере Kubernetes. Это делается с помощью одной строки, используя вашу новую команду tobs
:
Это сгенерирует несколько строк вывода и может занять несколько моментов. В зависимости от вашей конкретной версии Kubernetes, в выводе могут быть несколько предупреждений, но их можно игнорировать, пока вы не получите сообщение Welcome to tobs
:
OutputWARNING: 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
:
Это займет терминал на время активности процесса перенаправления портов. Вы можете нажать Ctrl+C
, чтобы корректно завершить блокирующий процесс, например, этот, когда захотите прекратить перенаправление порта. Затем в веб-браузере перейдите по URL-адресу http://127.0.0.1:9090/
. Вы должны увидеть полный интерфейс Prometheus, работающий и генерирующий метрики из вашего кластера:
Вы можете сделать то же самое для Grafana, которая доступна по адресу http://127.0.0.1:8080/
, пока активно перенаправление портов в другом процессе. Сначала вам нужно будет использовать команду get-password
, предоставленную выводом установщика:
Outputyour-grafana-password
Затем вы можете использовать этот пароль для входа в интерфейс Grafana, запустив его команду перенаправления портов и открыв http://127.0.0.1:8080/
в вашем браузере.
Теперь у вас работает стек TOBS в вашем кластере Kubernetes. Вы можете обращаться к документации отдельных компонентов, чтобы узнать их соответствующие функции. В последнем этапе этого руководства вы узнаете, как вносить обновления в саму конфигурацию TOBS.
Шаг 3 — Редактирование конфигураций TOBS и обновление
Конфигурация TOBS содержит некоторые параметры для отдельных приложений в стеке, а также некоторые параметры для самого развертывания TOBS. Она генерируется и хранится в виде шаблона Helm Kubernetes. Вы можете вывести текущую конфигурацию, запустив tobs helm show-values
. Однако это выведет всю длинную конфигурацию на ваш терминал, что может быть сложно прочитать. Вместо этого вы можете перенаправить вывод в файл с расширением .yaml
, потому что шаблоны Helm — это все действительный синтаксис 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 в качестве дополнительного аргумента:
Наконец, вы можете обновить TOBS с помощью следующей команды:
Это выполняет эквивалент команды helm upgrade
, загружая новейший образчик из источника.
Вывод
В этом руководстве вы узнали, как развернуть и настроить TOBS, The Observability Stack, на существующем кластере Kubernetes. TOBS особенно полезен, поскольку он позволяет избежать необходимости отдельного обслуживания конфигурационных деталей для каждого из этих приложений, обеспечивая стандартизированный мониторинг для приложений, работающих на вашем кластере.
Затем вы можете захотеть изучить, как использовать Cert-Manager, чтобы обеспечить вход HTTPS на ваш кластер Kubernetes.