Облачные приложения и обнаружение рабочей нагрузки
Ключ-АСТРОМ обеспечивает автоматическое обнаружение облачных приложений и рабочих нагрузок в средах Cloud Foundry, Docker и Podman, а также Kubernetes/OpenShift. Облачные приложения и рабочие нагрузки объединяют схожие процессы в группы процессов и сервисы, что позволяет проводить анализ версий.
Облачные приложения и обнаружение рабочей нагрузки обеспечивают
- Информация о пространствах имен, рабочих нагрузках и модулях Kubernetes
- Метрики ресурсов контейнеров для контейнеров Kubernetes и Cloud Foundry
- Определение версий для служб, работающих в рабочих нагрузках Kubernetes
Начиная с Ключ-АСТРОМ версии 1.258 и ЕдиногоАгента версии 1.257
- Эта функция включена по умолчанию.
- Вы можете настроить обнаружение облачных приложений и рабочих нагрузок независимо для Kubernetes, Cloud Foundry и простых сред Docker и Podman:
- Перейдите в Настройки.
- Выберите Процессы и контейнеры > Облачные приложения и обнаружение рабочей нагрузки.
- Включите/выключите функцию Включить обнаружение облачных приложений и рабочей нагрузки […] для Cloud Foundry, Docker и Podman или Kubernetes/OpenShift по мере необходимости.
- Выберите Сохранить изменения.
ЕдиныйАгент версии 1.256 и более ранних версий не поддерживают независимую настройку для каждого типа среды. Для этих ЕдиныеАгенты обнаружение облачных приложений и рабочих нагрузок включено только в том случае, если эта настройка активирована для всех трёх сред: Cloud Foundry, Docker и Podman, Kubernetes/OpenShift.
Начиная с Ключ-АСТРОМ версия 1.299 и ЕдиныйАгент версии 1.297 Ключ-АСТРОМ обеспечивает автоматическое обнаружение контейнеров на основе полученных метаданных поставщиков облачных решений, таких как AWS ECS, AWS Fargate, Azure Container Apps и многих других. Вы можете настроить обнаружение контейнеров следующим образом:
- Перейдите в Настройки.
- Выберите Процессы и контейнеры > Облачные приложения и обнаружение рабочей нагрузки.
- При необходимости включите/выключите обнаружение контейнеров для бессерверных контейнерных служб.
- Выберите Сохранить изменения.
Ниже описано, как использовать свойства рабочих нагрузок Kubernetes для группировки процессов со схожими рабочими нагрузками. Кроме того, общие правила обнаружения процессов по-прежнему применяются, игнорируя при этом свойства, специфичные для контейнера или платформы.
Правила обнаружения рабочей нагрузки для Kubernetes
По умолчанию Ключ-АСТРОМ разделяет группы процессов и службы для каждой рабочей нагрузки Kubernetes.
Вы можете определить правила для поддержки своих стратегий выпуска, используя свойства рабочей нагрузки, такие как Имя пространства имён, Базовое имя пода или Имя контейнера, а также переменные среды Продукта DT_RELEASE_PRODUCT и Стадии DT_RELEASE_STAGE для группировки процессов схожих рабочих нагрузок. Вы также можете указать основную версию и версию сборки развёрнутой рабочей нагрузки, установив переменные среды DT_RELEASE_VERSION и DT_RELEASE_BUILD_VERSION. Это даёт вам расширенное представление влияния выпусков на ваши сервисы.
Правила ограничены пространствами имён Kubernetes, что позволяет легко переносить существующее пространство имён среды по одному. Применяется первое подходящее правило в списке. Если ни одно правило не подходит, в качестве резервного варианта используется комбинация Имя пространства имён, Базовое имя пода и Имя контейнера.
После изменения рабочей нагрузки
Чтобы создать правило
- Перейдите в Настройки.
- Выберите Процессы и контейнеры > Облачные приложения и обнаружение рабочей нагрузки.
- Выберите Добавить правило.
- Используйте комбинацию пяти входных переменных, приведенных ниже, для расчета способа обнаружения групп процессов.
- Имя пространства имен
- Базовое имя пода (например,
paymentservice-дляpaymentservice-5ff6dbff57-gszgq) - Имя контейнера (как определено в спецификации модуля)
- Стадия (
DT_RELEASE_STAGE) - Продукт (
DT_RELEASE_PRODUCT)
Если Продукт включен и не имеет значения, по умолчанию используется Base pod name. - Задайте оператор сопоставления и имя пространства имен, чтобы определить пространства имен, к которым вы хотите применить это правило.
- Выберите Сохранить изменения.
Обратите внимание, что для вступления в силу изменений в правилах обнаружения облачных приложений и рабочих нагрузок требуется перезапуск модулей.
| Изменение правил по умолчанию может привести к созданию новых идентификаторов для групп процессов и служб, а также к потере пользовательских конфигураций в существующих группах процессов. |
Как только ваши группы процессов или службы получат новые идентификаторы, имейте в виду, что:
|
Влияние на наименование группы процессов по умолчанию
ЕдиныйАгент версии 1.241+
Ключ-АСТРОМ стремится предоставлять интуитивно понятные имена группам процессов, понятные DevOps-командам. Создание правил для рабочих нагрузок Kubernetes также влияет на состав осмысленных имён по умолчанию для групп процессов. Шаблон по умолчанию для {ProcessGroup:DetectedName} выглядит следующим образом: “<tech_prefix> <product> <STAGE> <base_pod_name>”, где
<tech_prefix>относится к именам обнаруженных технологий, таким как имя технологии, исполняемого файла, пути и класса запуска.<product>,<STAGE>,<base_pod_name>являются необязательными переменными и используются только при включении в правило, примененное для соответствующего пространства имен Kubernetes.
Пример: "index.js emailservice PROD", где
index.jsявляется<tech_prefix>emailserviceявляется<product>PRODявляется<STAGE>
<base_pod_name> в данном случае не используется, поэтому не включен в {ProcessGroup:DetectedName}.
|
Если наименование группы процессов по умолчанию слишком общее или не отражает ваши стандарты наименования, вы всегда можете настроить его, создав правила наименования групп процессов.
Пример — лучшие практики использования меток Kubernetes
Мы рекомендуем вам распространить метки Kubernetes на переменные среды в конфигурации развертывания с помощью Downward API:
app.kubernetes.io/version->DT_RELEASE_VERSIONapp.kubernetes.io/name->DT_RELEASE_PRODUCTapp.kubernetes.io/stage->DT_RELEASE_STAGE
| apiVersion: apps/v1
kind: Deployment metadata: name: emaildeploy spec: selector: matchLabels: app: emailservice template: metadata: annotations: metrics.astromkey.com/path: /stats/prometheus metrics.astromkey.com/port: "15090" metrics.astromkey.com/scrape: "true" labels: app: emailservice app.kubernetes.io/version: 0.3.6 app.kubernetes.io/stage: production app.kubernetes.io/name: emailservice app.kubernetes.io/part-of: online-boutique spec: serviceAccountName: default terminationGracePeriodSeconds: 5 containers: - name: server image: gcr.io/google-samples/microservices-demo/emailservice:v0.3.6 ports: - containerPort: 8080 env: - name: PORT value: "8080" - name: DT_RELEASE_VERSION valueFrom: fieldRef: fieldPath: metadata.labels['app.kubernetes.io/version'] - name: DT_RELEASE_PRODUCT valueFrom: fieldRef: fieldPath: metadata.labels['app.kubernetes.io/name'] - name: DT_RELEASE_STAGE valueFrom: fieldRef: fieldPath: metadata.labels['app.kubernetes.io/stage'] - name: DISABLE_TRACING value: "1" - name: DISABLE_PROFILER value: "1" readinessProbe: periodSeconds: 5 exec: command: ["/bin/grpc_health_probe", "-addr=:8080"] livenessProbe: periodSeconds: 5 exec: command: ["/bin/grpc_health_probe", "-addr=:8080"] resources: requests: cpu: 100m memory: 64Mi limits: cpu: 200m memory: 128Mi --- |
На следующем этапе эту конфигурацию можно легко использовать с помощью одного правила в колонке Итог — Namespace.
В результате примененной конфигурации Ключ-АСТРОМ объединит схожие процессы и сервисы с одинаковыми значениями Продукт, Стадия, Имя контейнера и Namespace. Поскольку все эти значения идентичны, это правило также обеспечивает объединение рабочих нагрузок из разных кластеров Kubernetes в одну группу процессов.
