OpenTelemetry w WEBCON 2026 R1

Facebooktwitterpinterestlinkedinmail
Dotyczy wersji 2026 R1, autor: Łukasz Maciaszkiewicz, Lily Adamowicz

Artykuł dotyczący wersji wcześniejszych

 

Wprowadzenie

W dzisiejszych dynamicznych i rozproszonych środowiskach aplikacyjnych monitorowanie i analiza są kluczowe dla zapewnienia wysokiej wydajności, niezawodności i optymalizacji aplikacji. Aby sprostać tym wyzwaniom, począwszy od wersji 2023 R1 w WEBCON BPS wprowadzono wsparcie dla OpenTelemetry – potężnego narzędzia, które ułatwia zbieranie danych diagnostycznych i metryk z systemów informatycznych.

Niniejszy artykuł ma na celu omówienie sposobu konfiguracji telemetrii opartej na standardzie OpenTelemetry w systemie WEBCON BPS dla Portalu oraz Serwisu.

Czym jest telemetria?

Telemetria to proces zbierania, przesyłania i analizowania danych diagnostycznych i operacyjnych z systemów informatycznych. W praktyce obejmuje ona monitorowanie i zbieranie danych z różnych komponentów systemów IT w celu uzyskania informacji na temat ich działania, wydajności, bezpieczeństwa i innych istotnych parametrów.

Telemetria zapewnia szereg korzyści, takich jak monitorowanie i diagnozowanie problemów w czasie rzeczywistym, optymalizowanie wydajności w oparciu o analizę danych i identyfikację wąskich gardeł oraz usprawnione planowanie pojemności i skalowalność. Ponadto daje ona możliwość zdalnego monitorowania i zarządzania systemami oraz podejmowania świadomych decyzji dotyczących utrzymania i optymalizacji infrastruktury IT.

Projekt OpenTelemetry

OpenTelemetry to otwarty projekt, który ma na celu standaryzację i ułatwienie monitorowania, analizowania i zarządzania systemami rozproszonymi. Jest to narzędzie, które zapewnia programistom możliwość zbierania, generowania i przesyłania danych telemetrycznych (takich jak metryki, dzienniki i dane diagnostyczne śledzenia) z aplikacji działających w różnych środowiskach.

Rozwiązanie to integruje się z różnymi technologiami i językami programowania, umożliwiając deweloperom zbieranie danych diagnostycznych z różnych źródeł, takich jak usługi chmurowe, serwery, kontenery i aplikacje rozproszone. Działa ono na zasadzie instrumentacji, tj. dodawania kodu do aplikacji w celu zbierania danych telemetrycznych.

Wraz z OpenTelemetry dostarczane jest jednolite API oraz biblioteki dla wielu języków programowania, co umożliwia deweloperom korzystanie z jednolitego zestawu narzędzi do monitorowania aplikacji w różnych środowiskach.

  • OpenTelemetry a WEBCON BPS

System WEBCON BPS często pełni rolę centralnego punktu integrującego rozmaite wykorzystywane w przedsiębiorstwie systemy IT. Dzięki wsparciu dla standardu OpenTelemetry osoby zarządzające systemem otrzymują dokładny wgląd w całość ruchu i przepływów przechodzących przez system. W rezultacie możliwe jest nie tylko monitorowanie danego przepływu, ale także dokładne prześledzenie wszystkich towarzyszących mu działań i operacji (w tym powiązanych z systemami zintegrowanymi z BPSem). Oprócz oczywistych korzyści z punktu widzenia diagnostyki i wykrywania błędów, administratorzy systemu zyskują w ten sposób ważne informacje w kwestiach związanych z wydajnością.

OpenTelemetry w WEBCON BPS – kwestie techniczne

