Настройка корреляции логов с помощью Terraform
Конфигурации логов в Knowledge Graph позволяют определить, как данные логов запрашиваются и сопоставляются с сущностями. Вы можете указать источники данных, правила сопоставления сущностей, сопоставления меток и параметры фильтрации для спанов и трейсов.
Сведения о настройке корреляции логов в интерфейсе Knowledge Graph см. в разделе Configure logs correlation.
Базовая конфигурация логов
Создайте файл с именем log-configs.tf и добавьте следующее:
# Basic log configuration for services
resource "grafana_asserts_log_config" "production" {
provider = grafana.asserts
name = "production"
priority = 1000
default_config = false
data_source_uid = "grafanacloud-logs"
error_label = "error"
match {
property = "asserts_entity_type"
op = "EQUALS"
values = ["Service"]
}
match {
property = "environment"
op = "EQUALS"
values = ["production", "staging"]
}
entity_property_to_log_label_mapping = {
"otel_namespace" = "service_namespace"
"otel_service" = "service_name"
"environment" = "env"
"site" = "region"
}
filter_by_span_id = true
filter_by_trace_id = true
}
Конфигурация логов с несколькими правилами сопоставления
Настройте корреляцию логов с несколькими критериями сопоставления сущностей:
# Development environment log configuration
resource "grafana_asserts_log_config" "development" {
provider = grafana.asserts
name = "development"
priority = 2000
default_config = true
data_source_uid = "elasticsearch-dev"
error_label = "error"
match {
property = "asserts_entity_type"
op = "EQUALS"
values = ["Service"]
}
match {
property = "environment"
op = "EQUALS"
values = ["development", "testing"]
}
match {
property = "site"
op = "EQUALS"
values = ["us-east-1"]
}
match {
property = "service"
op = "EQUALS"
values = ["api"]
}
entity_property_to_log_label_mapping = {
"otel_namespace" = "service_namespace"
"otel_service" = "service_name"
"environment" = "env"
"site" = "region"
"service" = "app"
}
filter_by_span_id = true
filter_by_trace_id = true
}
Минимальная конфигурация логов
Создайте минимальную конфигурацию для всех сущностей:
# Minimal configuration for all entities
resource "grafana_asserts_log_config" "minimal" {
provider = grafana.asserts
name = "minimal"
priority = 3000
default_config = false
data_source_uid = "loki-minimal"
match {
property = "asserts_entity_type"
op = "IS_NOT_NULL"
values = []
}
}
Расширенная конфигурация логов со сложными правилами сопоставления
Настройте логи с несколькими операциями и расширенными правилами сопоставления:
# Advanced configuration with multiple operations
resource "grafana_asserts_log_config" "advanced" {
provider = grafana.asserts
name = "advanced"
priority = 1500
default_config = false
data_source_uid = "loki-advanced"
error_label = "level"
match {
property = "service_type"
op = "CONTAINS"
values = ["web", "api"]
}
match {
property = "environment"
op = "NOT_EQUALS"
values = ["test"]
}
match {
property = "team"
op = "IS_NOT_NULL"
values = []
}
entity_property_to_log_label_mapping = {
"service_type" = "type"
"team" = "owner"
"environment" = "env"
"version" = "app_version"
}
filter_by_span_id = true
filter_by_trace_id = false
}
Справочник по ресурсам
grafana_asserts_log_config
Управление конфигурациями логов Knowledge Graph через API Grafana.
Аргументы
Блок match
Каждый блок match поддерживает следующее:
Пример
resource "grafana_asserts_log_config" "example" {
provider = grafana.asserts
name = "example-logs"
priority = 1000
default_config = false
data_source_uid = "loki-prod"
error_label = "level"
match {
property = "asserts_entity_type"
op = "EQUALS"
values = ["Service", "Pod"]
}
entity_property_to_log_label_mapping = {
"service" = "app"
"namespace" = "k8s_namespace"
"environment" = "env"
}
filter_by_span_id = true
filter_by_trace_id = true
}
Рекомендации
При настройке корреляции логов с помощью Terraform учитывайте следующие рекомендации.
Управление приоритетами
- Назначайте более низкие значения приоритета более конкретным конфигурациям
- Конфигурации с более высоким приоритетом обрабатываются первыми
- Используйте согласованные диапазоны приоритетов для разных типов конфигурации
- Документируйте причины назначения приоритетов
Настройка источника данных
- Убедитесь, что UID источника данных соответствует вашему фактическому экземпляру Loki или системе агрегации логов
- Проверьте подключение к источнику данных перед применением конфигураций
- Используйте описательные имена для конфигураций логов, отражающие их назначение
- Рассмотрите использование отдельных источников данных для разных сред
Стратегия сопоставления меток
- Сопоставляйте свойства сущностей единообразно во всех конфигурациях логов
- Используйте осмысленные имена меток логов, соответствующие вашим стандартам логирования
- Документируйте связи сопоставления в комментариях к конфигурации
- Убедитесь, что сопоставленные метки присутствуют в ваших данных логов
Проектирование правил сопоставления
- Начинайте с широких правил сопоставления и уточняйте их по мере необходимости
- Используйте конкретные имена свойств, которые есть в вашей модели сущностей
- Проверяйте правила сопоставления на образцах данных перед развёртыванием
- Комбинируйте несколько правил сопоставления для точного нацеливания на сущности
Интеграция с распределённой трассировкой
- Включайте
filter_by_span_idиfilter_by_trace_idпри использовании OpenTelemetry - Убедитесь, что ваши логи содержат соответствующие метки ID трейса и спана
- Используйте согласованные имена меток для ID трейсов во всей инфраструктуре логирования
- Проверяйте корреляцию трейсов, чтобы убедиться, что она работает как ожидается
Проверка
После применения конфигурации Terraform убедитесь, что:
- Конфигурации логов созданы в вашем экземпляре Knowledge Graph
- Конфигурации отображаются в интерфейсе Knowledge Graph в разделе Observability > Configuration > Logs
- Корреляция логов работает при детализации от сущностей
- Сопоставления меток корректно преобразуют свойства сущностей в метки логов
- Правила сопоставления правильно фильтруют сущности
- Фильтрация по ID трейса и спана работает для распределённой трассировки