Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

Logstash

Autor: Piotr Karpiuk o piątek 20. Grudzień 2019

Wprowadzenie

Logstash to narzędzie będące swoistą stacją przekaźnikową i rozgałęziaczem do przetwarzania strumieni danych. Typowy potok przetwarzania (ang. pipeline) Logstasha łączy wiele strumieni wejściowych w jeden strumień wyjściowy, przy okazji uzupełniając przepływające rekordy danych o nowe informacje. Strumień danych wejściowych jest tu rozumiany bardzo szeroko i obejmuje takie źródła jak pliki dzienników (np. Apache, syslog), brokery komunikatów, usługi HTTP, skrzynka emailowa, wyniki cyklicznie uruchamianych poleceń shella lub zapytań do baz danych, kanały RSS, a nawet strumień postów z Twittera. Typowym wyjściem jest NoSQLowa baza danych Elasticsearch, ale możliwych dodatkowych miejsc docelowych jest wiele, np. możemy sobie zażyczyć aby wszystkie dane dodatkowo zrzucać do pliku lub przekazywać na wejście do jakiegoś skryptu Pythona, wysyłać do aplikacji Graphite, StatsD, itd.

Typowym przykładem transformacji danych dokonywanej przez Logstash jest konwersja rekordu dziennika Apache:

83.149.9.216 - - [04/Jan/2015:05:13:42 +0000] "GET /images/kibana-search.png HTTP/1.1" 200 203023 "/logstash-monitorama-2013/" \
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"

na format JSON, z jednoczesnym ustaleniem nazwy domenowej dla adresu IP i przybliżonej lokalizacji geograficznej adresu IP:

{
        "request" => "/images/kibana-search.png",
          "agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36",
         "offset" => 325,
           "auth" => "-",
          "ident" => "-",
           "verb" => "GET",
         "source" => "/path/to/file/logstash-tutorial.log",
        "message" => "83.149.9.216 - - [04/Jan/2015:05:13:42 +0000] GET /images/kibana-search.png HTTP/1.1 ...",
       "referrer" => "/logstash-monitorama-2013/",
     "@timestamp" => 2017-11-09T02:51:12.416Z,
       "response" => "200",
          "bytes" => "203023",
       "clientip" => "83.149.9.216",
     "client_dns" => "gprs-client-83.149.9.216.misp.ru",
          "geoip" => {
              "timezone" => "Europe/Moscow",
                    "ip" => "83.149.9.216",
              "latitude" => 55.7485,
        "continent_code" => "EU",
             "city_name" => "Moscow",
          "country_name" => "Russia",
         "country_code2" => "RU",
         "country_code3" => "RU",
           "region_name" => "Moscow",
              "location" => {
                   "lon" => 37.6184,
                   "lat" => 55.7485
              },
           "postal_code" => "101194",
           "region_code" => "MOW",
             "longitude" => 37.6184
       },
       "@version" => "1",
           "host" => "My-MacBook-Pro.local",
    "httpversion" => "1.1",
      "timestamp" => "04/Jan/2015:05:13:42 +0000"
}
    

Gwoli ścisłości, pod wejście i wyjście Logstasha możemy podpiąć tzw. kodeki które dekodują/kodują dane do określonego formatu (np. protobuf, JSON, itp.).

Czytaj więcej »

Tags:
Napisany w ELK | Brak komentarzy »

Amazon Sumerian

Autor: Piotr Karpiuk o poniedziałek 14. Styczeń 2019

Amazon Sumerian to usługa chmury AWS pozwalająca tworzyć wirtualne światy 3D (w tym VR: Oculus Go, Oculus Rift, HTC Vive, HTC Vive Pro, Google Daydream, and Lenovo Mirage) w przeglądarce i na urządzenia mobilne. Oprócz własnoręcznie zaprojektowanych przedmiotów można w wygenerowanym świecie umieścić wirtualny awatar człowieka (tzw. host, kilkanaście do wyboru spośród kobiet i mężczyzn, białych, czarnoskórych itp.) i programować jego zachowanie oraz wypowiedzi.

Przykład takiej aplikacji mamy po prawej stronie. Otworzy się ona w nowoczesnej przeglądarce Chrome lub Firefox, przy czym tylko Firefox na Windows obsługuje WebVR, w pozostałych przeglądarkach dostaniemy ostrzeżenie „Your browser is not fully compatible with Amazon Sumerian” które można zignorować jeśli nie korzystamy z VR.