W ujęciu technicznym wsparcie dla OpenTelemetry w systemie WEBCON BPS dotyczy segmentu Portalu oraz Serwisu. Udostępniono przy tym możliwość korzystania z dwóch filarów wspomnianego standardu, tj. danych śledzenia diagnostycznego (traces) oraz danych metrycznych (metrics). Dodatkowo w Portalu dostępny jest eksport logów (Serilog) za pomocą protokołu OTLP; w Serwisie eksport logów przez OTLP nie jest wspierany.

Oprócz protokołu OTLP (OpenTelemetry Protocol) stanowiącego część projektu OpenTelemetry, na potrzeby gromadzenia i przetwarzania danych śledzenia udostępniono możliwość korzystania z platformy Jaeger, natomiast do odbierania i analizowania danych metryk można korzystać z narzędzia Prometheus.

  • Plik appsettings.json

Wraz ze zmianami architektonicznymi WEBCON konfiguracja telemetrii jest realizowana w całości w pliku appsettings.json (osobno dla Portalu i Serwisu). Plik otlpsettings.json nie jest już wykorzystywany. 

Ustawienia OpenTelemetry znajdują się w węźle OpenTelemetry w pliku appsettings.json: 

"OpenTelemetry": { 
  "Metrics": { 
    "Enabled": false, 
    "Prometheus": { 
      "Enabled": true, 
      "Endpoint": "/metrics", 
      "CacheDuration": 100 
    }, 
    "Exporters": {} 
  }, 
  "Tracing": { 
    "Enabled": false, 
    "ShowExceptions": true, 
    "HttpTracing": true, 
    "SqlTracing": { 
      "Enabled": true, 
      "ShowDbStatements": true 
    }, 
    "Exporters": {} 
  }, 
  "Logs": { 
    "Enabled": false, 
    "Exporters": {} 
  } 
} 

W metrykach usunięto przełączniki uruchamiania poszczególnych instrumentacji – po włączeniu metryk uruchamiane są wszystkie dostępne instrumentacje.  

Konfiguracja Prometheusa znajduje się w osobnym węźle OpenTelemetry:Metrics:Prometheus. 

Istnieje możliwość eksportu logów z Seriloga do OTLP. Logi są eksportowane zgodnie z konfiguracją w OpenTelemetry:Logs:Exporters. Funkcja jest wspierana wyłącznie w Portalu. 

Struktura pojedynczego eksportera OTLP w węźle Exporters (Metrics/Tracing/Logs) wygląda następująco: 

"Otlp": { 

  "Enabled": true, 

  "Endpoint": "", 

  "Headers": "", 

  "Protocol": "" 

} 

Azure Monitor / Application Insights jest wspierany, ale konfiguracja odbywa się w osobnym węźle w pliku appsettings.json (poza węzłem OpenTelemetry): 

"ApplicationInsights": { 

  "ConnectionString": "<connection string z Application Insights>" 

} 

Ustawienie wyłącznie ApplicationInsights:ConnectionString powoduje przesyłanie telemetrii (traces, metryki i logi) do Application Insights niezależnie od przełączników Enabled w węźle OpenTelemetry. 

Wszystkie ustawienia węzła OpenTelemetry działają zarówno dla Portalu, jak i Serwisu, z wyjątkiem logów (OpenTelemetry:Logs), które są wspierane tylko w Portalu.

 

  • Wspierana instrumentacja

Jak wspomniano WEBCON BPS obsługuje dwa filary projektu OpenTelemetry, tj. Tracing (dane śledzenia diagnostycznego) oraz Metrics (dane metryczne). Zapewniono przy tym wsparcie dla szeregu modułów, które mogą zostać wykorzystane w ramach konfiguracji. Poniższe tabele zawierają informacje na temat wspieranej instrumentacji w przypadku obu z wymienionych filarów.

Tracing
Nazwa modułu Uwagi
ASP .NET Core Instrumentation
SqlClient W przypadku Portalu i Serwisu istnieje możliwość podglądu zapytań SQL
HttpClient
WCF Client Integracja z Serwisem

 

