Pytanie Czy możliwe jest korzystanie ze scentralizowanego rejestrowania dla aplikacji Docker ElasticBeanstalk?


Mamy niestandardową aplikację internetową Docker działającą w środowisku kontenerowym Elastic Beanstalk Docker. Chciałbym mieć dostępne dzienniki aplikacji do przeglądania na zewnątrz. Bez pobierania przez instancje lub konsolę AWS.

Do tej pory żadne z rozwiązań nie było do przyjęcia. Może ktoś uzyskał scentralizowane logowanie do aplikacji Elastic Benastalk Dockerized?

Rozwiązanie 1: Pobierz dziennik konsoli AWS

nie do zaakceptowania - wymaga pobierania dzienników, wyodrębniania za każdym razem. Nie w czasie rzeczywistym.

Rozwiązanie 2: S3 + Elasticsearch + Fluentd

fluentd nie ma wtyczki do pobierania logów z S3 Istnieje doskonała wtyczka S3, ale tylko dla wyjścia logu do S3. nie dla logów wejściowych z S3.

Rozwiązanie 3: S3 + Elasticsearch + Logstash

Cons: Może tylko wyciągnąć wszystkie dzienniki z całego wiadra lub nic.

Problem leży w strukturze magazynu Elastic Beanstalk S3 Log. Nie można określić wzorca nazwy pliku. To albo wszystkie dzienniki, albo nic. ElasticBeanstalk zapisuje logi na S3 w ścieżce zawierającej losowe wystąpienia i identyfikatory środowiska:

s3.bucket/resources/environments/logs/publish/e-<random environment id>/i-<random instance id>/my.log@

Wtyczkę Logstash s3 można wskazać tylko na zasoby / environment / logs / publish /. Przy próbie wskazania środowiska / logs / publish / * / my.log to nie działa. co oznacza, że ​​nie można pobrać konkretnego dziennika i tag / wpisz go, aby móc go znaleźć w Elasticsearch. Ponieważ AWS zapisuje logi ze wszystkich środowisk i instancji w tej samej strukturze folderów, nie można wybrać nawet instancji.

Rozwiązanie 4: Przeglądarka dzienników konsoli AWS CloudWatch

Możliwe jest przekazywanie własnych logów do konsoli CloudWatch. Osiągnij to, umieść pliki konfiguracyjne w ścieżce .ebextensions pakietu aplikacji: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.cloudwatchlogs.html

Istnieje plik o nazwie cwl-webrequest-metics.config, który umożliwia określenie plików dziennika wraz z alertami itp. Wspaniały!? z tym wyjątkiem, że format pliku konfiguracyjnego nie jest ani yaml, xml ani Json i nie jest udokumentowany. Jest absolutnie zero wzmianek o tym pliku, jest to format na stronie dokumentacji AWS lub w dowolnym miejscu w Internecie. Aby jeden plik dziennika pojawił się w CloudWatch, nie wystarczy po prostu dodać linię konfiguracyjną. Jedynym możliwym sposobem na uzyskanie tego działającego wydaje się być próba i błąd. Wspaniały!? z wyjątkiem każdej próby ponownego wdrożenia środowiska.

Jest tylko jedno odniesienie do tego, jak sprawić, by działało to z logowaniem niestandardowym: http://qiita.com/kozayupapa/items/2bb7a6b1f17f4e799a22 Nie mam pojęcia, jak ta osoba dokonała inżynierii wstecznej w formacie pliku.

Cons: 

  • Cloudwatch nie wydaje się być w stanie podzielić dzienników na kolumny podczas wyświetlania, więc nie można łatwo filtrować według priorytetów, itp.
  • Przeglądarka dzienników konsoli AWS nie ma automatycznego odświeżania, aby śledzić dzienniki.
  • Nightmare - nieudokumentowany format pliku konfiguracyjnego, bez możliwości testowania. Trial i error wymaga ponownego wdrożenia całego wystąpienia.

22
2017-12-05 20:59


pochodzenie


Jeśli chodzi o "* / my.log", czy opcja "prefiks" do wejścia s3 działa? "Jeśli jest określony, przedrostek nazwy plików w wiadrze musi pasować (a nie wyrażenie regularne)" - Alain Collins
Aby uzyskać ogólniejszą kwestię wysyłania dzienników dokowania do programu logstash, uważam, że można współużytkować punkt montowania między hostem a kontenerem. Umieść tam swoje dzienniki i wyślij je z hosta. - Alain Collins
Opiekun Fluentd tutaj. Czy możesz wyjaśnić, w jaki sposób chcesz uzyskać dane z S3? - Kiyoto Tamura
@KiyotoTamura Zasadniczo to samo, co plugin Logstash S3 - wskaż na wiadro i ścieżkę S3. Plugin pobiera dzienniki okresowo. - Roman
@ KiiyotoTamura Nie jestem pewien, czy rozumiem twoje pytanie. Pytasz, jak to zrobić na poziomie programowania lub na poziomie konfiguracji? lub na poziomie koncepcyjnym? Podobnie jak w przypadku wtyczki Logstash pobiera dzienniki przy użyciu skonfigurowanego wzorca ścieżki i poświadczeń S3. - Roman


