Распространение контекста
Мы рассматриваем некоторые продвинутые темы, связанные с GO2Sky.
Распространение контекста
Связи трассировки принадлежат ему с помощью распространения контекста, которое варьируется в зависимости от сценария.
В процессе
Мы используем пакет context
для связывания промежутков. Корневой промежуток обычно выбирает context.Background()
, а дочерние промежутки будут внедрять контекст, созданный его родителем.
// Создать новый контекст
entrySpan, entryCtx, err := tracer.CreateEntrySpan(context.Background(), ...)
// Некоторая операция
...
// Связать два промежутка путём внедрения контекста entrySpan в exitSpan
exitSpan, err := tracer.CreateExitSpan(entryCtx, ...)
Между процессами
Мы используем промежуток Entry
для извлечения контекста из нижестоящего сервиса и используем промежуток Exit
для внедрения контекста в вышестоящий сервис.
Промежутки Entry
и Exit
имеют смысл для анализа OAP, который генерирует топологическую карту и метрики сервисов.
// Извлечь контекст из заголовка HTTP-запроса sw8
span, ctx, err := tracer.CreateEntrySpan(r.Context(), "/api/login", func(key string) (string, error) {
return r.Header.Get(key), nil
})
// Некоторая операция
...
// Внедрить контекст в заголовок HTTP-запроса sw8
span, err := tracer.CreateExitSpan(req.Context(), "/service/validate", "tomcat-service:8080", func(key, value string) error {
req.Header.Set(key, value)
return nil
})
Тег
Мы устанавливаем теги в промежуток, который хранится в бэкэнде, но некоторые теги имеют специальное назначение. Сервер OAP может использовать их для агрегирования метрик, генерации топологической карты и т. д.
Они определены как константы в корневом пакете с префиксом Tag
.
Журнал x Контекст трассировки
Внедрите контекст трассировки в текст журнала. Механизм LAL (язык анализа журналов) SkyWalking может извлечь контекст из текста и соотнести трассировку и журналы.
// Получить данные контекста трассировки
import go2skylog "github.com/SkyAPM/go2sky/log"
logContext = go2skylog.FromContext(ctx)
// Построить строку данных контекста
// Ввести строку контекста в журнал
// Формат строки контекста: [$serviceName,$instanceName,$traceId,$traceSegmentId,$spanId]
contextString := logContext.String()
Плагины
Перейдите в репозиторий go2sky-plugins, чтобы увидеть все плагины, нажмите здесь.
Поддерживаемые переменные среды
Ниже приведён полный список поддерживаемых переменных среды, которые вы можете установить для настройки поведения агента. Пожалуйста, ознакомьтесь с описаниями того, чего они могут достичь.
Переменная среды | Описание | По умолчанию |
---|---|---|
SW_AGENT_NAME |
Название службы Go | unset |
SW_AGENT_LAYER |
Имя слоя экземпляра, определённое в бэкэнде | unset |
SW_AGENT_INSTANCE_NAME |
Название экземпляра службы Go | |
------------------------------------------------------------------------------------------------------------- | ---------------------- | |
SW_AGENT_SAMPLE |
Примерная частота, 1 означает полный сбор данных | 1 |
SW_AGENT_COLLECTOR_BACKEND_SERVICES |
Адрес бэкенд-сервера OAP | unset |
SW_AGENT_AUTHENTICATION |
Токен аутентификации для проверки доверия агента к бэкенду OAP. Конфигурацию бэкенда см. в yaml. | unset |
SW_AGENT_COLLECTOR_HEARTBEAT_PERIOD |
Период отчёта пульса агента. Единица измерения — секунда | 20 |
SW_AGENT_COLLECTOR_GET_AGENT_DYNAMIC_CONFIG_INTERVAL |
Интервал получения динамической конфигурации агента сниффером. Единица измерения — секунда | 20 |
SW_AGENT_COLLECTOR_MAX_SEND_QUEUE_SIZE |
Длина буфера очереди отправки | 30000 |
SW_AGENT_PROCESS_STATUS_HOOK_ENABLE |
Включение функции Process Status Hook | false |
SW_AGENT_PROCESS_LABELS |
Метки процесса, несколько меток разделяются "," | unset |
Configuration Discovery Service предоставляет динамическую конфигурацию для агента, определённую в gRPC и хранящуюся на бэкенде.
Golang agent поддерживает следующие динамические конфигурации.
Конфиг ключ | Описание значения | Формат значения (пример) |
---|---|---|
agent.sample_rate | Процент выборки трассировки. Это [0, 1] , аналогично параметру WithSampler. |
0.1 |
Эта функция используется в сотрудничестве с проектом skywalking-rover.
Когда go2sky остаётся в рабочем состоянии с бэкендом, он будет... Напишите файл с метаданными в локальный (временный каталог) одновременно, который описывает информацию о текущем процессе.
Ровер сканирует все процессы со стороны, выясняет, какой процесс содержит этот файл с метаданными. Наконец, ровер может собрать данные профилирования для этого процесса.
Файл с метаданными используется для сохранения метаданных текущего процесса, он сохраняется по пути {TMPDIR}/apache_skywalking/process/{pid}/metadata.properties
.
Также, когда go2sky поддерживает соединение с бэкэндом, время изменения и открытия файла с метаданными будет обновляться.
Ключ | Тип | Описание |
---|---|---|
layer | string | этот слой процесса. |
service_name | string | имя службы этого процесса. |
instance_name | string | это имя экземпляра процесса. |
process_name | string | название процесса, оно совпадает с именем экземпляра. |
properties | json | свойства экземпляра, метки процесса также находятся в значении свойств. |
labels | string | метки процесса, несколько меток разделены «,». |
language | string | язык текущего процесса — это golang . |
Пожалуйста, ознакомьтесь с официальной документацией ровера, чтобы получить больше информации.
Apache License 2.0. Смотрите файл LICENSE для получения подробной информации.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )