Exceptionless – centralne przechowywanie logów

Standardowo w aplikacjach używa się takich frameworków jak log4net czy nlog w celu logowania kluczowych informacji jak i  wyjątków. Bardzo szybko staje się jasne (szczególnie w przypadku micro-serwisów), że analizowanie plików tekstowych z logami jest czasochłonne.

Z tego względu dobrze mieć centralne repozytorium logów i łatwy do niego dostęp. Większość rozwiązań umożliwia dzisiaj indeksowanie oraz łatwe przeszukiwanie danych. Jednym z bardziej znanych produktów jest splunk. Umożliwia agregację logów z różnych źródeł i szybkie wyszukiwanie za pomocą zaawansowanych zapytań.  Za pomocą splunk łatwe jest wygenerowanie raportów np. pokazujących jaki typ wyjątku był najczęściej wyrzucany w określonym czasie.  Niestety rozwiązanie jest dość drogie.

Exceptionless nie jest alternatywą dla splunk. Jeśli jednak potrzebujemy wyłącznie centralnego repozytorium logów z możliwością wykonania prostych zapytań, wtedy ExceptionLess jest tanią lub nawet darmową alternatywą. ExceptionLess jest open-source, można zatem pobrać kod źródłowy i bez problemu hostować to na wewnętrznym serwerze. Możliwe jest również hostowanie na ich serwerach i wtedy cena zależy od liczby projektów i innych parametrów.  Dla testów jednak (jeden projekt), można stworzyć darmowe konto.

Spróbujmy zatem napisać proste demo. Zaczynamy od stworzenia darmowego konta na https://be.exceptionless.io/signup. Następnie tworzymy nowy projekt:

1

Po wybraniu typu projektu (ASP.NET MVC), dostaniemy informacje, co należy wykonać dalej:

2

Jak widzimy, musimy zainstalować odpowiedni pakiet za pomocą Install-Package Exceptionless.Mvc. Ze screenu wynika również, że musimy ustawić APIKey reprezentujący projekt, który właśnie stworzyliśmy. Wystarczy ustawić odpowiedni element w Web.config

  <exceptionless apiKey="API_KEY_HERE" />

I to naprawdę wszystko! Przyglądając się Web.config zobaczymy również, że dodatkowy moduł został dołączony:

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules>
      <add name="ExceptionlessModule" type="Exceptionless.Mvc.ExceptionlessModule, Exceptionless.Mvc" />
    </modules>
  </system.webServer>

Dzięki temu, nieobsłużone wyjątki zostaną zapisane automatycznie w bazie ExceptionLess. Spróbujmy zatem wyrzucić jakiś wyjątek w kontrolerze:

        public ActionResult Index()
        {
            throw new ArgumentNullException("Any message");

            return View();
        }

Przechodząc teraz do zakładki “Exceptions”, zobaczymy, że wyjątek został przechwycony przez ExceptionLess i zapisany:

3

Klikając na wpisie, przejdziemy do szczegółów:

4

U góry aplikacji widzimy również opcje wyszukiwania, która wspiera m.in. znak “*”:

5

Dane są indeksowane, zatem wyszukiwanie jest szybkie.

W ustawieniach konta, możemy również skonfigurować powiadomienia o np. krytycznych wyjątkach lub otrzymywać codzienny raport. ExceptionLess nie służy wyłącznie do przechowywania wyjątków, ale do logowania jakichkolwiek zdarzeń. Do każdego zdarzenia można dołączać tag, dzięki temu exceptionless jest przydatny w monitorowaniu działania aplikacji. Za pomocą raportów, w łatwy sposób możemy dowiedzieć się, które elementy aplikacji są najczęściej wykorzystywane.

One thought on “Exceptionless – centralne przechowywanie logów”

Leave a Reply

Your email address will not be published.