Odpowiedzi:


Być może Funkcja AWS Lambdama zastosowanie?

Napisz trochę javascriptu, który zrzuca wszystkie powiadomienia, a następnie zobacz, co możesz z nimi zrobić.

Po napisaniu obiektu możesz zmienić jego nazwę w tym samym wiadrze?

Lub powiadomić własną usługę zarządzania logami o utworzeniu nowego obiektu?

Mnóstwo możliwości tam ...


1
2017-07-28 21:17



Słyszałem również o tym rozwiązaniu. Czy masz na myśli kilka przykładów? - aholbreich


W tej chwili zacząłem używać Sumologic. Jest darmowa wersja próbna, a następnie darmowa warstwa (500 MB / dzień, 7 dni przechowywania). Nie skończyłem jeszcze okresu próbnego, a moja aplikacja EB robi dosłownie nic (to tylko kilka stron HTML obsługiwanych przez Nginxa w pojemniku dokera.) Wygląda na to, że może to być drogie, gdy trafisz na jakąkolwiek poważną liczbę dzienników.

Działa do tej pory. Musisz utworzyć użytkownika IAM, który ma dostęp do wiadra S3, z którego chcesz czytać, a następnie przesyła logi do serwerów Sumologic i wykonuje wszystkie operacje przetwarzania i przeszukiwania. Nieco skomplikowane, ale naprawdę nie widzę, jak to może być prostsze i jest dość dobrze udokumentowane.

Umożliwia podawanie różnych wyrażeń ścieżki za pomocą symboli wieloznacznych, a następnie przypisanie "sourceCategory" do tych różnych ścieżek. Następnie wykorzystaj te źródłaCategories, aby filtrować przeszukiwanie logów do określonego typu rejestrowania.

Mój plan długoterminowy polega na użyciu czegoś podobnego do rozwiązania 3, ale to doprowadziło mnie do bardzo krótkiej kolejności, więc mogę przejść do innych rzeczy.


0
2018-04-20 04:13



Jak korzystać z Sumologic z EB? Nigdzie nie ma informacji poza tym Gistem: gist.github.com/jorihardman/f3507764762e876cc9df - Roman
Wygląda na to, że przesyła dzienniki bezpośrednio z instancji na serwery SumoLogic. Skonfiguruję środowiska EB tak, aby "publikowały dzienniki" (umieszczają pliki dziennika w wiadrze elastycznego zasobnika fasoli). Następnie skonfiguruj SumoLogic (na stronie sumologicznej) z danymi uwierzytelniającymi, które mogą odczytywać dzienniki z zasobnika EB. SL następnie loguje się, ściąga logi do ich strony, a następnie przetwarza dzienniki. - Shorn


Możesz użyć środowiska Multicontainer, udostępniając folder dziennika do innego kontenera dokowanego za pomocą narzędzia do centralizacji dzienników, w tym przypadku podłączono Apache Flume, aby przenieść pliki do HDFS. Mam nadzieję, że to ci pomoże.


0
2017-07-03 00:02





Najłatwiejszą metodą, jaką znalazłem, było użycie papierowy szlak poprzez rsyslog i .ebextensions, jednak rejestrowanie wszystkiego jest bardzo kosztowne.

Zaletą jest to, że rsyslog możesz zasadniczo wysłać swoje dzienniki w dowolnym miejscu i nie jesteś przywiązany do papertrail.

przykład ebextension


0
2017-07-23 22:13





znalazłem loggly być najwygodniejszym.
Jest to usługa hostowana, która może nie być tym, czego potrzebujesz. Jednak jeśli sprawdzić ich strona konfiguracji możesz zobaczyć, w jaki sposób twoja sytuacja jest wspierana (specyficzne rozwiązania dotyczące doku, a także jak 10 opcji specyficznych dla Amazona). Nawet jeśli loggly nie jest w twoim guście, możesz spojrzeć na te rozwiązania i łatwo zobaczyć, jak niektóre z nich można zastosować do większości scentralizowanych rozwiązań do rejestrowania, których możesz używać lub pisać.


0
2018-01-04 18:39