С версии 2.8.x

При обновлении с версии 2.8.Х на 2.9.0 и выше необходимо выполнить действия.

Модуль локального сбора логов

Перед началом обновления необходимо вручную:

Удалить кастомный ресурс FluentBit в неймспейсе **logging**
kubectl delete -n logging fluentbit fluent-bit
Отключить "Модуль локального сбора логов" (shturval-log-operator) и дождаться, когда он перейдёт в состояние Uninstall.

Это связано с особенностью работы модуля и переносом функционала данного модуля в новый сервис - shturval-log-collector

Для настройки модуля локального сбора логов (Vector) используется Vector Operator.

Поддерживаемые Vector Operator кастомные ресурсы (Kubernetes Custom Resources)
Kind Group Version
ClusterVectorAggregator observability.kaasops.io v1alpha1
ClusterVectorPipeline observability.kaasops.io v1alpha1
Vector observability.kaasops.io v1alpha1
VectorAggregator observability.kaasops.io v1alpha1
VectorPipeline observability.kaasops.io v1alpha1

Базовая настройка модуля включает кастомные ресурсы ClusterVectorPipeline и Vector, определяющие его конфигурацию. Просмотреть ClusterVectorPipeline и Vector вы можете в графическом интерфейсе платформы. В вашем кластере откройте страницу Кастомные ресурсы раздела Администрирование, найдите и раскройте API-группу observability.kaasops.io. Выберите CRD ClusterVectorPipeline или Vector, на странице со списком кастомных ресурсов перейдите к манифесту объекта.

Обратите внимание! Изменение базовой настройки может привести к ошибкам сбора, агрегации и анализа логов. При необходимости задайте конфигурацию с помощью создания нового ClusterVectorPipeline.

В текущем релизе используется Vector версии 0.41.1, Vector Operator версии 0.1.2.

Сбор метрик и обработка логов

Для конфигурации сбора метрик и обработки логов вы можете настроить ClusterVectorPipeline. Спецификация (spec) ClusterVectorPipeline содержит блоки:

  • sources - определяет источники данных;
  • transforms- определяет преобразования данных;
  • sinks - определяет конечные точки для отправки данных.
Пример конфигурации для сбора метрик
apiVersion: observability.kaasops.io/v1alpha1
kind: ClusterVectorPipeline
metadata:
  name: metrics
  namespace: monitoring
spec:
  # Определение конечных точек
  sinks:
    prom_exporter:
      type: prometheus_exporter
      address: 0.0.0.0:9598
      inputs:
        - host_metrics
        - internal_metrics

  # Определение источников данных
  sources:
    # Сбор метрик хоста
    host_metrics:
      type: host_metrics
      filesystem:
        devices:
          excludes: ["binfmt_misc"]
        filesystems:
          excludes: ["binfmt_misc"]
        mountpoints:
          excludes: ["*/proc/sys/fs/binfmt_misc"]
    
    # Сбор внутренних метрик Vector
    internal_metrics:
      type: internal_metrics

Особенности конфигурации метрик:

  • Используется два источника данных: host_metrics и internal_metrics;
  • Настроена фильтрация ненужных файловых систем;
  • Метрики экспортируются через Prometheus exporter на порту 9598.
Пример конфигурации для обработки логов Kubernetes
apiVersion: observability.kaasops.io/v1alpha1
kind: ClusterVectorPipeline
metadata:
  name: k8s-logs
  namespace: monitoring
spec:
  # Источник данных - логи Kubernetes
  sources:
    kubernetes_logs:
      type: kubernetes_logs

  # Цепочка трансформаций
  transforms:
    # Преобразование временной метки
    remap_timestamp:
      type: remap
      inputs: [kubernetes_logs]
      source: |
        parsed_time = parse_timestamp!(.timestamp, format: "%+")
        if is_timestamp(parsed_time) {
          ."@timestamp" = parsed_time
          del(.timestamp)
        }

    # Замена точек на подчеркивания в именах полях
    dedot_fields:
      type: remap
      inputs: [remap_timestamp]
      source: |
        . = map_keys(., recursive: true) -> |key| { replace(key, ".", "_") }

    # Фильтрация системных пространств имен
    filter_system_namespaces:
      type: filter
      inputs: [dedot_fields]
      condition: |
        exists(.kubernetes.namespace_labels."shturval_tech/system-namespace")

    # Фильтрация пользовательских пространств имен
    filter_user_namespaces:
      type: filter
      inputs: [dedot_fields]
      condition: |
        !exists(.kubernetes.namespace_labels."shturval_tech/system-namespace")

Особенности обработки логов:

  • Использует встроенный источник kubernetes_logs;
  • remap_timestamp: парсинг и преобразование временных меток;
  • dedot_fields: замена точек на подчеркивания в именах полей;
  • filter_system_namespaces и filter_user_namespaces: разделение логов по типу пространств имен.

Обратите внимание! Для применения изменений конфигурации необходимо перевести Модуль локального сбора логов (shturval-log-collector) в ручной режим управления (Manual), при выборе управления в автоматическом режиме (Auto) применяется базовая конфигурация.

Рекомендации при конфигурации

  • Используйте понятные имена для пайплайнов;
  • Следуйте единому стилю именования компонентов;
  • Выстраивайте логичную цепочку преобразований;
  • Используйте входы (inputs) для определения последовательности;
  • Фильтруйте ненужные данные как можно раньше;
  • Используйте четкие условия фильтрации;
  • Минимизируйте количество трансформаций;
  • Избегайте дублирования обработки данных.

Модуль локального сбора метрик

Перед началом обновления необходимо вручную:

  1. отключить “Модуль графического отображения метрик” (shturval-dashboards) и дождаться, когда он перейдёт в состояние Uninstall.
  2. отключить “Модуль локального сбора метрик” (shturval-metrics) и дождаться, когда он перейдёт в состояние Uninstall.
  3. включить “Модуль графического отображения метрик” (shturval-dashboards) и определить режим управления “Автоматический”.

Это связано с переносом функционала модуля локального сбора метрик в новый сервис - shturval-log-collector

Пользовательские кастомизации оправки метрик необходимо подготовить следующим образом:

  • содержимое объекта alertmanager необходимо перенести полностью, при этом ключ alertmanager.alertmanagerSpec нужно переименовать в alertmanager.spec
  • содержимое объекта prometheus.prometheusSpec.additionalRemoteWrites переносится в vmagent.spec.additionalRemoteWrites
Пример

# shturval-metrics

alertmanager:
  alertmanagerSpec:
    replicas: 2
  config:
    route:
      receiver: "blackhole"
    receivers:
      - name: blackhole

prometheus:
  prometheusSpec:
    remoteWrite:
    - tlsConfig:
        insecureSkipVerify: true
      url: https://vminsert.apps.mgmt.shturval.local/insert/1234567890/prometheus/

# shturval-metrics-collector

alertmanager:
  spec:
    replicas: 2
  config:
    route:
      receiver: "blackhole"
    receivers:
      - name: blackhole

vmagent:
  spec:
    additionalRemoteWrites:
    - tlsConfig:
        insecureSkipVerify: true
      url: https://vminsert.apps.mgmt.shturval.local/insert/1234567890/prometheus/