Ресурси

Ресурс представляє сутність, що продукує телеметрію, у вигляді атрибутів ресурсу. Наприклад, процес, що створює телеметрію у контейнері в Kubernetes, має імʼя процесу, імʼя пода, простір імен і, можливо, імʼя розгортання. Всі ці чотири атрибути можуть бути включені до ресурсу.

У вашому бекенді спостережуваності ви можете використовувати інформацію про ресурс, щоб краще дослідити поведінку, яка вас цікавить. Наприклад, якщо дані трасування або метрики вказують на затримку у вашій системі, ви можете звузити її до певного контейнера, подів або розгортання Kubernetes.

Ресурси повинні бути призначені трасувальнику, вимірювачу та постачальнику логів під час їх ініціалізації, і створюються вони так само як атрибути:

res := resource.NewWithAttributes( semconv.SchemaURL, semconv.ServiceNameKey.String("myService"), semconv.ServiceVersionKey.String("1.0.0"), semconv.ServiceInstanceIDKey.String("abcdef12345"), ) provider := sdktrace.NewTracerProvider( ... sdktrace.WithResource(res), )

Зверніть увагу на використання пакунка semconv для надання звичайних імен для атрибутів ресурсу. Це допомагає забезпечити, щоб споживачі телеметрії, створеної з цими семантичними домовленостями, могли легко знаходити відповідні атрибути та розуміти їх значення.

Ресурси також можуть бути виявлені автоматично за допомогою реалізацій resource.Detector. Ці Detector можуть виявляти інформацію про поточний процес, операційну систему, на якій він працює, хмарного провайдера, що хостить цей екземпляр операційної системи, або будь-яку кількість інших атрибутів ресурсу.

res, err := resource.New( context.Background(), resource.WithFromEnv(), // Виявлення та надання атрибутів з середовищ змінних OTEL_RESOURCE_ATTRIBUTES та OTEL_SERVICE_NAME. resource.WithTelemetrySDK(), // Виявлення та надання інформації про використаний OpenTelemetry SDK. resource.WithProcess(), // Виявлення та надання інформації про процес. resource.WithOS(), // Виявлення та надання інформації про операційну систему. resource.WithContainer(), // Виявлення та надання інформації про контейнер. resource.WithHost(), // Виявлення та надання інформації про хост. resource.WithAttributes(attribute.String("foo", "bar")), // Додавання користувацьких атрибутів ресурсу. // resource.WithDetectors(thirdparty.Detector{}), // Використання власної реалізації Detector. ) if errors.Is(err, resource.ErrPartialResource) || errors.Is(err, resource.ErrSchemaURLConflict) { log.Println(err) // Логування нефатальних помилок. } else if err != nil { log.Fatalln(err) // Помилка може бути фатальною. }

Востаннє змінено June 5, 2025: [uk] spellchecking (8ca5a3a5)