Kobieta czyta odpowiednio otagowany gestami tekst:

<speak>I can gesture while I speak. Some of my available gestures are:
<mark name="gesture:generic_a"/>generic a<break time="1500ms"/>,
<mark name="gesture:generic_b"/>generic b<break time="1500ms"/>,
<mark name="gesture:generic_c"/>generic c<break time="1500ms"/>,
<mark name="gesture:defense"/>defense<break time="2500ms"/>,
<mark name="gesture:wave"/>wave<break time="1500ms"/>,
<mark name="gesture:you"/>you<break time="2500ms"/>,
<mark name="gesture:many"/>many<break time="2500ms"/>,
<mark name="gesture:aggressive"/>aggressive<break time="1500ms"/>,
<mark name="gesture:in"/>in<break time="2500ms"/>,
<mark name="gesture:big"/>big<break time="4000ms"/>,
<mark name="gesture:one"/>one<break time="2500ms"/>,
<mark name="gesture:movement"/>movement<break time="3500ms"/>,
<mark name="gesture:heart"/>heart<break time="2000ms"/>, and
<mark name="gesture:self"/>self.<break time="1500ms"/></speak>

Host zawsze patrzy na rozmówcę, scenę można obracać (wciśnięty prawy klawisz myszki podczas ruszania, albo lewy i SHIFT).



Kolejna aplikacja (proszę kliknąć zdjęcie niżej) to przykład chatbota do zamawiania hotelu lub wypożyczania samochodu. Trzeba zgodzić się na udostępnienie swojego mikrofonu. Żeby mówić przyciskamy SPACJĘ i zwalniamy klawisz gdy skończymy mówić.

Rozmowę zaczynamy tak:

Zamawianie hotelu:

  "Book a hotel"
  "I want to make hotel reservations"
  "Book a {Nights} stay in {Location}"

Zamawianie samochodu:

  "Book a car"
  "Reserve a car"
  "Make a car reservation"

Bot jest realizowany przez usługę AWS Amazon Lex. Z kolei zamiana tekstu na mowę to usługa Amazon Polly.

Tags: , , ,
Napisany w AWS, Cloud computing, HTML5, Nowoczesne przeglądarki WWW, Wizualizacja, WWW | Brak komentarzy »

Software Galaxies

Autor: Piotr Karpiuk o poniedziałek 17. Grudzień 2018

Interaktywna wizualizacja pakietów języka Go i powiązań między nimi, przypominająca podróż przez galaktykę. Bardzo dobry przykład jak za pomocą WebGL można osiągnąć w przeglądarce przyzwoitą wydajność. Poruszamy się za pomocą klawiatury (klawisze W,Q,E,S,D,A, strzałki, Shift) – miłośnicy gier na pewno szybko się odnajdą. Zdecydowanie polecam pełny ekran. Dostępne są też wizualizacje repozytoriów pakietów innych języków programowania.

Napisany w HTML5, Nowoczesne przeglądarki WWW, Wizualizacja | Brak komentarzy »

Wizualizacja grafów

Autor: Piotr Karpiuk o piątek 30. Listopad 2018

Pojawia się coraz więcej bibliotek JavaScriptu do wizualizacji grafów. Moją szczególną uwagę przykuły dwie z nich: 3d-force-graph (patrz interaktywna ilustracja obok, ewentualnie na pełnym ekranie) oraz force-graph renderujące grafy odpowiednio w 3D i 2D. W przypadku 3D wykorzystywane jest wspomaganie sprzętowe (GPU) co wspaniale przekłada się na wydajność i pozytywne wrażenia użytkownika.

Listę innych wartych spojrzenia bibliotek znajdziemy na stronie github.com/anvaka/graph-drawing-libraries. Spodobała mi się też biblioteka viz-js (javascriptowa wersja kultowego GraphViz firmy AT&T Labs), a także WebCola.

Napisany w datavis, HTML5, Nowoczesne przeglądarki WWW, Wizualizacja, WWW | Brak komentarzy »

Kreatywność sztucznej inteligencji

Autor: Piotr Karpiuk o wtorek 30. Październik 2018

Serwis Ostagram przy pomocy sztucznej inteligencji miksuje dwa wskazane obrazy tworząc trzeci. O tym że potrafi zrobić to nad wyraz kreatywnie, świadczy bogata Galeria.

Napisany w Machine Learning, Wizualizacja | Brak komentarzy »