* W przypadku danych śledzenia diagnostycznego system WEBCON BPS standardowo wspiera eksport danych za pośrednictwem protokołu OTLP (konfiguracja zgodna z ustawieniami odbiorcy danych). W przypadku integracji z Jaeger (OTLP/HTTP) jako endpoint należy ustawić http://localhost:4318/v1/traces, a Protocol: http.

 

Metrics
Nazwa modułu Uwagi
ProcessInstrumentation
RuntimeInstrumentation Konfiguracja w polu „ProcessInstrumentation”
AspNetCoreInstrumentation Konfiguracja w polu „WebInstrumentation”
HttpClientInstrumentation Konfiguracja w polu „WebInstrumentation”

 

* Eksport danych metrycznych jest możliwy za pośrednictwem protokołu OTLP (konfiguracja zgodna z ustawieniami odbiorcy danych) oraz platformy Prometheus (domyślne ustawienie punktu końcowego: „/metrics”).

** Eksport logów (Serilog) jest możliwy w Portalu za pośrednictwem OTLP (konfiguracja w OpenTelemetry:Logs:Exporters).

*** Nie ma możliwości uruchomienia każdej instrumentacji osobno — instrumentacje uruchamiają się automatycznie w momencie uruchomienia metryk.

 

Konfiguracja

Pierwszym krokiem w procesie konfiguracji standardu OpenTelemetry jest ustawienie kolektora danych (komponentu odpowiedzialnego za odbieranie, przetwarzanie i przekazywanie danych telemetrycznych). W omawianym przykładzie wykorzystano do tego narzędzie Honeycomb dostępne pod adresem: https://ui.eu1.honeycomb.io/. Narzędzie to posłuży w tym wypadku do odbierania danych śledzenia diagnostycznego (traces).

Kliknij zamieszczony link, aby przejść na stronę logowania do narzędzia. Jeżeli nie posiadasz jeszcze konta, utwórz je, klikając przycisk Sign up for free today (Zarejestruj się za darmo) [istnieje także możliwość zalogowania się za pomocą konta Google (przycisk Login with Google)].

 

Aby utworzyć konto, kliknij przycisk Sign up for free today.

 

