Настройка источника данных Zipkin
В этом документе объясняется, как настроить источник данных Zipkin в Grafana, включая настройки подключения, аутентификацию, интеграции trace-to-logs и trace-to-metrics, а также провижининг с помощью YAML или Terraform.
Перед началом
Перед настройкой источника данных убедитесь, что у вас есть:
- Разрешения Grafana: роль Organization administrator
- Экземпляр Zipkin: работающий экземпляр Zipkin, доступный с вашего сервера Grafana
Добавление источника данных
Чтобы добавить источник данных Zipkin:
- Нажмите Connections в меню слева.
- Нажмите Add new connection.
- Введите
Zipkinв строке поиска. - Выберите Zipkin.
- Нажмите Add new data source.
Настройка параметров
Следующая таблица описывает базовые параметры конфигурации для источника данных Zipkin.
Аутентификация
Источник данных Zipkin поддерживает следующие методы аутентификации:
- Basic authentication: укажите имя пользователя и пароль для аутентификации в экземпляре Zipkin.
- TLS client authentication: настройте клиентские сертификаты для взаимного TLS.
- Forward OAuth identity: передайте OAuth-токен пользователя в экземпляр Zipkin.
- With credentials: отправляйте учётные данные (cookie, клиентские сертификаты TLS) с межсайтовыми запросами.
Вы также можете настроить пользовательские заголовки и параметры TLS в разделе Advanced HTTP settings, который находится внутри Additional settings.
Trace to logs
Note
Если вы используете Grafana Cloud, откройте обращение в поддержку в Cloud Portal, чтобы получить доступ к этой функции.
Настройка Trace to logs настраивает функцию trace to logs, доступную при интеграции Grafana с Zipkin. Эта функция позволяет переходить от промежутка в представлении трассировки непосредственно к соответствующим журналам.
Есть два способа настроить функцию trace to logs:
- Использовать упрощённую конфигурацию с запросом по умолчанию, или
- Настроить пользовательский запрос, где вы можете использовать язык шаблонов для интерполяции переменных из трассировки или промежутка.
Использование простой конфигурации
-
Выберите целевой источник данных в раскрывающемся списке.
Вы также можете нажать Open advanced data source picker, чтобы увидеть больше параметров, включая добавление источника данных.
-
Задайте сдвиг начального и конечного времени. Поскольку временные метки журналов могут не совпадать точно с временными метками промежутков в трассировке, вам может потребоваться расширить или сдвинуть диапазон времени, чтобы найти нужные журналы.
-
Выберите, какие теги использовать в запросе журналов. Настроенные вами теги должны присутствовать в атрибутах или ресурсах промежутка, чтобы появилась ссылка trace to logs на промежутке. При необходимости вы можете настроить новое имя для тега. Это полезно, если в имени тега есть точки, а целевой источник данных не допускает точек в метках. Например, вы можете переопределить
http.statusвhttp_status. -
При необходимости включите настройку Filter by trace ID и/или Filter by span ID, чтобы дополнительно отфильтровать журналы, если ваши журналы постоянно содержат ID трассировки или промежутка.
Настройка пользовательского запроса
-
Выберите целевой источник данных в раскрывающемся списке.
Вы также можете нажать Open advanced data source picker, чтобы увидеть больше параметров, включая добавление источника данных.
-
Задайте сдвиг начального и конечного времени. Поскольку временные метки журналов могут не совпадать точно с временными метками промежутков в трассировке, вам может потребоваться расширить или сдвинуть диапазон времени, чтобы найти нужные журналы.
-
При необходимости выберите теги для сопоставления. Эти теги можно использовать в пользовательском запросе с переменной
${__tags}. Эта переменная интерполирует сопоставленные теги в виде списка в подходящем для источника данных синтаксисе и включает только теги, присутствующие в промежутке. При необходимости вы можете настроить новое имя для тега. Это полезно, когда в имени тега есть точки, а целевой источник данных не допускает точек в метках. Например, вы можете переопределитьhttp.statusвhttp_status. Если вы не сопоставляете здесь никакие теги, вы всё равно можете использовать любой тег в запросе, например так:method="${__span.tags.method}". -
Пропустите настройки Filter by trace ID и Filter by span ID, так как они не могут использоваться с пользовательским запросом.
-
Включите Use custom query.
-
Укажите пользовательский запрос, который будет использоваться для запроса журналов. Вы можете использовать различные переменные, чтобы сделать запрос релевантным для текущего промежутка. Ссылка появляется только в том случае, если все переменные интерполированы непустыми значениями, чтобы предотвратить создание недопустимого запроса.
Переменные для пользовательских запросов
Чтобы использовать переменную, оберните её в ${}. Например: ${__span.name}.
Настройки Trace to logs
Следующая таблица описывает параметры конфигурации trace to logs.
Trace to metrics
Настройка Trace to metrics позволяет переходить от промежутка в представлении трассировки к запросу метрик в настроенном источнике данных метрик.
Чтобы настроить trace to metrics:
-
Выберите целевой источник данных в раскрывающемся списке.
Вы также можете нажать Open advanced data source picker, чтобы увидеть больше параметров, включая добавление источника данных.
-
Создайте любые нужные связанные запросы.
Каждый связанный запрос состоит из:
- Link Label: (Необязательно) описательная метка для связанного запроса.
- Query: запрос, выполняемый при переходе от трассировки к источнику данных метрик. Интерполируйте теги, используя ключевое слово
$__tags. Например, когда вы настраиваете запросrequests_total{$__tags}с тегамиk8s.pod=podиcluster, результат выглядит какrequests_total{pod="nginx-554b9", cluster="us-east-1"}.
Дополнительные настройки
Раздел Additional settings сворачиваемый и содержит необязательные настройки для графа узлов, панели промежутков, расширенной конфигурации HTTP и безопасного SOCKS-прокси (когда он включён в вашей конфигурации Grafana).
Граф узлов
Переключатель Enable node graph включает визуализацию Node graph, которая отключена по умолчанию.
После его включения Grafana отображает граф узлов над представлением трассировки.
Панель промежутков
Настройка Span bar позволяет отображать дополнительную информацию в строке панели промежутков.
Раскрывающийся список Label имеет три варианта:
Проверка подключения
Нажмите Save & test, чтобы проверить подключение. Успешное подключение отображает сообщение Data source is working.
Если вы сталкиваетесь с ошибками, обратитесь к разделу Устранение неполадок источника данных Zipkin.
Провижининг источника данных
Вы можете определить и настроить источник данных в файлах YAML в рамках системы провижининга Grafana. Дополнительную информацию о провижининге и доступных параметрах конфигурации см. в разделе Провижининг Grafana.
Пример провижининга
apiVersion: 1
datasources:
- name: Zipkin
type: zipkin
uid: zipkin-ds
url: http://localhost:9411
access: proxy
basicAuth: true
basicAuthUser: my_user
readOnly: false
isDefault: false
jsonData:
tracesToLogsV2:
datasourceUid: 'loki'
spanStartTimeShift: '1h'
spanEndTimeShift: '-1h'
tags: ['job', 'instance', 'pod', 'namespace']
filterByTraceID: false
filterBySpanID: false
customQuery: true
query: 'method="$${__span.tags.method}"'
tracesToMetrics:
datasourceUid: 'prom'
spanStartTimeShift: '1h'
spanEndTimeShift: '-1h'
tags: [{ key: 'service.name', value: 'service' }, { key: 'job' }]
queries:
- name: 'Sample query'
query: 'sum(rate(traces_spanmetrics_latency_bucket{$$__tags}[5m]))'
nodeGraph:
enabled: true
spanBar:
type: 'None'
secureJsonData:
basicAuthPassword: my_password
Настройка с помощью Terraform
Вы можете настроить источник данных Zipkin с помощью Terraform и провайдера Grafana для Terraform.
Дополнительную информацию о провижининге ресурсов с помощью Terraform см. в документации Grafana как код с использованием Terraform.
Базовый пример Terraform
Следующий пример создаёт базовый источник данных Zipkin:
resource "grafana_data_source" "zipkin" {
name = "Zipkin"
type = "zipkin"
url = "http://localhost:9411"
}
Пример Terraform с trace to logs
Следующий пример включает конфигурацию trace to logs, которая связывает трассировки с источником данных Loki:
resource "grafana_data_source" "zipkin" {
name = "Zipkin"
type = "zipkin"
url = "http://localhost:9411"
json_data_encoded = jsonencode({
tracesToLogsV2 = {
datasourceUid = grafana_data_source.loki.uid
spanStartTimeShift = "1h"
spanEndTimeShift = "-1h"
filterByTraceID = true
filterBySpanID = false
tags = [
{ key = "service.name", value = "service" },
{ key = "namespace" }
]
}
nodeGraph = {
enabled = true
}
})
}
Пример Terraform с базовой аутентификацией
Следующий пример включает базовую аутентификацию:
resource "grafana_data_source" "zipkin" {
name = "Zipkin"
type = "zipkin"
url = "http://localhost:9411"
basic_auth_enabled = true
basic_auth_username = "zipkin_user"
secure_json_data_encoded = jsonencode({
basicAuthPassword = var.zipkin_password
})
json_data_encoded = jsonencode({
nodeGraph = {
enabled = true
}
})
}
Все доступные параметры конфигурации см. в документации по ресурсу источника данных провайдера Grafana.