Datadog niezrozumiałe zachowanie

0
  1. Dlaczego jeżeli chcę korzystać z Datadog to muszę jednocześnie zainstalować na maszynie hosta Datadog agent oraz przy starcie mikroserwisu dorzucić mu z linii komend dd-java-agent.jar (mam mikroserwisy w Javie)? Dlaczego muszę odpalać 2 komponenty?

  2. Da się jakoś mieć całego Datadoga postawionego lokalnie? Aktualnie jeżeli chce zobaczyć metryki/cokolwiek to mogę jedynie to zrobić przez: https://app.datadoghq.eu.

  3. Jeżeli wejdę w APM -> Services -> Konkrety serwis -> Endpoints to na liście nie pojawia się od razu adres na który przed chwilą strzeliłem z Postmana, muszę odczekać około minuty. Tak samo liczba requestów która poszła na ten endpoint. To normalne?

  4. W dokumentacji często jest informacja, że żeby coś zmienić należy dodać wpis do datadog.yaml. Gdzie jest ten plik? Szukałem i niestety nie widzę ;/

  5. Testując to mam lokalnie odpalone 3 mikroseriwsy + rabbitMQ oraz instancję oracla postawioną na zewnętrznym OpenShifcie. Teraz jeżeli wejdę w `APM -> Services to widać tam tylko serwisy + rabbit, Oracla brak. To samo w ServiceMap. Przyczyną raczej nie jest to, że Oracle jest postawiony zewnętrznie, bo wcześniej mi go pokazywał. Po prostu po czasie przestał się tam pojawiać. Dlaczego?

  6. Jeżeli wejdzie się w https://docs.datadoghq.com/tracing/visualization/services_map/ to na tym pierwszym screenie poszczególne elementy mają różne kolory. U mnie niestety wszystkie są szare. Da się to jakoś zmienić żeby normalnie był zielony a podczas awarii czerwony?

  7. Ogólnie, żeby zależności między kompnentami na serviceMap się zaktualizowały muszę dość długo czekać - około minuty. To normalne?

  8. Da się jakoś podejrzeć komunikaty, które trafiły na kolejkę? Aktualnie widzę tylko, fakt, że trafiły na dany exchange/kolejkę i datę.

3
anckor napisał(a):
  1. Dlaczego jeżeli chcę korzystać z Datadog to muszę jednocześnie zainstalować na maszynie hosta Datadog agent oraz przy starcie mikroserwisu dorzucić mu z linii komend dd-java-agent.jar (mam mikroserwisy w Javie)? Dlaczego muszę odpalać 2 komponenty?

Będę teoretyzował - jak się doszukaliśmy w innym wątku, z DD rozliczasz się od hosta, więc przypuszczam że integracja z Datadog HQ też odbywa się z poziomu hosta - ALE pewien nie jestem, trzeba by doczytać w dokomentacji, czy np. Java agent (nb. są też inne opcje, np. paczki Springowe do tracingu endpointów itd) wysyła bezpośrednio do Datadog HQ czy jednak agent z maszyny hosta pośredniczy. Na chłopski rozum miałoby to nawet sens, gdyby pośredniczył, mając na uwadze że pod spodem może hulać potencjalnie duża liczba kontenerów z DD agentami które mogą sporo raportować (domyślnie ten DD agent raportuje chyba co kilkanaście albo kilkadziesiąt sekund) no i te opłaty od hosta a nie od kontenera.

Te docsy i rysunki zdają się potwierdzać hipotezę: https://docs.datadoghq.com/developers/dogstatsd/?tab=hostagent#how-it-works

  1. Da się jakoś mieć całego Datadoga postawionego lokalnie? Aktualnie jeżeli chce zobaczyć metryki/cokolwiek to mogę jedynie to zrobić przez: https://app.datadoghq.eu.

Nic o tym nie wiem, Google najwyraźniej też nie :(

  1. Jeżeli wejdę w APM -> Services -> Konkrety serwis -> Endpoints to na liście nie pojawia się od razu adres na który przed chwilą strzeliłem z Postmana, muszę odczekać około minuty. Tak samo liczba requestów która poszła na ten endpoint. To normalne?

Tak, są opóźnienia przez to, że agent nie przesyła tych metryk na bieżąco, tylko w batchach jak już ich nieco uzbiera. To na pewno przyczynia się do opóźnienia, ale z tego co pamiętam jest konfigurowalne na poziomie agenta.

  1. W dokumentacji często jest informacja, że żeby coś zmienić należy dodać wpis do datadog.yaml. Gdzie jest ten plik? Szukałem i niestety nie widzę ;/

https://docs.datadoghq.com/agent/guide/agent-configuration-files/?tab=agentv6v7#agent-main-configuration-file

Z tego, co pamiętam jak robiłem ze 2 miesiące temu spajka nt. podpinania naszych mikroserwisów do DD - da się łatwo skonfigurować agenta (przynajmniej tego Java agenta) przez zmienne środowiskowe, wszystko jest w docsach dla Java agenta, więc powinieneś móc bez problemu wszystko pokonfigurować bez grzebania w tym datadog.yaml, klucz API podpiąć jako k8s secret z jakimś vaultem, secret storem itd.

Nie wiem natomiast, jak z agentem po stronie hosta.

  1. Testując to mam lokalnie odpalone 3 mikroseriwsy + rabbitMQ oraz instancję oracla postawioną na zewnętrznym OpenShifcie. Teraz jeżeli wejdę w `APM -> Services to widać tam tylko serwisy + rabbit, Oracla brak. To samo w ServiceMap. Przyczyną raczej nie jest to, że Oracle jest postawiony zewnętrznie, bo wcześniej mi go pokazywał. Po prostu po czasie przestał się tam pojawiać. Dlaczego?

