С версии 2.8.x
При обновлении с версии 2.8.Х на 2.9.0 и выше необходимо выполнить действия.
Модуль локального сбора логов
Перед началом обновления необходимо вручную:
Удалить кастомный ресурс FluentBit в неймспейсе **logging**
kubectl delete -n logging fluentbit fluent-bit
Это связано с особенностью работы модуля и переносом функционала данного модуля в новый сервис - 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
) для определения последовательности; - Фильтруйте ненужные данные как можно раньше;
- Используйте четкие условия фильтрации;
- Минимизируйте количество трансформаций;
- Избегайте дублирования обработки данных.
Модуль локального сбора метрик
Перед началом обновления необходимо вручную:
- отключить “Модуль графического отображения метрик” (shturval-dashboards) и дождаться, когда он перейдёт в состояние Uninstall.
- отключить “Модуль локального сбора метрик” (shturval-metrics) и дождаться, когда он перейдёт в состояние Uninstall.
- включить “Модуль графического отображения метрик” (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/