UWAGA: narzędzie umożliwia wybranie jednego z dwóch regionów: Unii Europejskiej (European Union) lub Ameryki Północnej (North America). Warto pamiętać, że każdy region posiada inny adres punktu końcowego (endpointa) (dla UE jest to: https://api.eu1.honeycomb.io/v1/traces, natomiast dla Ameryki Północnej: https://api.honeycomb.io/v1/traces), co ma wpływ na konfigurację eksportera w pliku appsettings.json omawianą w dalszej części artykułu. Poniżej opisano konfigurację dla regionu Unii Europejskiej.

 

Przycisk umożliwiający wybór regionu dla narzędzia Honeycomb

 

Po naciśnięciu przycisku Sign up for free today na nowo otwartej stronie podaj swoje imię (pole First name) i nazwisko (Last name), a także adres e-mail [Email address (work)], i naciśnij przycisk Sign up.

 

 

Po wprowadzeniu wspomnianych danych i kliknięciu przycisku na podany adres e-mail przesłana zostanie wiadomość z linkiem aktywującym konto, który należy kliknąć.

 

Wiadomość e-mail zawierająca link aktywujący konto w usłudze Honeycomb

 

Kliknięcie linku otwiera stronę umożliwiającą zdefiniowanie hasła do konta. (Hasło musi posiadać od 12 do 72 znaków, zawierać co najmniej dwa słowa oraz liczbę lub znak specjalny).

 

 

Po wprowadzeniu hasła oraz naciśnięciu przycisku Continue przystąp do tworzenia zespołu. Jego nazwa (pole Team name) jest domyślnie uzupełniana w oparciu o podany adres e-mail, konieczne jest jednak podanie zajmowanego stanowiska (Your occupation). [Uzupełnienie pola How did you first hear about Honeycomb? (Jak dowiedziałeś się o Honeycomb?) nie jest wymagane]. Po wprowadzeniu informacji naciśnij przycisk Create Team (Utwórz zespół).

 

 

Po utworzeniu zespołu następuje przekierowanie na stronę główną narzędzia. W górnej części okna wyświetlany jest komunikat informujący o oczekiwaniu na przesyłanie danych.

 

 

UWAGA: po utworzeniu konta do odbierania danych użytkownik ma możliwość wykorzystania domyślnie utworzonego środowiska testowego (test). Warto jednak pamiętać, że możliwe jest także utworzenie własnego środowiska, klikając kolejno ENVIRONMENTManage environmentsCreate environment. W artykule zaprezentowano konfigurację z użyciem domyślnego środowiska „test”.

 

 

Aby skorzystać z nowo utworzonego konta, należy otworzyć plik appsettings.json znajdujący się w głównym katalogu Portalu oraz Serwisu. (Do edycji pliku można użyć dostępnego w systemie Windows programu Notatnik lub dowolnego edytora kodu źródłowego, np. Notepad++). Zważywszy, że konfiguracja wspomnianego pliku jest identyczna dla Portalu i Serwisu, w artykule prezentowana jest konfiguracja wyłącznie dla pliku Portalu (niemniej należy pamiętać, aby opisywane kroki wykonać także dla pliku Serwisu).

W pliku appsettings.json znajdź węzeł OpenTelemetry i przejdź do sekcji Tracing. W węźle cząstkowym Exporters dodaj nowy eksporter o nazwie HoneyComb, wklejając następujące wiersze: 

 

"HoneyComb": {

   "Enabled": true,

   "Endpoint": "https://api.eu1.honeycomb.io/v1/traces",

   "Headers": "x-honeycomb-team=[your-api-key]",

   "Protocol": "http"

}

 

Następnie w nowo wstawionym obiekcie ciąg [your-api-key] (widoczny w nagłówku Headers) zastąp kluczem API. Klucz ten jest dostępny na stronie głównej narzędzia Honeycomb.

 

Klucz API dostępny na głównej stronie narzędzia Honeycomb

 

Następnie pamiętaj, aby zarówno w węźle Honeycomb, jak i węźle nadrzędnym w stosunku do niego (tj. Tracing), ustawić wartość „true” dla parametru Enabled.

Zapisz zmiany i zrestartuj usługi IIS (Internet Information Services).

Po kilku chwilach usługa Honeycomb powinna zacząć odbierać dane z platformy WEBCON BPS (warto przy tym wykonać kilka operacji w Portalu, aby dane zaczęły spływać szybciej).

 

Strona główna narzędzia Honeycomb odbierającego dane z platformy WEBCON BPS

 

Warto zauważyć, że do obsługi danych śledzenia diagnostycznego istnieje możliwość użycia także innych narzędzi. Poniżej opisano przykładowe konfiguracje dla Azure Monitor / Application Insights, środowisk AWS, Google Cloud (z wykorzystaniem standardowego eksportu OTLP), a także dla narzędzia Jaeger (tracing) oraz Prometheus i powiązanej z nim platformy Grafana służących do monitorowania i analizowania danych metrycznych.

  • Azure Monitor / Application Insights 

Aby wysyłać telemetrię do Application Insights, dodaj w pliku appsettings.json węzeł ApplicationInsights z ConnectionStringSamo ustawienie ConnectionString powoduje przesyłanie telemetrii do Application Insights niezależnie od przełączników w węźle OpenTelemetry. 

  • AWS 

Eksport do środowisk AWS realizowany jest przez standardowe eksportery OTLP, kierując dane do collectora AWS. Jeśli uruchomione są tracing lub metryki, instrumentacja wymagana dla AWS jest uruchamiana automatycznie. 

  • Google Cloud 

W obecnej konfiguracji nie wspieramy dedykowanego węzła z ProjectId. Zamiast tego zalecane jest użycie collectora Google wspierającego eksport OTLP (np. Ops Agent/OTLP). 

  • Jaeger

Narzędzie Jaeger służy do monitorowania i analizowania ścieżek zapytań w systemach rozporoszonych. Jest to rozwiązanie darmowe, dostępne do pobrania pod następującym adresem: https://www.jaegertracing.io/download/.

Kliknij zamieszczony link, wybierz wersję narzędzia odpowiadającą systemowi operacyjnemu i pobierz plik. Jego zawartość należy wypakować do folderu „C:\Jaeger” (folder należy utworzyć, jeżeli nie istnieje).

Następnie otwórz plik appsettings.json  i przejdź do węzła OpenTelemetry → Tracing → Exporters. Dodaj (lub włącz) eksporter dla Jaeger, ustawiając: Enabled=true, Endpoint=http://localhost:4318/v1/traces, Protocol=http.

Po zapisaniu zmian w pliku przejdź do katalogu C:/Jaeger, gdzie zainstalowano narzędzie, a następnie otwórz konsolę Windows, wpisując w pasek adresu folderu komendę „cmd”. W oknie konsoli wpisz jaeger-all-in-one.exe.

 

Po uruchomieniu pliku status platformy Jaeger można podejrzeć, przechodząc pod następujący adres w przeglądarce: http://localhost:16686/.

 

  • Prometheus

Zasadniczym przeznaczeniem narzędzia Prometheus jest zbieranie, przechowywanie i analizowanie danych metrycznych dotyczących wydajności, stanu i innych parametrów systemów i aplikacji;. Aby jednak zacząć korzystać z narzędzia, w pliku appsettings.json ustaw wartość „true” w parametrze Enabled w węzłach cząstkowych Metrics  oraz Prometheus .

Kolejnym krokiem jest pobranie narzędzia. Można to zrobić, klikając link https://prometheus.io/download/, pamiętając przy tym, aby jego wersja odpowiadała posiadanemu systemowi operacyjnemu. Po pobraniu pliku jego zawartość rozpakuj w folderze „C:\Prometheus” (folder należy utworzyć, jeżeli nie istnieje). W folderze tym znajdź i otwórz plik prometheus.yml (ponownie można to zrobić za pomocą programu Notatnik lub edytora kodu, np. Notepad++) i dodaj sekcję z adresem i portem Portalu zgodnie z poniższym wzorem:

  •  bpsportal: "dev18.webcon.pl:48439" 
    scheme: https 
  •  bpsservice: "localhost:9464"
    scheme nie jest wymagane 

Należy przy tym pamiętać, aby zachować odpowiednie wcięcie i stosować wyłącznie spacje jako białe znaki.

Po zapisaniu zmian w pliku istnieje możliwość sprawdzenia statusu narzędzia. Aby to zrobić, podobnie jak w przypadku narzędzia Jaeger, przejdź do katalogu narzędzia Prometheus (C:\Prometheus) i w pasku adresu folderu wpisz „cmd”. W konsoli Windows wpisz polecenie „prometheus.exe”. Po uruchomieniu programu w oknie przeglądarki internetowej wklej: http://localhost:9090/targets. Wyświetlone zostanie następujące okno:

 

  • Grafana

Ostatnim krokiem jest skonfigurowanie narzędzia Grafana służącego w tym przypadku do wizualizacji i monitorowania danych metrycznych za pomocą interaktywnych i dynamicznych pulpitów nawigacyjnych (tzw. dashboardów).

Instalator narzędzia dostępny jest pod następującym adresem: https://grafana.com/grafana/download?pg=get&plcmt=selfmanaged-box1-cta1&platform=windows. Po pobraniu należy zainstalować oprogramowanie, upewniając się, że wybrany został komponent Run Grafana as a service.

 

Po zakończeniu instalacji otwórz przeglądarkę internetową, a następnie w pasku adresu wklej adres: http://localhost:3000/. Wyświetlona zostanie witryna narzędzia Grafana z oknem logowania. Domyślna nazwa użytkownika i hasło to „admin” (po zalogowaniu istnieje możliwość zmiany hasła).

 

Aby narzędzie mogło wizualizować i monitorować dane konieczne jest dodanie źródła danych. W tym celu kliknij kafelek DATA SOURCES znajdujący się w głównym oknie narzędzia.

 

W nowym oknie wybierz opcję Prometheus z listy dostępnych źródeł danych.

 

W oknie konfiguracji źródła danych Prometheus należy podać adres URL serwera narzędzia Prometheus (np. http://localhost:9090/). Pozostałe ustawienia są opcjonalne i mogą być modyfikowane przez użytkownika zgodnie z jego preferencjami.

 

Po wprowadzeniu zmian należy kliknąć przycisk Save & test znajdujący się w dolnej części strony. Poprawnie skonfigurowane źródło danych umożliwia tworzenie wykresów oraz generowanie pulpitów nawigacyjnych (dashboardów).

Dostępne miary i metryki

Konfigurując moduły ProcessInstrumentation oraz WebInstrumentation użytkownik może uzyskać dostęp do danych metrycznych udostępnianych przez środowisko bądź platformę ASP.NET.

W przypadku modułu ProcessInstrumentation przekazywane są dane metryczne udostępniane przez system, takie jak chociażby zużycie pamięci, operacje dyskowe, operacje sieciowe, liczba utworzonych wątków, czy obciążenie procesora.

Wreszcie moduł WebInstrumentation umożliwia monitorowane i analizowanie:

  • żądań HTTP (np. czas odpowiedzi, liczba obsłużonych żądań na sekundę, kod odpowiedzi HTTP),
  • przepływu żądań (w jaki sposób żądania są przekazywane przez różne warstwy aplikacji, jakie operacje są wykonywane w ich obrębie oraz jakie są czasy odpowiedzi poszczególnych komponentów),
  • propagacji kontekstu (możliwość śledzenia przepływu informacji i mierzenia wydajności nawet w przypadku żądań, które przechodzą przez wiele serwisów i komponentów).

Ponadto WEBCON BPS udostępnia szereg własnych miar i metryk, które można wykorzystać do monitorowania systemu. Poniżej wymieniono wspomniane miary wraz z krótkim opisem:

Nazwa modułu Opis
webcon-workflow-form-path-transitions Liczba przejść ścieżką. Licznik uwzględnia każde rozpoczęte przejście ścieżką (bez względu na to, czy zakończyło się pozytywnie, czy błędem).
webcon-workflow-form-success-path-transitions Liczba pozytywnie zakończonych przejść ścieżką (nie są zliczane przejścia zakończone błędem).
webcon-workflow-form-open Liczba otwarć formularza.
webcon-workflow-form-elements-cache Liczba elementów znajdujących się obecnie w pamięci podręcznej. Do pamięci podręcznej dodawane są elementy w momencie otwarcia formularza i są one usuwane z tej pamięci w momencie przejścia ścieżką.
webcon-workflow-form-path-transitions-in-progress Liczba aktualnie trwających przejść ścieżką. W prawidłowo działającym systemie wielkość ta powinna być możliwie nieduża (prawidłowe przejście ścieżką może trwać do kilkuset milisekund). Miara może wzrosnąć w przypadku dużego obciążenia systemu (wiele  równoległych przejść ścieżką).
webcon-workflow-form-paths-transition-times Histogram czasów przejść ścieżką
webcon-workflow-portal-open Liczba otwarć Portalu. (Zliczane jest każde otwarcie Portalu w nowym oknie przeglądarki).

 

Podsumowanie

Opisana powyżej konfiguracja standardu OpenTelemetry pozwala na szybkie rozpoczęcie monitorowania i analizowania danych pochodzących z systemu WEBCON BPS oraz zintegrowanych z nim systemów. Dzięki temu osoba zarządzająca systemem zyskuje użyteczne narzędzie umożliwiające wgląd w dane niejednokrotnie niedostępne w inny sposób, a tym samym zyskuje możliwość ulepszania i rozwijania własnego systemu.