Trudno mi powiedzieć, za mało (dokładniej nic) wiem o OpenShifcie. Tym bardziej, jeśli działało i przestało. Jak zarządzasz tym OpenShiftem? Masz jakieś informacje nt. tego, jak podpiąć metryki z zasobów OpenShift do monitoringu w DD? Może to mógłby być punkt wyjścia do poszukiwań: https://www.datadoghq.com/blog/openshift-monitoring-with-datadog/#the-datadog-operator

  1. Jeżeli wejdzie się w https://docs.datadoghq.com/tracing/visualization/services_map/ to na tym pierwszym screenie poszczególne elementy mają różne kolory. U mnie niestety wszystkie są szare. Da się to jakoś zmienić żeby normalnie był zielony a podczas awarii czerwony?

W kolorystykę DD nie umiem :( Może DD ma za mało informacji? Wg. docsów szary oznacza brak ustawionych monitorów na danym serwisie: https://docs.datadoghq.com/tracing/guide/alert_anomalies_p99_database/

  1. Ogólnie, żeby zależności między kompnentami na serviceMap się zaktualizowały muszę dość długo czekać - około minuty. To normalne?

Patrz wyżej - DD agent agreguje dane zanim je prześle do HQ, to pewnie dlatego.

  1. Da się jakoś podejrzeć komunikaty, które trafiły na kolejkę? Aktualnie widzę tylko, fakt, że trafiły na dany exchange/kolejkę i datę.

Co masz na myśli? Może to kwestia konfiguracji agenta DD, który zbiera logi RabbitMQ: https://github.com/DataDog/integrations-core/blob/master/rabbitmq/README.md

2

Jako, że ostatnio sporo pracuję z metrykami (jestem członkiem OpenTelemetry i EEF Observability WG), to mogę trochę powiedzieć o tym co i jak.

Dlaczego jeżeli chcę korzystać z Datadog to muszę jednocześnie zainstalować na maszynie hosta Datadog agent oraz przy starcie mikroserwisu dorzucić mu z linii komend dd-java-agent.jar (mam mikroserwisy w Javie)? Dlaczego muszę odpalać 2 komponenty?

Bo DD jest obmyślony na 2 części - sidecar i in-app API. Dzięki temu jest często łatwej rozwijać osobne rozwiązania, dodatkowo dzięki temu mogą gromadzić w jednym miejscu rozwiązania do gromadzenia danych z różnych komponentów systemu (przykładowo mogą gromadzić również metryki systemowe). Oczywiście to samo dałoby się zrobić w Javie, ale wtedy dla każdego dodatkowej obsługiwanej platformy (Ruby, Python, Go, C, .NET, etc.) trzeba byłoby to robić na nowo. W ten sposób mamy jedno miejsce gdzie to trzeba napisać i można to współdzielić między różnymi platformami. Dodatkowo dzięki side-carowi można obsługiwać platformy, które jeszcze nie mają oficjalnego wsparcia poprzez (rozszerzone) statsd, HTTP API do tracingu, oraz działanie jako klient syslog.

Da się jakoś mieć całego Datadoga postawionego lokalnie? Aktualnie jeżeli chce zobaczyć metryki/cokolwiek to mogę jedynie to zrobić przez: https://app.datadoghq.eu.

Tutaj niestety musisz postawić jakiś lokalny agregator, który będzie te dane gromadził. Nie jest to łatwe, bo DataDog nie publikuje swojego API do komunikacji z side-carem, ale w zależności od użytych bibliotek wewnątrz systemu można to rozwiązać inaczej (np. lokalnie metryki wystawiać po Prometheusie a na serwerze DD).

Jeżeli wejdę w APM -> Services -> Konkrety serwis -> Endpoints to na liście nie pojawia się od razu adres na który przed chwilą strzeliłem z Postmana, muszę odczekać około minuty. Tak samo liczba requestów która poszła na ten endpoint. To normalne?

Tak, APM nie jest synchronizowane na bieżąco. Co więcej tutaj może się pojawić (spodziewany) throttling i część śladów, może być nigdy nie wysłana na serwer, by oszczędzić moc serwerów oraz łącze.

Jeżeli wejdzie się w https://docs.datadoghq.com/tracing/visualization/services_map/ to na tym pierwszym screenie poszczególne elementy mają różne kolory. U mnie niestety wszystkie są szare. Da się to jakoś zmienić żeby normalnie był zielony a podczas awarii czerwony?

Musisz skonfigurować monitory, które będą śledzić status usług.

Ogólnie, żeby zależności między kompnentami na serviceMap się zaktualizowały muszę dość długo czekać - około minuty. To normalne?

Tak, bo to jest robione na podstawie APM, więc zajmuje chwilę by przetworzyć APM a następnie ogarnąć kształt infrastruktury.

0

@hauleth: dzięki za odpowiedź. Co do:

Tak, APM nie jest synchronizowane na bieŻąco (Boże, widzisz takie błędy i nie grzmisz). Co więcej tutaj może się pojawić (spodziewany) throttling i część śladów, może być nigdy nie wysłana na serwer, by oszczędzić moc serwerów oraz łącze.

Da się to jakoś konfigurować w yamlu agenta?

I jeszcze pytanie jak Oracla tam podłączyć. Jeżeli odpadam Oracla z Dockerfile'a to tego javaAgenta też muszę mu tam wpiąć?

1
anckor napisał(a):

Da się to jakoś konfigurować w yamlu agenta?

Jak najbardziej, jeszcze jak.

I jeszcze pytanie jak Oracla tam podłączyć. Jeżeli odpadam Oracla z Dockerfile'a to tego javaAgenta też muszę mu tam wpiąć?

Nie wiem, nie umiem w Javę, tym bardziej w spięciu z DD.

1 użytkowników online, w tym zalogowanych: 0, gości: 1